教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 利用VC中的通讯控件开发串形通信程序

利用VC中的通讯控件开发串形通信程序

上传者:网友
|
翻新时间:2013-12-18

利用VC中的通讯控件开发串形通信程序

利用VC中的通讯控件开发串形通信程序 利用VC中的通讯控件开发串形通信程序 信息技术论文 更新:2006-4-8 阅读: 利用VC中的通讯控件开发串形通信程序

利用VC中的通讯控件开发串形通信程序

杨峰

河南省水文水资源局

由于需要我们开发了前置机应用程序,实现功能就是将前置机里存放的信息取出来用计算机进行处理,该程序是利用VC在WIN98下开发而成,对串口的访问是通过VC中的通讯控件主要完成的。通讯程序开发不仅涉及对串口的访问,还牵涉多线程编程24小时运行等问题,是编程中令人头疼的问题。本文中只介绍利用控件对串口的访问。为了说明控件的应用,这里特编制两台计算机通过串口进行信息交换的小程序,来介绍通讯控件的具体运用。

1. 控件程序的实现

启动Microsoft 5.0,利用Appwizards建立一个新的基于对话框的project,选名commtest,其中第二步选择ActiveX Control选项,证明支持控件功能,其他都选择缺省,这样就建立了一个基于对话框的应用程序。

然后将通讯控件加入应用之中,在对话框资源上点击鼠标右键,选择Insert ActiveX Control然后在控件选择对话框中选择Microsoft Communictions Control,Version5.0,然后选择Insert插入一个类似电话机的控件,然后点击该控件就可以修改和设置控件特性。按Add to Project选项中Registered ActiveX Control选项然后在控件选择对话框中选择Microsoft Communictions Control,Version5.0,将通讯控件两个程序Mscomm.h和Mscomm.cpp加入project当中。这样就把通讯控件加入了应用程序当中,可以应用该控件进行编程了。

2.通讯控件的各属性的含义:

w10 属性

设定值

说明

ComPort

1

串口号

Settings

9600,n,8,1

串口的参数设置,依次为波特率、奇偶校验、数据位数、停止位数

InBufferSize

1024

接收缓冲区大小

InputLen

0

从接收缓冲区读取的字节数,0表示全部读取

InputMode

1

接收数据的类型,0表示文本类型,1表示二进制类型

OutBufferSize

1024

发送缓冲区大小

RThreshold

1

设定当接收几个字符时触发OnComm事件,0表示不产生事件,1表示每接收一个字符就产生一个事件

SThreshold

0

设定在触发OnComm事件前发送缓冲区内所允许的最少字符数,0表示发数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件

通讯控件的属性很多,这里只是介绍其中的几种,可以根据自己的需求选择加以设置调整,对于其他属性可以查看VC帮助和联机手册。

通讯控件的工作原理类似于中禵cf方式,当有通讯事件发生时(如发送数据、接收数据等),就会触发OnComm事件,在该事件的处理函数中调用GetCommEvent()函数,通过返回值即可确定是那类事件,再作出相应的处理。

3.VC通讯控件的数据类型和命令

对通讯控件来说,其所有的数綺dd类型和命令都在两个控件文件mscomm.h和mscomm.cpp两个文件当中,mscomm.h定义了控件类和各条命令的函数及所用的各参数,mscomm.cpp文件中有各命令函数的描述。

4.主程序的编制

在对话框中增加下面几个按钮:

发送数据编辑框

发送数据按钮;

接收数据编辑框

清除数据按钮;

通讯按钮;

首先我们为对话框中的控件添加对应的变量和响应函数a3具体做法如下表所示。

w10 控件名称

控件ID

对应变量

发送数据编辑框

IDC_SENDDATE

m_SendDate

发送按钮

IDC_SEND

OnSend()

清除按钮

IDC_CLEAR

OnClear()

接收数据编辑框

IDC_RECEIVEDATE

