欢迎来到天天文库
浏览记录
ID:40526661
大小:21.05 KB
页数:4页
时间:2019-08-04
《CSerial类与MSComm控件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、CSerialPort类支持多线程链接(非MODEM)的串口编程操作,其步骤如下:第一步:在**Dlg.h文件添加#include"SerialPort.h"(需先加入类头文件与源文件)第二步:添加成员变量CSerialPortserialPort;第三步:在初始化对话框函数中调用serialPort.InitPort,serialPort.StartMonitoring第四步:发送,serialPort.WriteToPort(buf);第五步:接收,在类的定义中,声明消息函数afx_msgLONGOnCommunication(UINT,LONG);在.cpp
2、文件中添加映射ON_MESSAGE(WM_COMM_RXCHAR,OnCommunication)并实现LONG**Dlg::OnCommunication(WPARAMch,LPARAMport)基于单文档的应用程序,则初始化在新增加的OnInitialUpdate()中添加代码。说明:由于OnCommunication(WPARAMch,LPARAMport)带参,所以其接收代码比MSComm控件的接收代码简单很多,不要涉及接收函数及其数据类型的转换。二、但对于MODEM控制,需要对类进行改写,采用MSComm控件比较理想。使用MSComm控件进行编程的基本步骤:
3、1)在建立的工程中加入MSComm控件;2)添加MSComm控件的ID关联变量(或者对象);3)对串口进行初始化,设置MSComm控件的属性(一般在OnInitDialog中);4)添加串口事件的消息处理函数OnComm(),在函数中根据应用需要,编写数据处理代码;(一般用于接收缓冲区里面的数据)5)编写串口发送等其他代码;(一般在按钮处理函数中实现)6)关闭串口。以上采用MSComm控件的是事件驱动方式,即通过函数OnComm()处理。主要属性, 均有Get/Set属性,同时有In就由Out对除了Create()成员函数之外。MSComm控件的常用属性MSComm控
4、件有很多重要的属性,但首先必须熟悉几个属性。CommPort设置并返回通讯端口号(打开端口之前必须设置)。 Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen设置并返回通讯端口的状态。也可以打开和关闭端口。 以上构建串口链接必须要。Input从接收缓冲区返回和删除字符。 Output向传输缓冲区写1、Set/GetCommPort属性设置并返回通讯端口号。语法object.CommPort[value](value一整型值,说明端口号。) 说明在设计时,value可以设置成从1到16的任何数(缺省值为1)。但是如果用PortO
5、pen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。注意:必须在打开端口之前设置CommPort属性。2、SetSettings属性:设置并返回波特率、奇偶校验、数据位、停止位参数。语法:object.Settings[=value]说明:当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。Value由四个设置值组成,有如下的格式:"BBBB,P,D,S"BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。value的缺省值是:"9600,N,8,1"3、Set/GetPortOpen属性:用于打开或关
6、闭串口,或者返回串口的开关状态语法:voidCMSComm::SetPortOpen(BOOLbNewValue)BOOLCMSComm::GetPortOpen()说明:bNewValue设为TRUE,则打开串口;设为FALSE,则关闭串口。编程时可以在程序中打开或关闭串口,当程序终止时,MSComm控件自动关闭串口。4、Set/GetInput/Output属性:从接受缓冲区中读取/接受数据/向发送缓冲区读出数据(注意数据类型转换)VARIANTCMSComm::GetInput()voidCMSComm::SetOutput(constVARIANT&newV
7、alue)返回数据类型为,该属性在串口没有打开时不能使用,在运行时为只读。5Set/GetRThreshold属性:在MSComm设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回的要接收的字符数。语法object.Rthreshold[=value](value整型表达式,说明在产生OnComm事件之前要接收的字符数。)说明当接收字符后,若Rthreshold属性设置为0(缺省值)则不产生OnComm事件。例如,设置Rthreshold为5,接收缓冲区收到每5个字符都会使MSComm控件产生OnComm事件。6、
此文档下载收益归作者所有