串口通信笔记.doc_第1页
串口通信笔记.doc_第2页
串口通信笔记.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MSComm控件接收数据并存储准备显示:接收数据 - 转换类型 - 判断长度 - 转换成数组 - 数组转换成字符型 - 送入临时变量 - 显示MSComm控件消息处理函数:void CSDICommView:OnComm() / TODO: Add your control notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048; /设置BYTE数组CString strtemp;CString strDisp; /用于显示接收数据 if(m_MSComm.GetCommEvent()=2) /启动variant_inp=m_MSComm.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;kTextOut(200,100,COM2接收到:+strDisp);/显示接收到的数据 ReleaseDC(pDC);strtemp.Format(OK,%s Received ,strDisp);m_MSComm.SetOutput(COleVariant(strtemp);/发送数据CSerialPort类消息处理函数:LONG CSerialPortTest2View:OnComm(WPARAM ch, LPARAM port)if(port=2) /COM2接收到数据 switch(ch)case $:/开始m_strRXDataCOM2=(char)ch;break;/跳出此次循环,继续进行判断case *:/结束m_strRXDataCOM2+=(char)ch;CDC* pDC=GetDC(); /准备数据显示 pDC-TextOut(10,150,COM2接收到+m_strRXDataCOM2);/显示数据 ReleaseDC(pDC);m_strRXDataCOM2.Replace($,Y);/COM2发送应答信息m_SerialPort1.WriteToPort(LPCTSTR)m_strRXDataCOM2); break;default:m_strRXDataCOM2+=(char)ch;break;return 0;MSComm控件初始化串口OnInitDialog()(部分) 步骤:选择-设置-打开-清除 /初始化COM2/m_ctrlMSCommCOM2.SetCommPort(2); /选择COM2m_ctrlMSCommCOM2.SetInputMode(1); /输入方式为二进制方式m_ctrlMSCommCOM2.SetInBufferSize(1024); /设置输入缓冲区大小m_ctrlMSCommCOM2.SetOutBufferSize(512); /设置输出缓冲区大小/波特率9600,无校验,8个数据位,1个停止位 m_ctrlMSCommCOM2.SetSettings(9600,n,8,1); /参数1表示每当串口接收缓冲区中有多于/或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlMSCommCOM2.SetRThreshold(1); if(!m_ctrlMSCommCOM2.GetPortOpen()m_ctrlMSCommCOM2.SetPortOpen(TRUE);/打开串口m_ctrlMSCommCOM2.SetInputLen(0); /设置当前接收区数据长度为0m_ctrlMSCommCOM2.GetInput(); /先预读缓冲区以清除残留数据CSerialPort类基于对话框的应用程序打开串口:(含初始化串口)void CSerialPortTestDlg:OnButtonOpen() int nPort=m_ctrlComboComPort.GetCurSel()+1; /得到串口号,想想为什么要加1if(m_SerialPort.InitPort(this, nPort, 9600,N,8,1,EV_RXFLAG | EV_RXCHAR,512)m_SerialPort.StartMonitoring();/开启监测线程m_bSerialPortOpened=TRUE;/打开串口elseAfxMessageBox(没有发现此串口或被占用);m_bSerialPortOpened=FALSE;GetDlgItem(IDC_BUTTON_OPEN)-EnableWindow(!m_bSerialPortOpened);GetDlgItem(IDC_BUTTON_CLOSE)-EnableWindow(m_bSerialPortOpened);CSerialPort类基于对话框的应用程序发送数据:void CSerialPortTestDlg:OnButtonSend() / TODO: Add your control notification handler code hereif(!m_bSerialPortOpened) return; /检查串口是否打开UpdateData(TRUE); /读入编辑框中的数据m_SerialPort.WriteToPort(LPCTSTR)m_strEditSendMsg);/发送数据MSComm控件基于对话框发送数据void CMSCommMultiPortDlg:OnButtonCom1send() / TODO: Add your

温馨提示

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

评论

0/150

提交评论