- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vc使用mscomm控件实现串口通讯
vc 使用mscomm控件实现串口通讯
2009-07-07 08:34
mscomm控件是微软发布的串口通讯控件,可以被多种开发工具使用,本章简单介绍vc环境下该控件的使用情况.
1、控件的装载。 新建一个mfc工程,选择project-add to project-components and controls打开components and controls gallery对话框,双击 registered actives controls ,做出如下图的选择:
点插入按钮后,就可把把该控件安装到controls面板上,同时创建串口类,我们从controls面板上把该控件添加到应用程序对话框就可以使用该控件设计通讯程序了。
2、初始化并打开串口。
m_ctrlComm.SetCommPort(1); //选择串口1if(!m_ctrlComm.GetPortOpen())//如果串口没有打开,则打开串口?? m_ctrlComm.SetPortOpen(TRUE);m_ctrlComm.SetSettings(38400,n,8,1);//波特率38400,无校验,8个数据位,1个停止位m_ctrlComm.SetInputMode(1);//以二进制方法检取数据m_ctrlComm.SetRThreshold(1);//参数为1表示当串口接收缓冲区有多于或等于1个字符时,将出发一个??????????????????????????? //接收数据的OnComm事件m_ctrlComm.SetInputLen(0);//设置当前接收缓冲区的数据长度为0m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据
3、串口关闭。?? m_ctrlComm.SetPortOpen(FALSE);4、数据发送
??? strSendFrame = 10 40 01 41 16 ;??? CStringToCByteArray(strSendFrame,cbaSendBuf);//转换为字节流??? cbaLastSendFrameBuf.Copy(cbaSendBuf);??? ucLastSendCtlCode = cbaSendBuf[1];??? pView-m_ctrlComm.SetOutput((COleVariant)cbaSendBuf);//串口发送
5、数据接收
响应mscomm控件的oncomm事件处理接收到的数据。
//串口数据接收处理void CCpuAndMmiCommLinkView::OnComm() {COleSafeArray safearray_inp;??? long k,len;BYTE bytetemp[2];COleVariant myVar;CString strDisplay;if(m_ctrlComm.GetCommEvent()==2)???????????????????????????? //表示接收缓冲区内有字符??? {?????? ?? myVar.Attach(m_ctrlComm.GetInput());?? safearray_inp=myVar;?? len=safearray_inp.GetOneDimSize();???? for(k=0;klen;k++,m_nSourceLen++)?? {??? safearray_inp.GetElement(k,bytetemp);??? m_pSourceBuf[m_nSourceLen] = *bytetemp;
至此,简单的描述了vc环境下mscomm控件使用的过程。我们处理mscomm程序时候,可以按上面方式处理。上面的代码和函数只为说明步骤作补充,不是能完全执行的代码。
另外mscomm程序发布的时候, 根据要安装的pc机的不同,可能需要mscomm控件注册,注册方式有两种,一种是把mscomm控件拷贝的相应位置后,用regsvr32 注册。另外一种注册比较麻烦(如果你的程序动态的创建了mscomm控件,可能需要按这种麻烦的方式注册),步骤是:
注册程序zuce.exe-presetup.exe 并不支持window98
注册MSCOMM控件:
1、把MSCOMM32.DEP、Mscomm32.ocx、MSCOMM.SRG复制到系统盘的system32目录中去,如果是98系统,则复制到系统盘的system目录中。
2、在开始\运行菜单中输入 Regsvr32 c:\winnt\system32\Mscomm32.ocx ?? 按回车就行了。
3、在注册表中的KEY_CLASSES_ROOT\Licenses 添加主键
文档评论(0)