MSCOMM串口控件在VS2010中的使用

时间:2022-09-06 10:36:05

1、前言



       之前的博客中有一篇关于MSCOMM使用的文章,里面最然给出了例子,但是对MSCOMM的使用介绍的不够。加之,近来又接触了上位机编程方面的东西,遂详细的做点笔记在这里。

        MSCOMM控件应用比较广泛的原因主要还是在于它的操作简便性。特别是不需要做很多的代码编写工作就可以实现一些很基础的功能。但是在实际的开发使用时候还是要了解一些基本的MSCOMM属性,这样在出现问题的时候才不至于找不到原因。

 

2、MSCOMM的常用属性


这些图片都是从书中截取出来的。该书的pdf版本下载链接附在本文的最下面。

1、  BOOL get_PortOpen()和put_PortOpen(BOOL newValue)属性

BOOL get_PortOpen()  返回当前是否打开串口,TURE为打开,FALSE为关闭;

put_PortOpen(BOOL newValue)  设置串口打开,参数newValue为要打开的串口号。

 

2、  put_CommPort(short newValue)和short get_CommPort()

put_CommPort()  设置需要打开的串口;

get_CommPort()  获取已经打开的串口号。

Tips:在打开串口之前必须要设置要打开的串口。在关闭串口前也必须保证串被关闭串是处于打开状态的。

 

3、  put_InBufferSize()和put_OutBufferSize()

put_InBufferSize()  设置输入缓冲区大小(Byte),缺省下为1024字节;

put_OutBufferSize()  设置输出缓冲区大小(Byte),缺省下为1024字节。

 

4、  put_InputLen()

put_InputLen()  设置当前接收区数据长度为0,表示全部读取。

 

5、put_InputMode()

put_InputMode()  设置为以二进制或者字符串的方式进行输入。

 

6、  put_RThreshold()

put_RThreshold()  设置一个阈值,当输如缓冲区的字符数量达到该阈值时,控件就会产生一个onComm事件,并且CommEvent属性设置为ComEvReceive,即为接受事件。

7、  put_Settings()

设置通信的参数,格式为:波特率,奇偶校验类型,数据位,停止位;

例如:

m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600无校验位,8位数据位,1位停止位

更多的属性可以在书(点我下载)上查找到,利用上述的属性可以做基础的串口初始化设置,设置的过程可以如下:

 

if(m_mscomm.get_PortOpen())            //如果串口是打开的,则关闭串口
    {
       m_mscomm.put_PortOpen(FALSE);
    }
    m_mscomm.put_CommPort(4);              //选择COM1
    m_mscomm.put_InBufferSize(1024);       //接收缓冲区
    m_mscomm.put_OutBufferSize(1024);      //发送缓冲区
    m_mscomm.put_InputLen(0);              //设置当前接收区数据长度为0,表示全部读取
    m_mscomm.put_InputMode(1);         //以二进制方式读写数据
    m_mscomm.put_RThreshold(16);           //接收缓冲区有1个以及1个以上字符时,将引发接收数据的OnComm事件
    m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率9600无校验位,8位数据位,1位停止位
    if(!m_mscomm.get_PortOpen())           //如果串口没有打开则打开
    {
       m_mscomm.put_PortOpen(TRUE);//打开串口
       AfxMessageBox(_T("串口1打开成功"));
    }
    else
    {
       m_mscomm.put_OutBufferCount(0);
       AfxMessageBox(_T("串口1打开失败"));
    }

3、MFC中插入MSCOMM控件

在资源管理视图的对话框资源下,右键>插入ACTIVEX控件,找到:

MSCOMM串口控件在VS2010中的使用

选择确定,并为该控件添加关联变量,添加响应的类。这样就可以对其进行操作了,串口的初始化设置如上面代码设置即可。

4、数据类型的处理

    输入输出缓冲区的类型都是VARIANT类型,程序中常用的字符处理类型是CString,char*等类型。所以需要将数据类型进行转换。

MSCOMM串口控件在VS2010中的使用


在需要发送数据时:

MSCOMM串口控件在VS2010中的使用

5、注意事项

MSCOMM串口控件在VS2010中的使用


文档下载