TTY字符接受程序

上传人:ni****g 文档编号:469704384 上传时间:2023-08-31 格式:DOC 页数:12 大小:62.50KB
返回 下载 相关 举报
TTY字符接受程序_第1页
第1页 / 共12页
TTY字符接受程序_第2页
第2页 / 共12页
TTY字符接受程序_第3页
第3页 / 共12页
TTY字符接受程序_第4页
第4页 / 共12页
TTY字符接受程序_第5页
第5页 / 共12页
点击查看更多>>
资源描述

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

1、-TTY字符承受程序一、功能描述承受方承受发送方发送的字符,并显示。可以传送字符包括可见英文字符ASCII码32126和回车符。要求:,1. 采用MSm控件实现事件驱动方式。2. 采用WinAPI方式,多线程子线程检测事件,主线程显示,事件驱动方式,自定义消息二、采用MSmTTY承受界面设计1. 主界面设计添加4个Button,一个Edit Control,三个Static Te*t控件。设置Caption。2. 通信界面设计添加3个Static Te*t,3个bo Bo*控件。设置Caption。添加boBo* 的data值。如通信端口添加1;2;3;等。变量声明声明主界面成员变量和设置对话

2、框的成员变量。1、 在主对话框类头文件中声明设置对话框实例、串口号、奇偶校验类型以及波特率,并包含相应头文件保证编译通过;CMSm m_m;/ 串口控件对象CSetupDlg m_SetupDlg;/ 设置对话框对象BYTE m_;/ 端口号CString m_BaudRate;/ 波特率CString m_Parity;/ 校验类型2、 利用ClassWizard创立主对话框及设置对话框控件变量。如下列图添加相应控件变量。更改对应变量类型和类别。创立串口控件加载后,在主对话框OnInitDialog消息处理函数中创立串口。BOOLCtest22Dlg:OnInitDialog()CDialo

3、gE*:OnInitDialog();/ 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代码DWORD style=WS_VISIBLE|WS_CHILD;if (!m_m.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSM1)Af*MessageBo*(创立MSm控件失败!);m_Openm.EnableWindow(false);/使翻开串口按钮无效m_Closem.

4、EnableWindow(false);/使关闭串口按钮无效m_Setupm.EnableWindow(false);/使设置按钮无效return -1;m_Para=1,9600,N,8,1;UpdateData(false);returnTRUE; / 除非将焦点设置到控件,否则返回 TRUE设置串口 设置按钮添加点击事件响应函数:voidCtest22Dlg:OnClickedSetupm()/ TODO: 在此添加控件通知处理程序代码if(m_SetupDlg.DoModal() = IDOK) / 翻开设置对话框UpdateData(true);/ 更新数据从控件-成员变量m_ =

5、m_SetupDlg.m_+1;/ 获得端口号double baudRate = pow(2, (double)m_SetupDlg.m_BaudRate);baudRate = 19200/baudRate;m_BaudRate.Format(%.0f, baudRate);/ 转化为字符串,得到波特率switch(m_SetupDlg.m_Parity) / 获得校验类型case 0:m_Parity = N;break;case 1:m_Parity = O;break;case 2:m_Parity =E;break;CString windowsTitle, temp;/ 设置窗口标

6、题windowsTitle = ;temp.Format(%d, m_);windowsTitle += temp;windowsTitle += ,;windowsTitle += m_BaudRate;windowsTitle += ,;windowsTitle += m_Parity;windowsTitle += ,8,1;m_Para=windowsTitle;UpdateData(false);/ 更新控件容从成员变量-控件翻开串口 翻开串口按钮添加点击事件处理函数:voidCtest22Dlg:OnClickedOpenm()/ TODO: 在此添加控件通知处理程序代码CStri

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

8、;/设置接收Onm事件门限值,m_m.put_PortOpen(1);/翻开串口m_Openm.EnableWindow(false);/使翻开串口按钮无效m_Closem.EnableWindow(true);/使关闭串口按钮生效m_Setupm.EnableWindow(false);/使设置按钮无效Af*MessageBo*(串口翻开成功!);关闭串口关闭串口按钮添加单击事件处理函数:voidCtest22Dlg:OnClickedClosem()/ TODO: 在此添加控件通知处理程序代码m_m.put_PortOpen(0);/关闭串口Af*MessageBo*(串口关闭成功!);m

9、_Openm.EnableWindow(true);/使翻开串口按钮生效m_Closem.EnableWindow(false);/使关闭串口按钮无效m_Setupm.EnableWindow(true);/使设置按钮生效接收数据处理在MSm控件的Onm事件中承受数据。添加Onm事件处理函数:voidCtest22Dlg:OnOnmMsm1()/ TODO: 在此处添加消息处理程序代码VARIANT input1; /定义VARIANT类型变量BYTE r*data2048; /定义存放二进制数据的数组COleSafeArray safearray1; /定义COleSafeArray类的实例

10、CString strDis, strTemp;switch(m_m.get_mEvent()case 2: input1=m_m.get_Input();safearray1=input1; /使用COleSafeArray类的成员函数获取数据长度long len1=safearray1.GetOneDimSize();for(long k=0;klen1;k+)/使用COleSafeArray成员函数将数据写入数组safearray1.GetElement(&k,r*data+k); /收到 RThreshold 个字符, 添加接收处理代码/将承受缓冲区数据放入VARIANT变量;/将VA

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

12、laceSel(strDis);strDis=;UpdateData(false);程序结果展示:三、采用API界面设计:1. 主界面,设置参数界面同上:变量声明主对话框CthreadReceiveDlg.cpp中头部添加声明:CSetupDlg mySetupDlg; /设置对话框对象DWORD myfParity; /校验标志LPCSTR my; /串口号BYTE myParity; /校验类型DWORD myBaudRate; /波特率HANDLE h; /串口句柄HANDLE hThreadEvent; /事件线程句柄DWORD ThreadProcEvent(LPVOID pParam); /事件响应函数bool hEventRun; /事件线程函数执行标志HWND hWnd; /窗口句柄DWORD dwThreadID; /事件线程IDOVERLAPPED Eol=0; /事件线程使用的OVERLAPPED构造OVERLAPPED Rol=0; /读操作使用的OVERLAPPED的构造bool fStopMsg;/事件线程向主线程发送消息标志2、利用ClassWizard创立主对话框及设置对话框控件变量(同上)。3、设置串口按钮添加单击事件响应函数并保存

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

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