《VC语言6.0程序设计从入门到精通》第120章


·321 ·
…………………………………………………………Page 333……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
11。5 利用 MSm 控件进行串口编程
计算机串口编程在网络通信中也有着十分广泛的应用,比如电话、传真、视频控制等。 
本节将介绍如何在 Visual C++ 中利用 MSm 控件进行串口编程。
11。5。1 MSm 控件介绍
1.MSm 控件处理通信的方式
MSm 控件为应用程序提供了读写串口功能,它提供了两种处理通信的方法。
o 事件驱动方式 。在这种情况下,使用 MSm 控件的 Onm 事件可以捕获和处理 
这些通信事件。同时,Onm 也可以捕获和处理通信中的错误。
o 查询方式。用户可以在每个重要的程序功能之后检查 mEvent 属性的值来检测事 
件和通信错误。在通信频繁的情况下,这种方式更为方便。
2 .MSm 控件常用属性
(1)mPort 属性
该属性用于设置或返回通信端口号,端口号的范围是 1~16,默认为 1。对应的函数为 
void SetmPort(short nNewValue)和 short GetmPort() 。
(2 )Settings 属性
该属性用于设置或返回数据传输率、奇偶校验、数据位和停止位参数,其属性值格式为 
“BBBB;P;D;S ”。
其中 BBBB 为数据传输率,P 为奇偶校验,D 为数据位,S 为停止位。默认值为 
9600;N;8;1 ”。
“ 
该属性对应的函数为 void SetSettings(LPCTSTR lpszNewValue)和 String GetSettings()。
(3 )PortOpen 属性
该属性用于设置或返回串口状态,值为 TRUE 时打开,值为 FALSE 时关闭。如果要打 
开端口,则必须现设置 mPort 属性。
该属性对应的函数为 void SetPortOpen(BOOL bNewValue)和 BOOL GetPortOpen() 。
(4 )Input 属性
该属性用于从接收缓冲区中读取数据,其对应的函数为 VARIANT GetInput() 。
(5 )InputMode 属性
该属性用于设置或返回从接收缓冲区读取数据的格式,属性值为 0 时表示以文本格式读 
取数据;属性之为 1 时表示以二进制格式读取数据;属性值为 2 时表示以十六进制格式读取 
数据。
该属性对应的函数分别为 void SetInputMode(long nNewValue)和 long GetInputMode() 。
(6 )InBufferCount 属性
该属性用于设置或返回在接收缓冲区中等待的字符数,该属性在端口未打开时不可用。 
·322 ·
…………………………………………………………Page 334……………………………………………………………
第 11 章 网络编程
对应的函数为 void SetInBufferCount(short nNewValue)和 short GetInBufferCount() 。
(7 )InBufferSize 属性
该 属 性 用 于 设 置 或 返 回 接 收 缓 冲 区 大 小 的 字 节 数 , 其 对 应 的 函 数 分 别 为 void
SetInBufferSize(short nNewValue)和 short GetInBufferSize() 。
(8)Output 属性
该属性用于向发送缓冲区中写入数据,其对应的函数为 void SetOutput(const VARIANT&
newValue) 。
(9 )OutBufferCount 属性
该属性用于设置或返回在发送缓冲区中等待的字符数,该属性在端口未打开时不可用。 
其对应的函数分别为 void SetOutBufferCount(short nNewValue)和 short GetOutBufferCount() 。
(10)OutBufferSize 属性
该 属 性 用 于 设 置 或 返 回 发 送 缓 冲 区 的 字 节 大 小 , 对 应 的 函 数 分 别 为 void
SetOutBufferSize(short nNewValue)和 short GetOutBufferSize() 。
(11)mEvent 属性
该属性用于设置或返回串口事件,其对应的函数分别为 void SetmEvent(short
nNewValue)和 short GetmEvent() 。常见的串口事件如表 11…13 所示。
表 11…13 常见串口事件
常数 取值 描述
EvSend 1 发送事件
EvReceive 2 接收事件
EvCTS 3 clear…to…send 线的状态发生变化
EvDSR 4 data…set ready 线的状态发生变化
EvCD 5 carrier detect 线的状态发生变化
EvRing 6 检测到震铃信号
EvEOF 7 收到文件结束字符
(12)RThreshold 属性
该属性用于设置或返回 RThreshold 数值,所谓 RThreshold 数值是通过 MSm 控件将 
mEvent 属性设置为 EvReceive,并在产生 Onm 事件之前所接收的字符数。
该属性对应的函数为 void SetRThreshold(short nNewValue)和 short GetRThreshold() 。
11。5。2 利用 MSm 控件编程的基本流程
利用 MSm 控件编程的基本流程如下。
o 在当前 Project 中插入 MSm 控件;
o 初始化并打开串口;
o 捕捉串口事项;
o 串口读写;
o 关闭串口。
·323 ·
…………………………………………………………Page 335……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
11。5。3 利用 MSm 进行串口通信
实例 11…2:MSm 控件使用实例。源代码在光盘中“11实例 11…2MSm”目录下。
本节通过编写一个小程序来实现利用 MSm 控件进行串口数据传输。
新建一个基于对话框的 MFC 工程,取名为 MSm 。依次单击菜单栏的“Project ”→ 
“Add To Project ”→“ponents and Controls ”,弹出添加控件对话框,如图 11…16 所示。然 
后打开“Registered ActiveX Controls ”文件夹,选中“Microsoft munications Control ,vision
6。0 ”控件,将其添加到工程中,如图 11…17 所示。
图 11…16 添加控件对话框 图 11…17 加入 MSm 控件
然后编辑对话框界面,完成后的效果如图 11…18 所示(本例中,用于选择串口的控件为 
bo Box 控件,在为对话框添加 bo Box 控件的时候,需要为该 bo Box 控件加入 
1 和 2 两个数据,分别表示串口 1 和串口 2 ),其中控件 就是 MSm 控件。
注意:在为 bo Box 控件添加数据的时候,如果数据多于一个,则在添加后面数据的时候,要 
按住 Ctrl 键,同时按回车键进行换行,而不是直接用回车键进行换行。
图 11…18 对话框界面
为对话框添加完
小说推荐
返回首页返回目录