MFC串口通信(一)——MSComm控件简介

Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。 要使用ActiveX控件MSComm,程序员必须将其添加入工程。使用MSCOMM的流程如下:

一、注册MSCOMM

1、下载控件MSCOMM32.OCX(32位),mswnisck.ocx(64位)

2、把这个ocx文件放在c盘WIndows的system32里,打开cmd执行:regsvr32 MSCOMM32.OCX(32位)

   把这个ocx文件放在c盘WIndows的syswow64里,打开cmd执行:regsvr32 c:\windos\syswow\mswnisck.OCX(64位)

3、在图形界面右键-》插入ActiveX控件,找到MS Communication控件,放在界面里(是一个黄色电话)

二、打开串口

m_mscomm.put__CommPort(1);//选择串口
m_mscomm.put_InputMode(1);//二进制方式读写数据
m_mscomm.put_InBufferSize(1024);//接收缓冲区大小,字节
m_mscomm.put_OutBufferSize(1024);//发送缓冲区大小,字节
m_mscomm.put_Settings(_T("9600,n,8,1"));//9600波特率,8个数据位,1个停止位
m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm
m_mscomm.put_PortOpen(TRUE);//打开串口,如果打开失败,此函数会调用AfxMessageBox来显示错误信息,并返回

三、发送数据

m_mscomm.put_Output((COleVariant)m_sendstr);//如果发送失败,此函数会调用AfxMessageBox提示错误信息并返回

四、接收数据(基于事件驱动型,和中断类似)

在图形界面,右键MSComm控件,添加事件处理程序onComm,在函数里:

VARIANT variant;
variant=m_mscomm.get_Input();//把接收缓冲区里的数据放在variant结构体中,这个结构体里有很多联合体,数据应该放在其中一个中
COleSafeArray colesafearray;//定义一个安全数组,是为了下面处理数据
colesafearray = variant;//把返回值存放在这个安全数组里
byte buf[512];//定义一个字节数据
long len, k;
len = colesafearray.GetOneDimSize();//数据一共有多少字节
for (k = 0; k < len; k++)
  colesafearray.GetElement(&k, buf + k);//把安全数组里的数据转移到字节数组buf中,方便打印
buf[len] = 0;//防止乱码
AfxMessageBox((CString)buf);

五、关闭串口

m_mscomm.put_PortOpen(FALSE);

以下链接为串口通信详细例子:https://blog.csdn.net/kangshuaibing/article/details/84631698

扫描二维码关注公众号,回复: 4460333 查看本文章

猜你喜欢

转载自blog.csdn.net/kangshuaibing/article/details/84634034