串口数据通信程序实现(SerialPort类方法)

本文介绍了一个串口通信软件的设计与实现过程,包括如何接收和显示数据、如何发送数据等核心功能。通过具体的代码示例展示了如何使用串口进行数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据的接收和显示

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

  1. /*-------------------------------------
  2. *SerialPortTestDlg.h文件
  3. *-------------------------------------*/
  4. classCSerialPortTestDlg:publicCDialog
  5. {
  6. //Construction
  7. public:
  8. CSerialPortm_SerialPort;//CSerailPort类对象
  9. BOOLm_bSerialPortOpened;//标志串口是否打开
  10. //省略自动生成代码...
  11. protected:
  12. //Generatedmessagemapfunctions
  13. //{{AFX_MSG(CSerialPortTestDlg)
  14. //省略自动生成代码...
  15. /*----------------------------------------
  16. *OnComm函数声明,该函数在串口“字符接收”
  17. *消息后进行相应处理,显示问题。
  18. *----------------------------------------*/
  19. afx_msgLONGOnComm(WPARAMch,LPARAMport);
  20. afx_msgvoidOnButtonOpen();
  21. afx_msgvoidOnButtonClose();
  22. afx_msgvoidOnButtonSend();
  23. //}}AFX_MSG
  24. DECLARE_MESSAGE_MAP()
  25. };

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. ON_BN_CLICKED(IDC_BUTTON_OPEN,OnButtonOpen)
  14. ON_BN_CLICKED(IDC_BUTTON_CLOSE,OnButtonClose)
  15. ON_BN_CLICKED(IDC_BUTTON_SEND,OnButtonSend)
  16. //}}AFX_MSG_MAP
  17. END_MESSAGE_MAP()

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

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

二、数据的发送

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值