基于串口通信的控制系统设计
2016-09-23李志伟姚江敏
李志伟 姚江敏
摘 要:串口通信是计算机应用中最常用的通信方式之一。针对常用的系统控制和数据传输问题,研究了VB环境下通信连接和信号控制的基本原理,提出了利用单向信号传输,通过MSComm控件实现计算机系统控制的设计思想。实践应用表明,软件控制稳定、可靠,具有很强的扩展应用价值。
关键词:串口通信;计算机系统控制;MSComm控件;单向信号
中图分类号:TP274.2 文献标识码:A DOI:10.15913/j.cnki.kjycx.2016.16.102
在数据通信中,计算机系统之间的相互控制是计算机应用的常见方式之一。虽然现代网络技术、接口技术的飞速发展为数据通信提供了更加快捷、便利的途径,但是,由于串口通信具有硬件成本低、协议透明、编程简单等优点,所以,在计算机通信,尤其是数据采集、监视及控制等领域,仍然具有很大的应用潜力。
1 VB环境下的串口通信
1.1 串口通信
在VB环境中,利用串口可以实现计算机设备之间的相互通信。通常情况下,主要有2种通信方式:①利用Windows提供的API函数;②利用VB提供的MSComm控件。虽然前者实现方法简单,但设计过程相对复杂,工作量比较大,对程序员有较高的要求。尽管后者实现过程比较复杂,但由于微软对其处理过程进行了封装,并向用户提供了方便的接口,因此,使用操作比较简单,只需简单地嵌入就能完成复杂的串口通信任务,设计工作量比较小,效率较高,是程序设计比较理想的方法。
1.2 MSComm控件
MSComm是一种串行通信控件,它提供事件驱动和检查CommEvent属性两种处理通信的方式。在VB 6.0系统中,通过部件设置可以将该控件添加到工具箱中,以便在设计界面中引用,通过属性设置和操作实现串口数据的发送和接收。
在数据传输和控制应用中,MSComm控件常用的属性有以下几点:①CommPort,设置并返回通信端口号;②Settings, 以字符串的形式设置并返回波特率、奇偶校验、数据位和停止位;③PortOpen,设置并返回通信端口的状态——打开或关闭;④Input,从接收缓冲区返回并删除字符;⑤Output,向传输缓冲区写一个字符串。
2 串口通信的信号连接
在台式计算机后部面板上,通常有一两个串行通信接口,其外部形状为梯形公插头结构,根据插针的数量可以分为25针和9针2种。前者多见于早期的AT架构计算机。目前,ATX架构计算机的串口均采用9针接口,其结构如图1所示。
9针串口各引脚的功能分别为:载波检测(DCD)、接收数据(RXD)、发送数据(TXD)、数据终端准备好(DTR)、信号地(GND)、数据准备好(DSR)、发送请求(RTS)、发送清除(CTS)、振铃指示(RI)。
通常情况下,在计算机之间进行一般的数据传输时,如果没有特别要求,只要正确连接2,3,5引脚便可。其连接方法是:2台计算机对应串口的2,3引脚相互交叉,5引脚直接连通,具体如图2所示。
3 控制系统设计
3.1 设计方法
在设计控制系统时,可以通过串口实现计算机之间的相互控制,其具体方法是:①从市场上购买一对如图1所示的9针串口梯形母插头,按照图2所示的连接方法用信号线连接2个插头;②选择2台需要互联的计算机的空闲串口,用做好的串口连线连接;③选择其中一台计算机作为主控机,另一台作为被控机;④在主控机上安装并运行主控程序,选择连接的串行端口,由对应的串口向被控机发送控制指令;⑤在被控机上安装并运行被控程序,选择连接的串行端口,经由对应的串口等待并接收来自主控机的控制指令;⑥当被控机串口接收到主控机发来的控制指令后,根据预设的指令功能执行控制操作,实现系统控制。
3.2 主控端程序设计
假设需要通过主控机对被控机完成下列3项控制功能:打开媒体播放器、打开记事本、关闭计算机,则主控机的控制指令可以通过2台计算机的串口实现传递。因此,要先通过用户界面选择所使用的串行端口号,设计界面如图3所示。
为了实现串行通信的数据传输和端口控制,程序设计时需要在界面中添加一个MSComm控件,通过界面选择通信用“串口号”,通过“打开串口”按钮,打开对应的串行端口。设MSComm控件的实例名为MSComm1,选择的串口号为1,则相应的设置语句为:MSComm1.CommPort=1,MSComm1.PortOpen = True.
在图3所示的样例中,如果要“打开媒体播放器”,则点击相应的按钮,通过执行下列语句便可实现控制指令由主控机向被控机的发送:MSComm1.Output = "MediaPlayer".
3.3 被控端程序设计
被控端程序与主控端程序一样,运行时也要通过MSComm控件对端口进行初始化操作——选择端口、打开端口,然后定时检测对应串口的工作状态。
为了实现对端口状态的检测,需要增加一个定时器控件,定时检测相应串口是否有新的数据到达,以便及时处理。定时时间可根据用户需要设置。
设程序中添加的定时器控件实例名为Timer1,则相应的被控程序部分代码如下:
Private Sub Timer1_Timer()
Dim Input_Data As String
Input_Data = Trim(MSComm1.Input)
Select Case Input_Data
Case "MediaPlayer"
Shell " C:\Program Files\Windows Media Player\wmplayer. exe", vbNormalNoFocus
……
Case Else
Exit Sub
End Select
End Sub
在该程序运行的过程中,当接收到来自串口的一组数据时,系统便自动分析判断。如果是一条预设的控制指令,则执行对应的功能,否则不予处理。在本例中,如果接收到的是一个字符串“MediaPlayer”,则程序通过shell语句直接调用,并执行本机中的wmplayer.exe程序,打开媒体播放器。
3.4 控制测试
按照上述方法,用串行线连接好主控计算机和被控计算机相应的串口1端口,打开2台计算机,在主控计算机上运行测试程序,进入图3所示的控制界面,点击“打开串口”按钮。此时,便建立了2台计算机的通信连接。然后点击“打开媒体播放器”按钮,此时,在被控计算机上便可自动播放Windows系统自带的媒体播放程序。同样,在图3界面中点击“打开记事本”按钮,也可以迅速控制被控计算机运行记事本程序,实现预期的控制效果。
多次试验表明,该程序运行稳定、可靠,在远程控制系统设计中既简单又实用,具有较高的应用价值。
3.5 说明
采用串口通信实现计算机控制的关键是正确设置串口通信控件MSComm。在具体工作中,需要重点注意以下几个方面的问题:①根据控制信号的物理连接,正确选择并打开相应的串行端口。②针对不同的终端设备,采用控件的Settings属性正确设置数据传输的波特率、奇偶校验、数据位、停止位。在缺省的情况下,控件按默认参数自动设置。③当系统需要通过串口传输大量数据时,为了保证在缓冲区过载时数据不会丢失,需要通过控MSComm件的Handshaking属性设置相应的通信协议(即握手协议),通过控件的OnComm事件捕获并处理相关的通信事件,检查设备连接和通信是否正确,确保控制系统的稳定、可靠。此时,图2所示连接的串行线已经不能满足需要,还需要正确连接RTS、CTS、DSR、DTR等信号线。
4 结束语
由此实例可知,利用串口通信的数据传输功能可以方便地实现计算机之间的系统控制。由于该方法硬件连接简单,软件设计灵活,可靠性高,因此,将其应用于工业、家用电器、办公等自动化和嵌入式应用中,可以快速实现数据采集和设备控制,具有广阔的应用前景。
参考文献
[1]杜正杰,王卫锋.基于串口实现DCS数据的安全采集[J].测控技术,2014,33(3):45-48.
[2]刘建河,赵玉丹,张玉强.基于LABVIEW串口通信的电机控制技术[J].制造业自动化,2013,35(11):135-137.
[3]李志伟,铁跃焕,杨茂兴.基于串行指令的红外探测远程控制系统设计[J].计算机工程与设计,2014,35(4):1486-1490.
[4]黄斌.基于串口通信的电脑遥控系统设计[J].测控技术,2013,32(6):72-75.
作者简介:李志伟(1964—),男,河南宜阳人,副教授,CCF高级会员,主要研究方向为计算机及其在航空武器装备中的应用。
〔编辑:白洁〕