MSComm控件应用

上传人:小** 文档编号:174696833 上传时间:2022-12-16 格式:DOC 页数:6 大小:372KB
收藏 版权申诉 举报 下载
MSComm控件应用_第1页
第1页 / 共6页
MSComm控件应用_第2页
第2页 / 共6页
MSComm控件应用_第3页
第3页 / 共6页
资源描述:

《MSComm控件应用》由会员分享,可在线阅读,更多相关《MSComm控件应用(6页珍藏版)》请在装配图网上搜索。

1、任务:串口发送接收,接收数据绘制曲线波形。方案:串口用自带控件用实现绘图功能。首先下载,并注册注册有两种办法,一种是用使用程序对控件进行注册;另一种是在程序中添写注册代码进行注册。我技术比较水,就选择第一种方案。即:先将拷贝至目录下,然后“开始”“运行”,输入命令进行注册。如图所示:注册成功弹出如下对话框。一运行建立对话框程序。二添加控件如图:三.串口部分(1).将MCSOMM拖进主对话框,向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次

2、,将其ID设为IDC_BUTTON_MANUALSEND。别忘记了将接收编辑框的PropertiesStyles中把Miltiline和VerticalScroll属性选上,发送编辑框若你想输入多行文字,也可选上Miltiline。(2再打开ClassWizardMemberViariables选项卡,选择CSCommTestDlg类,为IDC_EDIT_RXDATA添加CString变量m_strRXData,为IDC_EDIT_TXDATA添加CString变量m_strTXData。说明:m_strRXData和m_strTXData分别用来放入接收和发送的字符数据。(打开ClassWi

3、zardMemberViariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm。即定义了一个MCSCOMM的对象。在程序中直接可使用此对象来实现串口的相关属性设置。(4)添加串口事件消息处理函数OnComm()打开ClassWizardMessageMaps,选择类CSCommTestDlg,选择IDC_MSCOMM1,双击消息0nComm,将弹出的对话框中将函数名改为OnComm,(好记而已)0K。这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,

4、我们在OnCommO函数加入相应的处理代码就能实现自已想要的功能了。请你在函数中加入如下代码:voidCSCommTestDlg:OnComm()/TODO:AddyourcontrolnotificationhandlercodehereVARIANTvariant_inp;COleSafeArraysafearray_inp;LONGlen,k;BYTErxdata2048;/设置BYTE数组An8-bitintegerthatisnotsigned.CStringstrtemp,tempdata;if(m_ctrlComm.GetCommEvent()=2)/事件值为2表示接收缓冲区内有

5、字符/以下你可以根据自己的通信协议加入处理代码variant_inp=m_ctrlComm.GetInput();/读缓冲区safearray_inp=variant_inp;/VARIANT型变量转换为ColeSafeArray型变量len=safearray_inp.GetOneDimSize();/得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement(&k,rxdata+k);/转换为BYTE型数组for(k=0;klen;k+)/将数组转换为Cstring型变量BYTEbt=*(char*)(rxdata+k);/字符型strtemp.For

6、mat(%c,bt);/将字符送入临时变量strtemp存放m_strRXData+=strtemp;/加入接收编辑框对应字符串if(m_strRXData!=n)/若没接收完一串完整的字符串则继续接.对应下位机程序协议tempdata=m_strRXData;/m_strRXData=;/清空接收字符doubledValue=atof(tempdata);/将字符串转换为浮点数UpdateData(FALSE);/更新编辑框内容(5)打开串口和设置串口参数你可以在你需要的时候打开串口,例如在程序中做一个开始按钮,在该按钮的处理函数中打开串口。现在我们在主对话框的CSCommTestDlg:O

7、nInitDialog()打开串口,加入如下代码:/TODO:Addextrainitializationhereif(m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(FALSE);m_ctrlComm.SetCommPort(l);/选择comlif(!m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(TRUE);/打开串口elseAfxMessageBox(cannotopenserialport);m_ctrlComm.SetSettings(9600,n,8,l);/波特率9600,无校验,8个数

8、据位,l个停止位m_ctrlComm.SetlnputMode(1);/1:表示以二进制方式检取数据m_ctrlComm.SetRThreshold(l);/参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlComm.SetInputLen(0);/设置当前接收区数据长度为0m_ctrlComm.Getlnput();/先预读缓冲区以清除残留数据发送数据先为发送按钮添加一个单击消息即BN_CLICKED处理函数,打开ClassWizardMessageMaps,选择类CSCommTestDlg,选择IDC_BUTTON_MANUALSEND,双

9、击BN_CLICKED添加OnButtonManualsend()函数,并在函数中添加如下代码:voidCSCommTestDlg:OnButtonManualsend()/TODO:AddyourcontrolnotificationhandlercodehereUpdateData(TRUE);/读取编辑框内容m_ctrlComm.SetOutput(COleVariant(m_strTXData);/发送数据()OK编译运行,将串口线的第根线和第根线相连,实现自发自收,即可观察到正常运行了。四.绘图部分(1)将控件TeeChart拖进组对话框,并给其添加m_ctrlChar变量,右键单击编辑基本属性。如:添加一条曲线。添加坐标轴。设置面板。编译运行,在对话框头文件中声明初始化函数。在对话框中定义初始化函数。添加头文件:初始化函数即设置轴的最大值和最小值(4在)对话框初始化函数中调用此函数。将接收到的数据绘制曲线。在完成这一工作。因为接收到数据进行判断之后,即可绘制出来。定义作为轴当然也可以用时间来做轴,只需获取系统当前时间即可。程序最终运行效果刘常银,梅旭红

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!