1 引言
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
串行通迅较之并行通讯,虽然技术相对复杂一点,但其成本低、操作方便、可靠性高、传输距离长的特点使其应用广泛。它实现了计算机与外部串行设备(如打印机、CRT终端设备、传真机以及远程数据采集设备等)之间的数据传输。利用VC中的MSComm控件可以快速方便的开发出具有个性化的通信软件以满足不同的要求。该应用程序支持常用的300~115200bps波特率,能设置校验、数据位和停止位,能接收或发送二进制,十六进制数据或字符,可以任意设定自动发送周期等,使用非常方便。WWW_P※LCJS_CO※M-PLC-技-.术_网
2 基于VC的串口通信实现途径
WWW_P※LCJS_COM-PLC-)技.术_网
Visual C++(version 6.0)的功能十分强大,提供了多种方法来实现计算机间的串口通迅。P.L.C.技.术.网——可编程控制器技术门户
2.1 标准通信函数编程WWW_P※LCJS_CO※M-PLC-技-.术_网
VC++中的标准通信函数_inp、_inpw、_inpd、_outp、_outpw、_outpd等,可以对串口进行操作,对UART内部寄存器进行读出或写入操作。函数使用较为简单,但串口通迅设置比较复杂,需对硬件电路的结构工作原理十分熟悉,才能进行通信。WWW_P※LCJS_COM-PLC-)技.术_网
2.2 Windows通信APIWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
通信API是Windows的32位应用程序编程接口,是一系列很复杂的函数,消息和结构,是Windows的一种通信机制。Windows API不用对计算机硬件进行操作,使用范围较广。但其函数体庞大、结构复杂,实际编译完成后的程序不易阅读、继承性差。使用者同时需要对Windows的结构体系具有一定的认识,有基础的专业人员才能熟练进行编程。 plcjs.技.术_网
2.3 面向对象编程设计WWW_PLCJS_COM-PLC-技.术_网
VC可以调用专门用于串行通信的串口类,可以根据对象的不同进行功能定做,并可由该类派生出具有特殊功能的类。但串口类只完成对底层串口通讯的封装,在使用的时候仍然要进行大量的编程完善,使用并不便捷。WWW_PLCJS_COM-PLC-技.术_网
2.4 调用Active 控件(MSComm)W1WW_P4LCJS_COM-PLC-技.术_网
MSComm(Microsoft Communication control)控件是Microsoft公司提供的简化Windows下串行接口收发数据的简便方法。它包装了类的成员函数可以访问组件接口的属性,形成接口类,提供了一系列标准通讯命令的使用接口,不需要对硬件进行操作,参数属性设置便捷。 MSComm控件在多种开发平台中都可方便调用,运行稳定,串口通迅操作相当简便。WW.W_PLCJS_COM-PLC-技.术_网
3 通讯程序的开发
WWW_PLCJS_COM-PLC-技.术_网
3.1 在vc中新建工程并添加控件WWW.PLCJS.COM——可编程控制器技术门户
如图1所示:WWcW_PLCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
3.2 MSComm处理数据的方法—事件驱动法:WWW_PL※CJS_COM-PLC-技.术_网
MSComm处理数据是通过检查MSComm控件的CommEvent属性的值来判断所发生的事件或者错误。当有事件或错误发生的时候,事件OnComm由MSComm控件解发,被执行程序捕捉后,依据CommEvent属性的值,系统就可以知道如端口状态改变,新字符到达,发生错误等所发生的事件。通常所说的查询法,同样是通过检查CommEvent属性的值来确定事件和发生的错误。只不过后者是在执行一段程序,经过一定时间后才检查CommEvent属性的值从而做出响应,而前者是即时查阅即时处理,二者只是程序设计上的不同无本质区别。事件驱动法的优点是程序响应及时、可靠性高、应用广泛。W1WW_P4LCJS_COM-PLC-技.术_网
3.3 MSComm控件属性:P.L.C.技.术.网——可编程控制器技术门户
该控件有很多属性,可通过它的属性窗口或程序进行设置。WWW_PLCJS_COM-PLC-技.术_网
CommPort:设置串口号,类型 short:1-comm1 2-comm2;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
Settings:设置串口通讯参数,类型CString;WWW_P※LCJS_COM-PLC-)技.术_网
PortOpen:设置或返回串口状态,类型BOOL:TURE-打开FALSE-关闭;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
InputMode:设置从接收缓冲区读取数据的格式,类型 long:0-文本1-二进制; WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Input:从接收缓冲区读取数据类型VARIANT;WWW_PLC※JS_COM-PmLC-技.术_网
InBufferSize:接收缓冲区的大小,类型:short;WWW_PLCJS_COM-PLC-技.术_网
Output:向发送缓冲区写入数据,类型:VARIANT;WW.W_PLCJS_COM-PLC-技.术_网
OutBufferSize:发送缓冲区的大小,类型:short;WWW_PLC※JS_COM-PmLC-技.术_网
CommEvent:串口事件,类型:short;WW.W_PLCJS_COM-PLC-技.术_网
RThreshold:设置并返回的要接收的字符数,类型: short;W1WW_P4LCJS_COM-PLC-技.术_网
SThreshold:设置并返回传输缓冲区中允许的最小字符数,类型:short。WWW_PLCJS@_COM%-PLC-技.术_网
3.4 主程序设计WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
程序的流程如图2和图3所示:WW.W_PLCJS_COM-PLC-技.术_网
WW.W_PLC※JS_C,OM-PL,C-技.术_网