基于MFC的串口通信(Mscomm)

本文详细介绍了串口通信的基本概念、特点,以及如何使用Mscomm类进行串口通信,包括字符格式收发、不同通信方式的选择,以及如何在Mscomm中处理十六进制和二进制数据的发送与接收。

1、串口通信的概述:

串口是一种重要的通信资源,例如鼠标口、USB接口都是串口。串行端口是CPU和串行设备间的编码转换器。当数据从CPU经过端口发送出去的时候,字节数据会被转为串行的位,在接收数据时,串行的位被转换为字节数据。

(1)、串口通信的特点:

数据通信多采用串口技术,主要因为串口可以在现有的电话网络上进行数据传输。串口通信是按照数据一位一位的依次传输,所以一根传输线就可以完成数据交换,降低了通信成本。

(2)、串口通信的传输方式

串口通信按照数据流可以分为三种传输方式:单工通信、半双工通信、全双工通信。

单工通信:使用一根导线,数据只能从A发送到B

半双工通信:是用一根导线,数据可以从A发送到B,也可以从B发送到A。但是不能同时进行

全双工通信:俩根导线。允许通信双方在俩个方向同时进行数据传输。

(3)、通信方式

同步通信:接收方不必对每个字节进行起始和停止的操作,传输效率高。传输设备复杂,双方时钟允许误差小。可用于点对点之间的数据传输。

异步通信:以字符为单位进行数据传输,并且每个字符都有起始位和停止位的标记。允许各个字符之间有间隙,俩个字符之间的间隔不固定。异步通信的传输效率低,传输设备简单,并且只适用于点对点的数据传输。

2、利用Mscomm进行串口通信:

(1)、字符格式收发:

1)、初始化框架的ICON和发送EDIT的文本

初始化框架上的内容,应该位于框架类的构造函数中

CComDlg::CComDlg(CWnd* pParent /*=NULL*/)

初始化ICON:m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON_EARTH); // 图标改成地球
    

  初始化发送EIDT的文本:  m_strSend = "My first SerialPortTool!";

2)、初始化下拉列表

初始化下拉列表位于入口函数中

入口函数:

CComDlg::OnInitDialog

初始化串口号,波特率,校验位,数据位,停止位 

    m_cboPort.SetCurSel(0);
    m_cboBaudRate.SetCurSel(4);
    m_cboCheck.SetCurSel(0);
    m_cboDataBit.SetCurSel(3);
    m_cboStopBit.SetCurSel(0);

3)、获取我们界面中的设置到CMscomm类中的对象中

UI的串口设置中的打开按钮,添加打开按钮事件。

UpdateData(TRUE); //将控件中的内容同步到变量中,我们操作控件就相当于操作变量。

    CString strOpen;//strOpen来获得按钮上面的文字内容。
    GetDlgItemText(IDC_BUTTON_OPEN, strOpen);
    
    if(strOpen == "打开")
    {    //1、执行打开串口操作

        m_mscomm.put_InBufferSize(1024); //接收缓冲区  
        m_mscomm.put_OutBufferSize(1024);//发送缓冲区   
        m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取  
        m_mscomm.put_InputMode(CMscomm::comInputModeBinary);//以二进制方式读写数据   
        m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
        
        //2、获取我们界面中的设置到CMscomm类中的对象中
 &nbs

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值