TTY字符接受程序

上传人:公**** 文档编号:499430800 上传时间:2023-11-21 格式:DOCX 页数:19 大小:231.33KB
返回 下载 相关 举报
TTY字符接受程序_第1页
第1页 / 共19页
TTY字符接受程序_第2页
第2页 / 共19页
TTY字符接受程序_第3页
第3页 / 共19页
TTY字符接受程序_第4页
第4页 / 共19页
TTY字符接受程序_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《TTY字符接受程序》由会员分享,可在线阅读,更多相关《TTY字符接受程序(19页珍藏版)》请在金锄头文库上搜索。

1、TTY字符接受程序一、功能描述接受方接受发送方发送的字符,并显示。可以传送字符包括可见英文字符(ASCII码32126)和回车符。要求:,1 .采用MSComm控件实现(事件驱动方式)。2 .采用WinAPI方式,多线程(子线程检测事件,主线程显示),事件驱动方式,自定义消息、采用MSCommTTY接受界面设计1 .主界面设计1接班濮置打开品口美诩串口退出添力口4个Button,一个EditControl,三个StaticText控件。设置Caption2 .通信界面设计添力口3个StaticText,3个ComboBox控件。设置Caption。添力口ComboBox的data值。如通信端口

2、添加COM1;COM2;COM3;等。变量声明声明主界面成员变量和设置对话框的成员变量。1、在主对话框类头文件中声明设置对话框实例、用口号、奇偶校验类型以及波特率,并包含相应头文件保证编译通过;CMSComm_Comm;/串口控件对象CSetupDlgm_SetupDlg;/设置对话框对象BYTEm_Com;/端口号/波特率/校验类型CStringm_BaudRate;CStringm_Parity;2、利用“ClassWizard创建主对话框及设置对话框控件变量。孱加氏曼涯向导-test22旅迎使用漆神成员费里向导询可:注释|不毒要/表示法M:U3W成员变量)m_Com=m_SetupDlg

3、.m_Com+1;/获得端口号I一一一doublebaudRate=pow(2,(double)m_SetupDlg.m_BaudRate);baudRate=19200/baudRate;m_BaudRate.Format(%.0f,baudRate);/转化为字符串,得到波特率switch(m_SetupDlg.m_Parity)/获得校验类型case0:m_Parity=N;break;case1:m_Parity=O;break;case2:m_Parity=E;break;CStringwindowsTitle,temp;/设置窗口标题windowsTitle=COM;temp.Fo

4、rmat(%d,m_Com);windowsTitle+=temp;windowsTitle+=,;windowsTitle+=m_BaudRate;windowsTitle+=,;windowsTitle+=m_Parity;windowsTitle+=,8,1;m_Para=windowsTitle;UpdateData(false);/更新控件内容(从成员变量-控件)打开串口打开用口”按钮添加点击事件处理函数:voidCtest22Dlg:OnClickedOpencomm()/TODO:在此添加控件通知处理程序代码CStringstrPara;/串口参数m_Comm.put_CommP

5、ort(m_Com);/指定串口号strPara=m_BaudRate;strPara+=,;strPara+=m_Parity;strPara+=,8,1;m_Comm.put_Settings(strPara);/通信参数设置m_Comm.put_InBufferSize(1024);/指定接收缓冲区大小m_Comm.put_InBufferCount(0);/清空接收缓冲区m_Comm.put_InputMode(1);/设置数据获取方式,二进制方式m_Comm.put_InputLen(0);/设置每次读取长度,读取整个缓冲区内容m_Comm.put_RThreshold(1);/设置

6、接收OnComm件门限值,m_Comm.put_PortOpen(1);/打开串口m_OpenComm.EnableWindoW(lse);/使打开串口按钮无效m_CloseComm.EnableWindoWfue);/使关闭串口按钮生效m_SetupComm.EnableWindowfalse);/使设置按钮无效AfxMessageBox(串口打开成功!);关闭串口“关闭串口”按钮添加单击事件处理函数:voidCtest22Dlg:OnClickedClosecomm()/TODO:在此添加控件通知处理程序代码m_Comm.put_PortOpen(0);/关闭串口AfxMessageBox

7、(串口关闭成功!);m_OpenComm.EnableWindoWrQe);/使打开串口按钮生效m_CloseComm.EnableWindowfaise);/使关闭串口按钮无效m_SetupComm.EnableWindowtrue);/使设置按钮生效接收数据处理在MSComm控件的OnComm事件中接受数据。添加OnComm事件处理函数:voidCtest22Dlg:OnOncommMscomm1()/TODO:在此处添加消息处理程序代码VARIANTnputl;/定义VARIANT1型变量BYTErxdata2048;/定义存放二进制数据的数组COleSafeArraysafearray

8、1;/定义COleSafeArray类的实例CStringstrDis,strTemp;switch(m_Comm.get_CommEvent()case2:input1=mComm.getInput();safearray1=input1;/使用COleSafeArray类的成员函数获取数据长度longlen1=safearray1.GetOneDimSize();for(longk=0;klen1;k+)/使用COleSafeArray成员函数将数据写入数组safearray1.GetElement(&k,rxdata+k);/收到RThreshold个字符,添加接收处理代码/将接受缓冲区

9、数据放入VARIAN变量;/将VARAIANT量赋值给COleSafeArray类的实例/使用COleSafeArray类的成员函数获取数据长度/使用COleSafeArray类的成员函数将数据写入数组rxdatafor(longk=0;k1;k+)if(rxdatak=13)/回车键/换行显示m_Display.SetSel(1000000,1000000);m_Display.ReplaceSel(1512);UpdateData(false);else/可见字符if(rxdatak=32)strDis+=rxdatak;m_Display.SetSel(1000000,1000000);

10、mDisplay.ReplaceSel(strDis);strDis=;UpdateData(false);程序结果展示:py甬信;鼻彷:COM:&QDO115rlP n:TLl.由田vpidi+BrT-i-Mh#a蜘etthsw*I”的M区比再加田nt通地如建#It用电示区2道信参枷COMlg?gNrg,ltest22Xi串口打开成功!4-fmrttiibr-!m?-rsnr-rsnrs-rin-酝1milirBianiBiaiiimiaiirBniiiibT打开军口关间串口退出tests2XJ器口关闵威功!打开串口|吴诩国口|退出I三、采用API界面设计:1.主界面,设置参数界面同上:正荒

11、吊口打开串口美用串口退出变量声明(主对话框CthreadReceiveDlg.cpp中头部添加声明):CSetupDlgmySetupDlg;/设置对话框对象DWORDyfParity;/校验标志LPCSTRnyCom;/串口号BYTEmyParity;/校验类型DWORDyBaudRate;/波特率HANDLhCom;/串口句柄HANDLhThreadEvent;/事件线程句柄DWORTDireadProcEvent(LPVOIDpParam);/事件响应函数boolhEventRun;/事件线程函数执行标志HWNDWnd;/窗口句柄DWORdWThreadID;/事件线程IDOVERLAPPED)l=0;/事件线程使用的OVERLAPPED勾OVERLAPPEDol=0;/读操作使用的OVERLAPPED吉构boolfStopMsg;

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

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

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