1. 首页
  2. 文档大全

TTY字符接受程序

上传者:9****8 2022-07-19 21:06:24上传 DOCX文件 180.96KB
TTY字符接受程序_第1页 TTY字符接受程序_第2页 TTY字符接受程序_第3页

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

1、TTY字符接受程序一、功能描述接受方接受发送方发送的字符,并显示。可以传送字符包括可见英文字符(ASCII码32126)和回车符。要求:,1. 采用MSComm控件实现(事件驱动方式)。2. 采用WinAPI方式,多线程(子线程检测事件,主线程显示),事件驱动方式,自定义消息二、采用MSCommTTY接受界面设计1. 主界面设计添加4个Button,一个Edit Control,三个Static Text控件。设置Caption。2. 通信界面设计添加3个Static Text,3个Combo Box控件。设置Caption。添加Combo Box 的data值。如通信端口添加COM1;COM

2、2;COM3;等。变量声明声明主界面成员变量和设置对话框的成员变量。1、 在主对话框类头文件中声明设置对话框实例、串口号、奇偶校验类型以及波特率,并包含相应头文件保证编译通过;CMSComm m_Comm;/ 串口控件对象CSetupDlg m_SetupDlg;/ 设置对话框对象BYTE m_Com;/ 端口号CString m_BaudRate;/ 波特率CString m_Parity;/ 校验类型2、 利用“ClassWizard”创建主对话框及设置对话框控件变量。如图所示添加相应控件变量。更改对应变量类型和类别。创建串口控件加载后,在主对话框OnInitDialog消息处理函数中创建

3、串口。BOOL Ctest22Dlg:OnInitDialog()CDialogEx:OnInitDialog();/ 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代码DWORD style=WS_VISIBLE|WS_CHILD;if (!m_Comm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM1)AfxMessageBox(创建MSComm控件失败!)

4、;m_OpenComm.EnableWindow(false);/使打开串口按钮无效m_CloseComm.EnableWindow(false);/使关闭串口按钮无效m_SetupComm.EnableWindow(false);/使设置按钮无效return -1;m_Para=COM1,9600,N,8,1;UpdateData(false);return TRUE; / 除非将焦点设置到控件,否则返回 TRUE设置串口 “设置”按钮添加点击事件响应函数:void Ctest22Dlg:OnClickedSetupcomm()/ TODO: 在此添加控件通知处理程序代码if(m_Setup

5、Dlg.DoModal() = IDOK) / 打开设置对话框UpdateData(true); / 更新数据 (从控件-成员变量)m_Com = m_SetupDlg.m_Com+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

6、_Parity = O;break;case 2:m_Parity = E;break;CString windowsTitle, temp;/ 设置窗口标题windowsTitle = COM;temp.Format(%d, m_Com);windowsTitle += temp;windowsTitle += ,;windowsTitle += m_BaudRate;windowsTitle += ,;windowsTitle += m_Parity;windowsTitle += ,8,1;m_Para=windowsTitle;UpdateData(false);/ 更新控件内容(从成

7、员变量-控件)打开串口 “打开串口”按钮添加点击事件处理函数“:void Ctest22Dlg:OnClickedOpencomm()/ TODO: 在此添加控件通知处理程序代码CString strPara;/串口参数m_Comm.put_CommPort(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_InBuffer

8、Count(0);/清空接收缓冲区m_Comm.put_InputMode(1);/设置数据获取方式,二进制方式m_Comm.put_InputLen(0);/设置每次读取长度,读取整个缓冲区内容m_Comm.put_RThreshold(1); /设置接收OnComm事件门限值,m_Comm.put_PortOpen(1);/打开串口m_OpenComm.EnableWindow(false);/使打开串口按钮无效m_CloseComm.EnableWindow(true);/使关闭串口按钮生效m_SetupComm.EnableWindow(false); /使设置按钮无效AfxMessa

9、geBox(串口打开成功!);关闭串口 “关闭串口”按钮添加单击事件处理函数:void Ctest22Dlg:OnClickedClosecomm()/ TODO: 在此添加控件通知处理程序代码m_Comm.put_PortOpen(0);/关闭串口AfxMessageBox(串口关闭成功!);m_OpenComm.EnableWindow(true);/使打开串口按钮生效m_CloseComm.EnableWindow(false);/使关闭串口按钮无效m_SetupComm.EnableWindow(true);/使设置按钮生效接收数据处理在MSComm控件的OnComm事件中接受数据。添

10、加OnComm事件处理函数:void Ctest22Dlg:OnOncommMscomm1()/ TODO: 在此处添加消息处理程序代码VARIANT input1; /定义VARIANT类型变量BYTE rxdata2048; /定义存放二进制数据的数组COleSafeArray safearray1; /定义COleSafeArray类的实例CString strDis, strTemp;switch(m_Comm.get_CommEvent() case 2: input1=m_Comm.get_Input();safearray1=input1; /使用COleSafeArray类的成

11、员函数获取数据长度long len1=safearray1.GetOneDimSize();for(long k=0;klen1;k+)/使用COleSafeArray成员函数将数据写入数组safearray1.GetElement(&k,rxdata+k); /收到 RThreshold 个字符, 添加接收处理代码/将接受缓冲区数据放入VARIANT变量;/将VARAIANT变量赋值给COleSafeArray类的实例/使用COleSafeArray类的成员函数获取数据长度/使用COleSafeArray类的成员函数将数据写入数组rxdatafor(long k=0;k1;k+)if(rxd


文档来源:https://www.renrendoc.com/paper/212712081.html

文档标签:

下载地址