在VC++6.0中利用串行通信控件

在VC++6.0中利用串行通信控件

ID:40639860

大小:76.50 KB

页数:4页

时间:2019-08-05

在VC++6.0中利用串行通信控件_第1页
在VC++6.0中利用串行通信控件_第2页
在VC++6.0中利用串行通信控件_第3页
在VC++6.0中利用串行通信控件_第4页
资源描述:

《在VC++6.0中利用串行通信控件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在VC++6.0中利用串行通信控件崔杰梁计春王国军目前,在用计算机进行数据传输时,常用的是串行通信方式。在VisualC++的编程中,既可以用WindowsAPI函数进行串行通信编程,也可以利用环境自带的控件进行编程。利用API函数编写实际应用程序时,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较复杂,继承性差,维护困难。但是使用串行通信控件就相对简单一些,而且功能强大,性能安全可靠。本文以MicrosoftCommunicationsControl(version6.0)为例,介绍串行通信控件在VC++中的使用方法。嵌入通信控件使用串行通

2、信控件前,首先要进行系统注册。1、在建立新工程时,将ActiveXControls复选框选中,表示本程序支持ActiveX控件。2、单击Project菜单,从中选择AddtoProject,在弹出的对话框中单击ComponentsandControls选项,然后在弹出的对话框中再单击RegisteredActiveXControls选项。3、在列表中选择MicrosoftCommunicationsControl(version6.0),形状为带有红色底座的黄色电话机。单击Insert按钮,确认后,会出现一个ConfirmClasses对话框,其中列出了该控件

3、的类名(CMSComm)、头文件名(MSComm.h)、执行文件名(MSComm.cpp)。关闭此对话框,在程序主界面的控件列表中,可以看到该通信控件已被加入,拖动该控件就可以将其放入程序中。编写通信程序通信控件的工作原理类似于中断方式,当有通信事件发生时,如发送、接收数据,就会触发OnComm事件。在OnComm事件的处理函数中调用GetCommEvent()函数,由该函数的返回值即可确定是什么类型的事件,并由此做出相应的处理。下面以接收处理串口的GPS信号为例,说明该控件在编程中的具体应用。利用MFC生成一个基于对话框的应用程序,对话框中的控件及其相应的消

4、息与响应函数如下表所示。控件名称控件ID对应变量通信控件IDC_MSCOMMm_Comm接收按钮IDC_BUTTON_RECEIVEGPSDATAOnbuttonStartreceivegps()GPS信号显示IDC_EDIT_COMDATAm_comdata停止接收按钮IDC_BUTTON_ENDRECEIVEGPSDATAOnbuttonEndreceivegps()设置控件各部分属性:CommPort:1;DTREnable:1;InBufferSize:4096;EOFEnable:TRUE;Handshaking:nohandshaking;Inpu

5、tMode:1-Binary;NullDiscard:False;Rthreshold:250;RTSEnable:False;Settings:9600,n,8,1;Sthreshold:0。部分程序如下://开始接收GPS信号voidCGpsDlg::OnButtonStartreceivegps(){//判断串口的状态,如果是关闭状态,则打开if(!m_Comm.GetPortOpen())//打开串口m_Comm.SetPortOpen(TRUE);UpdateData(TRUE);}//停止接收GPS的信号voidCGpsDlg::OnButtonE

6、ndreceivegps();{//判断串口的状态,如果是打开状态,则关闭if(m_Comm.GetPortOpen())m_Comm.SetPortOpen(FALSE);UpdateData(FALSE);}//相应的OnComm事件处理voidCGpsDlg::OnComm(){m_comdata.Empty();VARIANTm_input1;COleSafeArraym_input2;LONGlength,i;BYTEdata[1024];CStringstr;//接收缓冲区内字符if(m_Comm.GetCommEvent()==2){m_comd

7、ata.Empty();//读取缓冲区内的数据m_input1=m_Comm.GetInput();//将VARIANT型变量转换为ColeSafeArray型变量m_input2=m_input1;//确定数据长度length=m_input2.GetOneDimSize();//将数据转换为BYTE型数组for(i=0;i

8、c",a);m_comdata+=st

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。