VC++与RS232串口通信_第1页
VC++与RS232串口通信_第2页
VC++与RS232串口通信_第3页
全文预览已结束

下载本文档

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

文档简介

MSComm 作为一个串行通讯控件为程序员串口通讯编程节省了很多时间。在基于对话框的应用中加入一个MSComm控件非常简单。只需进行以下操作即可: 打开“Project-Add To Project-Components and Controls-Registered Activex Controls”,然后选择控件:Microsoft Communication Control,version 6.0插入到当前的工程中。这样就将类 CMSComm 的相关文件 mscomm.cpp 和 mscomm.h 一并加入到了工程中。编程时只需将控件对话中的 MSComm 控件拖至你的应用对话框中就OK了。/ 串口控件的初始化 / DWORD style=WS_VISIBLE;/ if(!m_MSComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM1)/ / TRACE0(Failed to create OLE Communication Controls!n);/ if(m_MSComm.GetPortOpen() /如果串口是打开的,则行关闭串口 m_MSComm.SetPortOpen(FALSE); m_MSComm.SetCommPort(1); /选择COM1m_MSComm.SetInBufferSize(1024); /接收缓冲区m_MSComm.SetOutBufferSize(512);/发送缓冲区m_MSComm.SetInputLen(0);/设置当前接收区数据长度为0,表示全部读取m_MSComm.SetInputMode(1);/以二进制方式读写数据m_MSComm.SetRThreshold(1);/接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件m_MSComm.SetSettings(9600,n,8,1);/波特率9600无检验位,8个数据位,1个停止位 if(!m_MSComm.GetPortOpen()/如果串口没有打开则打开 m_MSComm.SetPortOpen(TRUE);/打开串口 else m_MSComm.SetOutBufferCount(0);m_MSComm.GetInput(); m_Start=Success To Connect;UpdateData(FALSE);/ 控件事件的响应声明 / *.h/AFX_MSG(CGolfView)afx_msg BOOL OnComm();DECLARE_EVENTSINK_MAP()/AFX_MSG/ *.cppBEGIN_EVENTSINK_MAP(CGolfView, CView)/AFX_EVENTSINK_MAP(CAboutDlg)ON_EVENT(CGolfView, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)/AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()/ 控件事件的响应BOOL CGolfView:OnComm()VARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048; /设置BYTE数组 An 8-bit integerthat is not signed.CString strtemp;switch(m_MSComm.GetCommEvent()/case 1: / comEvSend发送数据/break;case 2: / comEvReceive读取数据/ MessageBox(_T(读取数据事件), _T(TRACE), MB_OK);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型数组BYTE bt=*(char*)(rxdata+k); /字符型strtemp.Format(%c,bt); /将字符送入临时变量strtemp存放m_ReceiveText+=strtemp;/ UpdateData(TRUE);break;default: / 传输事件出错m_MSComm.SetOutBufferCount(0);break;UpdateData(FALSE); /更新图象内容return TRUE; /发送数据 int i,Count; UpdateData(TRUE); Count=m_SendText.GetLength(); CByteArray m_Array; m_Array.RemoveAll(); m_Array.SetSize(Count); for(i=0;i

温馨提示

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

评论

0/150

提交评论