MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。利用MScomm控件实现串口通信是五种labview串口通信技术中最高效的一种。本文介绍基于MScomm控件开发的LabView串口通信程序。 一、MScomm控件注册 使用MSCOMM控件前需要在电脑上完成MScomm注册,注册一旦完成后将一劳永逸。注册步骤如下: 1. 下载MScomm控件。 2. 解压下载文件后将Mscomm.srg, Mscomm32.ocx,Mscomm32.dep三个文件复制到系统文件夹system32中(如C:windowssystem32)。 3. 用Windows下的注册工具regsvr32注册该控件,点击“开始”->"运行",打开dos界面后输入:Regsvr32 C:windowssystem32Mscomm32.ocx,进行注册,结束时会提示注册成功(win7要管理员身份打开)。 4. 修改注册表:点击“开始”->"运行",填入regedit命令打开注册表,找到HKEY_CLASSES_ROOT目录下的Licenses,在其中添加一个主值:4250E830-6AC2-11cf-8ADB-00AA00C00905 并将内容设置为: kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun (点击鼠标右键来创建)。 二、LabView串口通信主程序设计 图1是编写的串口通信主程序前面板。前面板左上角的电话机符号是在电脑注册了MScomm控件,并且在LabView中调用了相应的ActiveX控件后才会出现。电话机符号下面的二个方框定义了串口通信参数。在中间一列的第一个方框表示送到数字引脚的开关量,第二个方框表示送到模拟引脚(PWN)的数值。点按“Read & Write”按钮,二个方框中的数据被送至串口被下位机接收。同时电脑从串口读取下位机发送的数据,将接收的数据整理后显示在右列的二个方框中。右列第一个方框表示接收到的数字引脚信号,第二个方框中的数值表示接收到的模拟引脚信号。 图2是分步骤列出的程序框图。(a)初始化部分列出了调用控件的初始化部分,建立起程序与串口的通信联系。(b)等待按钮事件部分在接收到“Read & Write”按钮信号后,先执行(c)把digitalWrite和analogWrite中的数据送至串口部分,即将前面板中间二个方框中的数据发送到串口,然后执行(d)从串口读取数据部分,并通过Read子程序将读取到的数据整理后填入前面板右列的二个控件(digitalRead和analogRead)。等待按钮事件部分接收到“停止”按钮后执行程序结束部分,退出程序并关闭串口。 三、处理从串口读取数据的Read子程序 LabView串口通信主程序从串口读取数据后调用了图3所示的Read子程序,从串口读取到的数据作为Read子程序的输入,其格式参见图3(a)Read子程序前面板左边“输入字符串”方框。方框中从串口读取到的数据为“1,1,2S110000000000,282,281,277,276V”,其中S前的数据是主程序输出至串口后回读的数据(可用于校验串口读写是否正确),S与V之间的数据分成数字信号和模拟信号二部分。S与第一个逗号间的数据是数字信号,来自于数字引脚,1表示引脚高电平,0表示引脚低电平,引脚号按其顺序由Arduino程序确定(参见作者“Arduino开发板自动编程”一文)。逗号后的数值是模拟信号,来自于模拟引脚,引脚号及其顺序同样由Arduino程序确定。 从主程序框图中可以看到,程序首先取出字符串中S和V之间部分,然后分别处理数字信号和模拟信号,将字符串化成数值输出。数字信号输出至digitalRead控件,模拟信号输出至analogRead控件。 Read子程序对应着“Arduino开发板自动编程”推荐的输出格式,如果读者遇到的串口输出具有不同的输出格式,可以适当改造Read子程序加以解决。
|