欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 口号 > mfc读取串口号

mfc读取串口号

时间:2016-06-08 15:42

mfc编程:读取串口数据并显示

不要粘贴网上的,哪些我也有

你所谓的扫描是不是扫描读写器啊?既然是用串口连接的,那就直接用串口通讯就行了,串口读写会不会?readfile writefile,建议看看相关的资料

c++的MFC中,从串口中一次性读取11个双字节的数据,怎么做?

MSCOMM控件需要手动添加的。

单击主菜单project的子菜单Add To project的Components and Controls选项,在弹出的Components and Controls Gallery对话框中选择Registered ActiveX Controls文件夹中的Microsoft Communications Control,version 6.0选项,单击其中的Insert按钮,MSComm控件就被增加到工程中了。

VC6.0中MFC读取并显示串口的数据是不是只能通过MSCOMM控件。

注:我的VC中找不到MSCOMM

建议使用一个线程负责接收数据,缓冲区可以自己开辟,把缓冲区做成队列。

界面线程从对了里面获取数据显示和画图。

至于队列,与MFC无关,自己使用C++来实现,至于画图和显示数据,都是基本的MFC编程。

MFC串口接收数据

使用MSComm控件串口接收数据,一般设置成SetRThreshold(1);\\\/\\\/参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件并且串口每次接收到的数据个数是不确定的,如果你自己确定需要接收到多少个数据的话,就好办了。

\\\/\\\/全局变量BYTE Comm_Packet_Len; \\\/\\\/需要接收到的数据个数BYTE Comm_DataBuffer[20]; \\\/\\\/依次存放串口接收到的数据long Comm_Packet_Index; \\\/\\\/每次收到数据个数,并标志数据应放在全局数组位置的索引\\\/\\\/每次处理完数据后清空,为下一次接收做准备void CEOLDlg::OnMscomm() { \\\/\\\/ TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp; long len=0, k=0; \\\/\\\/转换为数组时使用的变量 BYTE rxdata[204]; \\\/\\\/设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; \\\/\\\/字符型变量 int temp = 0; \\\/\\\/临时变量 unsigned char ecuchecksum = 0; \\\/\\\/ecu回传校验码 if(m_ctrlComm.GetCommEvent() == 2) \\\/\\\/事件值为2表示接收缓冲区内有字符 { \\\/\\\/以下你可以根据自己的通信协议加入处理代码 variant_inp = m_ctrlComm.GetInput();\\\/\\\/读缓冲区 safearray_inp = variant_inp; \\\/\\\/VARIANT型变量转换为ColeSafeArray型变量 len = safearray_inp.GetOneDimSize(); \\\/\\\/得到有效数据长度 for(k = 0; k < len; k++) \\\/\\\/将ColeSafeArray型变量转换为BYTE型数组 { safearray_inp.GetElement(&k, rxdata + k);\\\/\\\/转换为BYTE型数组 } for(temp = 0; temp < len; temp++) { Comm_DataBuffer[Comm_Packet_Index + temp] = rxdata[temp]; } Comm_Packet_Index += len; if(Comm_Packet_Index == Comm_Packet_Len)\\\/\\\/接收到的数据个数等于 { \\\/\\\/处理接收到的数据 } }}

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片