mscomm控件在vs2010中应用

上传人:101****457 文档编号:88695644 上传时间:2019-05-07 格式:DOCX 页数:6 大小:235.20KB
返回 下载 相关 举报
mscomm控件在vs2010中应用_第1页
第1页 / 共6页
mscomm控件在vs2010中应用_第2页
第2页 / 共6页
mscomm控件在vs2010中应用_第3页
第3页 / 共6页
mscomm控件在vs2010中应用_第4页
第4页 / 共6页
mscomm控件在vs2010中应用_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《mscomm控件在vs2010中应用》由会员分享,可在线阅读,更多相关《mscomm控件在vs2010中应用(6页珍藏版)》请在金锄头文库上搜索。

1、MSComm控件在VS2010中应用分为控件注册与新建基于对话框MFC项目1、MSComm控件注册:解压MSComm32.zip压缩包(附在插入对象里),把解压后文件复制C:WindowsSystem32。运行命令下输入:Regsvr32 C:WindowsSystem32MSCOMM32.OCX 进行注册,注册成功后会显示一下提示。2、新建基于对话框MFC项目第一步:在工具箱的下图这个位置右键,选择choose item第二步:在弹出的组件栏里选择“COM Components”下的Microsoft communication control 6.0,然后工具箱里就会有一个电话图标了第三步

2、:添加控件,也就是把电话图标拖到对话框里,并添加控件变量添加空间以后,在控件上面右键,然后选择“add variable”,这个时候请特别注意,下图两个红框里面的文件会被自动添加到工程,并且文件名都带“1”.如果你的工程里没有自动添加,或者文件名后面不带“1”,那么出错的可能性就很大了。网上有种帖子说,用右键工程-添加MFC类-添加ActiveX的MFC类-添加mscomm类定义,这样添加出来的文件个人实验下来是不带“1”的。我也不知道为什么,这两种方法大概都可以,有空的话你可比较一下带“1”和不带“1”的两个cpp文件和h文件的区别。第四步:添加消息响应函数在控件上右键-添加事件handle

3、-添加响应函数这样添加以后cpp文件里会自动多出来以下代码1. BEGIN_EVENTSINK_MAP(CMscommTest3Dlg,CDialogEx)2. ON_EVENT(CMscommTest3Dlg,IDC_MSCOMM1,1,CMscommTest3Dlg:OnCommMscomm1,VTS_NONE)3. END_EVENTSINK_MAP()4. 5. 6. voidCMscommTest3Dlg:OnCommMscomm1()7. 8. /TODO:Addyourmessagehandlercodehere9. 特别注意,不要在控件上面右键用类向导添加消息响应函数,这样添加

4、的消息响应函数是无法被触发的,估计是软件BUG,所以最好是在选定了相应的控件后点击项目栏下添加相应变量与类向导。下面附上2、的详细步骤:以对话框程序为例,下面试着在vs2010下使用该控件(控件在使用之前必须要注册)。第一步: 创建对话框程序,画好编辑框等控件。第二步: 插入MSCOMM控件,添加控件相关的类。并为控件添加好变量。第三步: 添加消息处理函数,这里要注意的是MSCOMM控件的响应函数要右击控件选择添加事件处理函数,消息类型选择为OnComm类型。下面是各个函数的实现:1. /发送按钮按下响应函数2. voidCCommTeatDlg:OnBnClickedButton3()3.

5、4. UpdateData(TRUE);5. m_mscomm.put_Output(COleVariant(m_EditSend);/向串口下发数据6. m_EditSend.Empty();/将编辑框内容清空7. UpdateData(FALSE);8. 1. voidCCommTeatDlg:OnBnClickedButton2()2. 3. m_mscomm.put_PortOpen(FALSE);/关闭串口4. AfxMessageBox(_T(串口已关闭);/显示提示窗口5. 1. voidCCommTeatDlg:OnBnClickedButton1()2. 3. if(m_ms

6、comm.get_PortOpen()/检测串口是否已经打开4. 5. m_mscomm.put_PortOpen(FALSE);/若串口已经打开,则关闭串口6. 7. m_mscomm.put_CommPort(1);/打开串口18. m_mscomm.put_InBufferSize(1024);/串口接收缓冲区大小9. m_mscomm.put_OutBufferSize(1024);/串口发送缓冲去大小10. m_mscomm.put_InputLen(0);/数据发送长度11. m_mscomm.put_InputMode(1);/数据发送模式12. m_mscomm.put_RTh

7、reshold(1);/13. m_mscomm.put_Settings(_T(4800,n,8,1);/串口设置14. if(!m_mscomm.get_PortOpen()/检测串口是否打开,若关闭则打开串口15. 16. m_mscomm.put_PortOpen(TRUE);17. AfxMessageBox(_T(打开串口成功);18. 19. else20. 21. m_mscomm.put_OutBufferCount(0);/清空输出缓冲区22. AfxMessageBox(_T(打开串口失败);/提示串口打开失败23. 24. 特别注意一下这段:1. BEGIN_EVENT

8、SINK_MAP(CCommTeatDlg,CDialogEx)2. ON_EVENT(CCommTeatDlg,IDC_MSCOMM1,1,CCommTeatDlg:OnCommMscomm1,VTS_NONE)3. END_EVENTSINK_MAP()1. voidCCommTeatDlg:OnCommMscomm1()2. 3. staticunsignedintcnt=0;4. VARIANTvariant_inp;5. COleSafeArraysafearryay_inp;6. longlen,k;7. unsignedintdata1024=0;8. byterxdata102

9、4;9. CStringstremp;10. if(m_mscomm.get_CommEvent()=2)11. 12. cnt+;13. variant_inp=m_mscomm.get_Input();14. safearryay_inp=variant_inp;15. len=safearryay_inp.GetOneDimSize();16. for(k=0;klen;k+)17. 18. safearryay_inp.GetElement(&k,rxdata+k);19. 20. for(k=0;klen;k+)21. 22. stremp.Format(_T(%c),*(rxdata+k);23. m_EditReceive+=stremp;24. CStringtemp=_T(rn);25. m_EditReceive+=temp;26. 27. 28. UpdateData(FALSE);29.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号