串行通信控件 MSComm
在开发 PLC 与 PC 的串口通信程序时,需要使用 PC 编程软件的串口通信开发工具,如
VC++、C++builder 及 Delphi 的串行通信控件 MSComm 等。
MSComm 控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的 API 函数,
而且在 Visual C++、C++Builder 以及 Delphi 等语言中均可使用。
MSComm 控件提供了一系列标准通信命令的使用接口,使用它可以建立与串行端口的
连接,通过串行端口连接到其它通信设备(例如调制解调器),发出命令,交换数据,以
及监视和响应串行连接中发生的事件和错误。利用它可以进行诸如拨打电话、监视串行端
口的输入数据乃至创建功能完备的终端程序等。
一、MSComm 控件处理通信的方式
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
它提供下列两种处理通信的方式:
1.事件驱动方式
该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时, MSComm 控件
会产生 OnComm 事件,用户程序可以捕获该事件进行相应处理。它是处理串行端口交互作
用的一种非常有效的方法。在许多情况下,在事件发生时程序会希望得到通知,例如,在
串口接收缓冲区中有一个字符到达或一个变化发生时,程序都可以利用 MSComm 控件的
OnComm 事件捕获并处理这些通信事件;OnComm 事件还可以检查和处理通信错误。在程
序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。
在程序设计中,可以在 OnComm 事件处理函数中加入自己的处理代码,一旦事件发生
即可自动执行该段程序。这种方法的优点是程序响应及时,可靠性高。
2.查询方式¾
在程序的每个关键功能之后, 在用户程序中设计定时或不定时的查询 ,通过检查
CommEvent 属性的值来查询事件和错误,从而作出相应的处理。在进行简单应用程序设计
时可采用这种方法。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字
符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。
查询方式的进行可用计时器 Timer 或 Do…Loop 程序实现。查询方式实质上还是事件驱
动,但在有些情况下,这种方式显得更为便捷。
MSComm 控件也只有 1 个 OnComm 事件,用来向调用者通知有通信事件发生。
二、MSComm 控件的使用
1.Visual C++中 MSComm 控件的操作
在应用程序中插入 MSComm 控件后就可以较为方便地实现计算机串口收发数据。要使
用 ActiveX 控件 MSComm,程序员必须将其添加入工程,其方法是:
1)单击主菜单 Project 的子菜单 Add To project 的 Components and Controls 选项;
2 ) 在 弹 出 的 “ Components and Controls Gallery” 对 话 框 中 选 择 Registered ActiveX