基于MFC的串口类CSerialPort的使用 ③

https://blog.csdn.net/qq_33723441/article/details/54598457

1、在Dlg.h文件中添加头文件

 #include "CSerialPort.h"
  
  
  • 1

2、在Dlg.h文件中定义串口类

public:
    CSerialPort m_SerialPort;           //定义串口类
  
  
  • 1
  • 2

3、在Dlg.h文件中定义串口类的实现函数

afx_msg LONG OnComm(WPARAM ch, LPARAM port);  //串口字符接收消息
  
  
  • 1

4、在Dlg.c文件中添加消息和函数的绑定

BEGIN_MESSAGE_MAP(***Dlg, CDialogEx)
    ON_MESSAGE(WM_COMM_RXCHAR, OnComm)        //添加消息和函数之间的绑定
END_MESSAGE_MAP()
  
  
  • 1
  • 2
  • 3

5、在Dlg.c文件中的OnInitDialog()函数进行串口初始化

    if (m_SerialPort.InitPort(this,1,115200))//串口1,波特率115200
    {
        m_SerialPort.OpenListenThread();    //启动串口监视线程
    }
    else
    {
        AfxMessageBox(_T("COM1没有发现,或被其它设备占用"));
    }
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6、在Dlg.c文件中添加接收函数

LONG CLD_PowerDlg::OnComm(WPARAM ch, LPARAM port)  //串口接收函数的实现,对接收数据进行处理
{  
    UpdateData(TRUE);                               //读取编辑框内容
    if (port==1)                                    //判断端口是否是1号,不是则退出
    {
        rx_data[rx_count]=(byte)ch;
        rx_count++;

/*************************************接收数据处理****************************************/
            if((rx_data[0]==0x55) && (rx_data[1]==0xAA)&& (rx_data[2]==0xdc) && (rx_data[6]==0x44))     //判断接收数据类型
            {
                if(rx_data[7]==0x00)                                        //LD电源状态判断
                    m_Butten_Power_False.SetIcon(IDI_ICON_RED32);           //LD电源故障,添加红色报警图片
                else
                    m_Butten_Power_False.SetIcon(IDI_ICON_GREEN32);         //LD电源正常,添加绿色图片
                m_Detect_Current = ((rx_data[8] << 8) + rx_data[9])/10;     //LD回检电流值
                m_PulseWidth = (rx_data[10] << 8) + rx_data[11];            //LD电源脉宽
                m_Frequency  =  rx_data[14];                                //LD电源频率
            }

    }

    UpdateData(0);              //更新编辑框内容
    return 0;   
}
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

7、串口发送按钮函数举例:

    char *a=NULL;
    a = new char[12];
    a[0]=0x55;  a[1]=0xAA;  a[2]=0xdc;               //数据字头标识
    a[3]=0x06;
    a[4]=0x00;  
    a[5]=0x03;  
    a[6]=0xbb;
    a[7]=0x00;          
    a[8]=0xcc;  a[9]=0x33;  a[10]=0xc3; a[11]=0x3c;  //数据字头结尾,校验数据
    m_SerialPort.WriteData(a,12);                    //发送
    a=NULL;
    delete a;
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

8、串口CSerialPort类源程序文件在我的CSDN中下载,链接如下:
http://download.csdn.net/download/qq_33723441/9740248

猜你喜欢

转载自blog.csdn.net/baidu_37503452/article/details/87011846