将传送字符按照上述说明组合起来之后,就形成了传输时每个字符的数据格式,串行通信字符的数据格式如下所示:起始位+传送字符+校验位+停止位。
3.4 实现串行通信的方法
在Visual Studio.NET中编写串口通信程序,一般都使用Microsoft Communication Control(MSComm)的通信控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通信。但在Microsoft.NET技术广泛应用的今天,Visual Studio.NET没有将此控件加入控件库,所以有三种方法在Visual Studio.NET中编写串口通信程序:第一种方法是通过采用原来的MSComm控件,这是最简单,最方便的方法,但需要注册(可以通过安装VB6.0或VC++6.0开实现);第二种方法是采用微软在.NET中推出的一个串口控件SerialPort,方便地实现所有需要串口通信的多种功能;第三种方法是用API函数进行串口通信,虽然难度高,但可以方便实现自己想要的各种功能。
MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,为应用程序提供了通过串行接口收发数据的简便方法。每个MSComm控件对应着一个串行端口,如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。MSComm控件在串口编程时是非常方便,程序员不必花时间去了解较为复杂的API函数,而且在VB、VC++、C++Builder、Delphi等语言中均可使用。MSComm提供了两种处理通信问题的方式:事件驱动(Event-driven)方式和查询(Enquiry)方式。事件驱动通信是处理串行端口交互作用的一种非常有效的方法,在事件发生时通过发送系统消息通知相关对象。查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查ConmEvent属性值来查询事件和错误。查询法适合于较小的应用程序,在这种情况下,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent属性以检查执行结果或者检查某一事件是否发生。如果应用程序较小,并且是自保持的,这种通信方式更为可取。
Windows API (Application Programming Interface API)实际上就是Microsoft Windows 平台的应用程序编程接口,它为操作系统上运行的应用程序提供了各种服务,并且屏蔽了操作系统底层的细节,为硬件和上层应用程序提供了广泛的驱动和支持。针对串口通信,Windows API中也提供了一系列的库函数,可以直接调用这些API函数来进行串行通信端口的驱动。虽然串行通信端口属于硬件,但在Windows环境下是把这个系统资源当成文件来进行操作的,因此打开串行端口时,就必须像打开文件一样向系统申请资源,使用完串行端口之后,还必须使用关闭文件的函数将串行端口关闭,并释放所占用的系统资源。Windows API 是由操作系统所提供的函数,这些函数可以为程序设计人员提供相当多的执行功能,不管使用的是哪一种的快速开发工具,最后的一个阶段还是会调用到API,由API执行操作。使用API函数必须依从API函数的定义和应用,才能得到正确的结果,尤其参数的定义更是重要,一般的API使用的定义是C 语言的定义方式,使用时要注意的是定义相符,否则执行结果将会出错。利用API函数实现串行通信的编程方法功能强大,灵活性好,应用广泛,但程序设计上比较复杂,需要编程人员对串口的硬件工作原理有比较深入的了解。
此辐射报警仪上位机管理软件使用了第二种方法SerialPort控件来实现串口通信。
3.4.1 SerialPort类
.NET Framework 4.0类库提供了对串口通信功能的支持,使用其中的SerialPort类可以方便的实现所需要串口通信的多种功能。通过创建一个新的SerialPort对象,我们就可以在.NET程序中控制串口通信的全过程。根据系统具体功能需要,使用SerialPort类编写串口通信接口程序能够弥补MSComm组件的不足,赋予了串行通信程序设计较大的灵活性。
- 上一篇:双谱图像配准技术研究+powell算法
- 下一篇:基于DSP的雷达恒虚警检测技术研究
-
-
-
-
-
-
-
中考体育项目与体育教学合理结合的研究
乳业同业并购式全产业链...
河岸冲刷和泥沙淤积的监测国内外研究现状
当代大学生慈善意识研究+文献综述
十二层带中心支撑钢结构...
杂拟谷盗体内共生菌沃尔...
酸性水汽提装置总汽提塔设计+CAD图纸
大众媒体对公共政策制定的影响
java+mysql车辆管理系统的设计+源代码
电站锅炉暖风器设计任务书