分享

CMSComm控件串口编程

 涉水I 2011-03-03

MSComm控件进行串口编程步骤:

1.       在建立的程序工程中插入MSComm控件。

2.       添加MSComm控件ID 的控制变量(或者对象)。

3.       对串口进行初始化,设置MSComm控件的属性。

4.       添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码

5.       编写串口发送等其他代码。

6.       关闭串口。

 

 

+MSComm控件

 

常用属性:

1.CommPort:设置并返回通信端口号

2.Settings:   以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位

3.PortOpen:  设置并返回通信端口的状态。也可以打开和关闭端口

4.Input:     从接收缓冲区返回和删除字符

5.Output:    向传输缓冲区写一个字符

6.InputLen:  设置并返回Input属性从接收缓冲区读取的字符数。

7.InBufferSize:设置或返回输入缓冲区的大小。

8.OutBufferSize:设置或返回输入缓冲区的大小。

9.InBufferCount:    设置或返回输入缓冲区内等待读取的字节个数。

10.OutBufferCount:    设置或返回输入缓冲区内等待读取的字节个数。

 

 

对MSComm控件通过Get/Set函数对来获取或设置控件的属性,每个属性均有与之对应的Get/Set函数对。

 

用法 说明

1.CommPort:设置并返回通信端口号

Void CMSComm::SetCommPort(short n);  设置串口号

Short CMSComm::GetCommPort();       查询当前串口号

说明:n可以设置成1到16中的任何数(缺省值为1)。但是,如果用PortOpen属性打开一个并不存在的端口是,MSComm控件会产生错误68(设备无效);

必须在打开端口之前设置CommPort属性。

 

2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位

Void CMSComm::SetSettings(LPCTSTR lpszNewValue);

CString CMSComm::GetSettings();

说明:当端口打开时,如果设置值lpszNewValue非法,则MSComm控件产生错误380(非法属性值)。

Value 由四个设置值组成,有如下格式:“BBBB,P,D,S”

BBBB:波特率   P: 奇偶校验,D:数据位数,S:停止位数

Value的缺省值:“9600,N,8,1”。

 

3.PortOpen: 用于打开或关闭串口,或者返回串口的开、关状态

Void CMSComm::SetPortOpen(BOOL  bNewValue);

BOOL  CMSComm::GetPortOpen();

说明:bNewValue值设置为TRUE,则打开串口;bNewValue值设置为FALSE,则关闭串口。编程时可以再程序中打开或关闭串口,当程序终止,MSComm控件自动关闭串口。

 

4.InPut: 从接收缓冲区内读出数据

VARIANT CMSComm::GetInPut();

说明:返回数据类型为VARIANT型变量,该属性在串口没有打开时不能用,在运行时是只读的。

InPutMode=0时(检取数据为文本方式),变量中含String型数据。

InPutMode=1时(检取数据位二进制方式),变量中含Byte型数据。

 

5.OutPut:向发送缓冲区写数据,或返回发送缓冲区当前的数据

Void CMSComm::SetOutPut(const VARIANT&  newValue);

VARIANT CMSComm::GetOutPort();

说明:变量类型为VARIANT,该属性在串口未打开时不可用。OutPut可以发送文本或二进制数据,当发送文本类型数据时,将字符型数据放入VARIANT型变量中;发送二进制数据时(按字节发送),将字节型数据放入VARIANT型变量中。若数据中包含了内嵌控制字符。空字符等,必须将其作为二进制数据发送。

 

6.InputLen:设置并返回Input属性从接收缓冲区读取的字符数。

Void CMSComm::SetInputLen(short  nNewValue);

Short CMSComm::GetInputLen();

说明:InputLen属性的缺省值是0.设置InputLen为0时,使用Input将使MSComm控件读取接收缓冲区中全部的内容。

若接受缓冲区中InputLen字符无效,Input属性返回一个零长度字符串(“”)。在使用Input前,用户可以选择检查InBufferCount来确定缓冲区中是否已有需要数目的字符。该属性在从输出格式为定长数据的机器读取数据时非常有用。

 

7.InBufferSize:设置或返回输入缓冲区的大小。

VoidCMSComm::SetInBufferSize(short nNewValue);

Short CMSComm::GetInBufferSize();

说明:设置值的缺省值(默认值大小为1024字节(byte))。

 

8.OutBufferSize:    设置或返回发送缓冲区内的大小。

VoidCMSComm::SetOutBufferSize(short nNewValue);

Short CMSComm::GetOutBufferSize();

说明:设置值的缺省值,默认值大小为512字节(byte),此值太小,缓冲区数据易溢出,太大会占不必要的内存。

 

9.InBufferCount:    设置或返回输入缓冲区内等待读取的字节个数。

Void CMSComm::SetInBufferCount(short  nNewValue);

Short CMSComm::GetInBufferCount();

说明:当设置InBufferCount属性值为0时,可以清空接收缓冲区。

 

10.OutBufferCount:    设置或返回输入缓冲区内等待读取的字节个数。

Void CMSComm::SetOutBufferCount(short  nNewValue);

Short CMSComm::GetOutBufferCount();

说明:当设置InBufferCount属性值为0时,可以清空发送缓冲区

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多