一、数据的接收和显示

        1、在SerialPortTestDlg.h文件中添加OnComm函数声明,该函数在串口“字符接收消息”后进行处理,字符显示。

  1. /*————————————-
  2.  * SerialPortTestDlg.h文件
  3.  *————————————-*/
  4. class CSerialPortTestDlg : public CDialog
  5. {
  6. // Construction
  7. public:
  8.     CSerialPort m_SerialPort; //CSerailPort类对象
  9.     BOOL m_bSerialPortOpened; //标志串口是否打开
  10.     //省略自动生成代码…
  11. protected:
  12.     // Generated message map functions
  13.     //{{AFX_MSG(CSerialPortTestDlg)
  14.         //省略自动生成代码…
  15.     /*—————————————-
  16.          * OnComm函数声明,该函数在串口“字符接收”
  17.          * 消息后进行相应处理,显示问题。
  18.          *—————————————-*/
  19.     afx_msg LONG OnComm(WPARAM ch, LPARAM port);
  20.     
  21.     afx_msg void OnButtonOpen();
  22.     afx_msg void OnButtonClose();
  23.     afx_msg void OnButtonSend();
  24.     //}}AFX_MSG
  25.     DECLARE_MESSAGE_MAP()
  26. };

        2、在SerialPortTestDlg.cpp文件中进行消息对应(字符接收消息WM_COMM_RXCHAR)。

  1. /*———————————————-
  2.  * SerialPortTestDlg.cpp文件
  3.  *———————————————-*/
  4. BEGIN_MESSAGE_MAP(CSerialPortTestDlg, CDialog)
  5.     //{{AFX_MSG_MAP(CSerialPortTestDlg)
  6.     ON_WM_SYSCOMMAND()
  7.     ON_WM_PAINT()
  8.     ON_WM_QUERYDRAGICON()
  9.     /*———————————————-
  10.          * WM_COMM_RXCHAR消息<—->OnComm函数   映射声明
  11.          *———————————————-*/
  12.     ON_MESSAGE(WM_COMM_RXCHAR, OnComm)  
  13.     
  14.     ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen)
  15.     ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose)
  16.     ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)
  17.     //}}AFX_MSG_MAP
  18. END_MESSAGE_MAP()

         3、在SerialPortTestDlg.cpp文件中加入OnComm函数实现。

  1. /*——————————————————
  2.  * OnComm函数实现
  3.  * 触发条件:当输入缓冲区有字符时,有消息触发
  4.  * 执行结果:字符接收,并显示在文本框m_strEditReceiveMsg
  5.  *——————————————————*/
  6. LONG CSerialPortTestDlg::OnComm(WPARAM ch, LPARAM port)
  7. {
  8.     m_strEditReceiveMsg += ch;//接收字符
  9.     UpdateData(FALSE);  //将接收到的字符显示在接收编辑框中
  10.     return 0;
  11. }

二、数据的发送

  1. /*———————————————————–
  2.  * 功    能:发送字符
  3.  * 执行条件:点击“发送”按钮时(ButtonSend)
  4.  * 执行结果:文本框m_strEditSendMsg中文字被发送。
  5.  *———————————————————-*/
  6. void CSerialPortTestDlg::OnButtonSend() 
  7. {
  8.     // TODO: Add your control notification handler code here
  9.     if(!m_bSerialPortOpened) return//检查串口是否打开,如果没打开,退出
  10.     
  11.     //发送信息处理
  12.     UpdateData(TRUE); //读入编辑框中的数据
  13.     m_SerialPort.WriteToPort((LPCTSTR)m_strEditSendMsg);//发送数据
  14. }

三、总结:

     连接串口成功后,如果输入缓冲区有字符,将会被显示到接收文本框内,如果点击发送按钮,将会把输入文本框内数据发送到该串口的输出缓冲区内。数据将会通过该串口,与连接的另一个串口进行数据通信。  

版权声明:本文为cnlht原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cnlht/archive/2008/11/20/9495768.html