C#下串口通信编程的开发和扩展

2014-07-25 07:44朱英翔朱福民刘炎鸣
网络安全与数据管理 2014年6期
关键词:折线图柱状图控件

朱英翔,朱福民,刘炎鸣

(上海海事大学 物流工程学院,上海201306)

在工业现场进行作业和实验时,需要对一些工业设备的状态进行监测。为了方便快速搭建检测平台、达到灵活操作的目的,可以采用带微控制器的传感器采集所需要的状态信息,通过串口直接把这些信息传送给个人电脑,然后在电脑上编程接收处理数据。

目前,大多数微控制器芯片(如8051系列单片机)都支持串口的输入输出[1-2],本文研究使用个人电脑外接USB转串口线来接收信息,通过C#编程,运用电脑做上位机来完成采集分析记录工作。近年来,C#编程已经帮助企业解决了很多工业问题,同时在串口通信领域也有很好的应用前景。

1 Visual Studio数据串口通信

串口是一种比较简单的通信形式。介绍通过Visual Studio 2010的C#进行编程使得PC能接收串口发来的信息。

C#是一种强劲的编程语言[3],且 Visual Studio也封装了串口收发的模块,这易于实现串口数据采集和处理。这里运用C#创建Windows窗体应用程序,首先在窗体加载时触发串口的读取功能,遍历电脑的每一个串口。在窗体应用程序的combobox预设一系列与串口通信有关的参数,根据所连接的单片机来预先选择正确的参数,通过Button的click属性来读取这些参数打开新的串口连接。随后串口数据送入电脑虚拟的缓存区,完成数据读取工作。

2 数据的图表显示

在接收到串口数据之后,还要对串口读入的字节串进行分析判断,这里需要运用C#的控制流来分析字节串的内容,分离出自己需要的字节,再对应各种传感器的信号值与实际监测值的关系单位化后得到实际的工业信息。为了能建立操作指导控制系统[4],方便监测人员更加直观地观测工业设备的状态变化,本文通过C#编程实现数据图表的绘制。在Visual Studio中调用其中的graphic类来操作,通过实例化graphic类,采用画直线的方式建立数据实时的折线图和柱状图。

(1)折线图的画法

在picturebox控件中,以次数为横坐标,单位化后的数据为纵坐标不断生成点,依次画直线连接前后生成的两点,待画满图框后自动清屏,实现数据的折线图显示。图1为用该方法记录某次加速度数据的效果。

图1 折线图演示效果

(2)柱状图的画法

在picturebox控件中,以采集数据的序号确立横坐标,单位化后的数据为纵坐标,采取在该坐标点至picturebox底部画粗线,该点至picturebox顶部画与picturebox背景色相同的粗线的方式来刷新柱状图数据。这种图像化的显示可以为工业现场进行直观、多维的指导操作。图2为用该方法画某次加速度数据的效果。

图2 柱状图演示效果

3 数据报警

一般地,采集的数据值都有一个安全范围,超出了安全范围就会不利于设备的正常使用,所以要采取报警机制来提醒现场人员。这里通过Visual Studio自带的控件——声音控件,用if语句判断,如果在数据值设定的阈值范围外就触发报警音乐。使用PC自带的扬声器发出警报声。

4 数据采集记录

数据的采集和记录是分析数据必不可少的过程。通过串口采集来的数据,往往刷新率不会很高,最大的波特率为115 200。正因为这样,使用Visual Studio开发编程,在PC上就能实现串口数据的采集记录。

一般地,C#开发人员会优先想到使用文件流来导出数据,但是为了数据查看简便,还有利于将来分析,本文采用连接office办公自动化软件中的 Excel[5],因为Excel表格直观,且后续有分析计算的功能。在Visual Studio 2010.net框架下C#编程是完全可以来自动化Excel 2007表格。

首先要在项目中添加引用Microsoft Excel 12.0 object library,这样就可以调出Excel类。

在程序开启时就加载Excel应用,创建配置Excel选项:

利用C#的try…catch语句预先在读取数据的代码段中设立好向Excel单元格内填数据的语句。当需要记录时通过button控件触发创建新的Excel文档,这样即执行try{}中的语句往单元格记录数据:

更改单元格坐标就不断继续向Excel里填充由串口接收的数据。

通过简单设置名为excel和save的两个button控件就可实现建立Excel表格填充数据和触发保存Excel文档的功能。图3是某次加速度数据采集时生成的Excel文档。

图3 C#串口采集生成的Excel 2007文档

利用开发效率高的Visual Studio来编写上位机程序,在串口数据采集处理方面有着很好的优势,它简化了开发负担,简化了设备。便于一般工程系统的数据采集和处理。

[1]童长飞.C8051F系列单片机开发与C语言编程[M].北京:北京航空航天大学出版社,2005.

[2]张毅刚,彭喜元.单片机原理及接口技术[M].北京:人民邮电出版社,2008.

[3]STELLMAN A,GREENE J.Head First C# 中文版[M].林琪,译.北京:中国电力出版社,2010.

[4]潘新民,王燕芳.微型计算机控制技术[M].北京:人民邮电出版社,1999.

[5]微软.C#app automates Excel[CP/OL].[2012-3-2].http://code.msdn.microsoft.com/CSAutomateExcel-7f89a439.

猜你喜欢
折线图柱状图控件
基于Unity3D 的冒泡排序算法动态可视化设计及实现
基于.net的用户定义验证控件的应用分析
数据增加折线图自动延长
关于.net控件数组的探讨
让折线图显示在一个单元格中
再多也不乱 制作按需显示的折线图
高中地理图像图表题解析技巧之管窥
美化Excel折线图表
由科研论文中一个柱状图引发的编辑思考
基于Android平台的柱状图组件的设计实现