m_ReceiveData

通讯控件

IDC_MSCOMM

m_Comm

再打开ClassWizard,选中IDC_MSCOMM,可看到该控件能响应的消息为OnComm,添加改函数并将其改名为OnComm(),在该函数中添加代码,就能实现对串口事件的处理。其中一个需要注意的问题是函数GetInput()返回的是VARIANT型变量,而在编辑框中显示的是Cstring型变量,因此必须进行转换。先将VARIANT型变量转换为ColeSafeArray型变量,再将其转换为BYTE型数组,然后将数组转换为Cstring型变量。这个转换过程看起来比较复杂,但它可以满足用不同的变量类型来显示接收数据。该程序的主要代码添加在CommTestDlg.cpp中,如下所示:

void CcommTestDlg::OnSend()

{

it( !m_Comm.GetPortOpen() )

m_Comm.SetPortOpen(TRUE);//打开串口

UpdateData(TRUE);

m_Comm.SetOutput(ColeVariant(m_SendData));//发送数据

}

void CcommTestDlg::OnClear()

{

m_ReceiveData.Empty();//清除接收对话框中的数据

m_SendData.Empty();//清除发送对话框中的数据

UpdataData(FALSE);

}

void CcommTestDig::OnComm()

{

VARIANT m_input1;

ColeSafeArray m_input2;

Long length,i;

Cstring str;

if(m_Comm.GetCommEvent()= =

2)//接收缓冲区内有字符

{

m_input1=m_Comm.Getinput();//读取缓冲区内的数据

m_input2=m_input1;//将VARIANT型变量譥aa换为ColeSafeArray型 变量

length=m_input2.GetOneDimSize();//确定数据长度

for(i=0;i

m_input2.GetElement(&i,data+i);//将数据转换为BYTE型数组

for(i=0;i

{

char a=* (char *)(data+i);

str.Format(“%c”,a);

m_ReceiveData+=str;

}

}

UpdataData(FALSE);//更新编辑框内容

}

5.试验程序

作者: 杨峰 单位:河南省水文水资源局

邮政编码:450003 职称:工程师

电话:(0371)5951783 E-mail:yangf67@371.net

通讯地址:郑州市纬五路中段河南省水文水资源局水青9科

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

快乐中秋
雪中游戏
秋天到了
大有进步
昂首
游天柱山
字典也是老师
新编《宿新市徐公店》
校园里的小故事
猴园参观记
歪诗大战
难忘今宵
可爱的小白兔
地税工作谋划
县人防办工作总结及工作设想
社区工会工作目标
检察工作总体思路
治安工作谋划
争创优秀党员计划
乡镇工作安排
劳动局工作思路
争创星级党员计划
司法局工作要点
及早谋划工作
2012安全生产工作思路
公司党委工作安排
党员争创规划
镇政府办公室工作思路
对电视栏目片头制作的艺术性思考
气象探测环境和设施保护办法(1)论文
初探环境侵权中的新型公平关系(1)论文
论电视包装与电视节目的娱乐化
主持人与电视节目策划
论保险市场运行的非正式制度环境(1)论文
网络环境下著作权的保护(1)论文
大陆偶像剧的优化路径
我国建立存款保险制度的法律环境分析(1)论文
对电子商务合同的几点法律思考(1)论文
西方绘画体现形式对影视影响
论环境法的调整对象
寻求电视电影可持续发展战略
电视新闻的宣传艺术特征分析
电子商务对消费者权益保护挑战与对策(1)论文
《司马光》教学设计之一
《王二小》教学设计
《找春天》教学设计
《找春天》教学设计之二
《爷爷和小树》教学设计
《影子》教学设计
《小小的船》教学设计
《王二小》教学设计之二
《匆匆》教案及教学反思
《地球爷爷的手》
《我选我》教学设计
《我选我》教学设计之二
《回声》教学设计
《画》教学设计
《王二小》教学设计之三