这几天一直再看串口相关知识,对于其总结为如下串口类:

头文件声明如下:

 1 #pragma once
 2 
 3 // 声明当串口接收到线程的时候调用的函数指针
 4 // 参数: 1,接收到的数据; 2,数据长度; 3,发送的目标地址
 5 typedef void (*DataArriveProc)(char *data, int len, DWORD dest);
 6 
 7 /***********************************
 8 1,实现一个串口类,用于进行串口的通信;
 9 2,其中的特性是,主动发送数据,被动接受
10   做出响应,其中开辟一个线程进型串口读取;
11 3,线程函数响应时,应该将接受到的数据转
12   发给使用此串口的上层应用;
13 ************************************/
14 class CSerialPort
15 {
16 public:
17     CSerialPort(void);
18     virtual ~CSerialPort(void);
19 
20     // 串口操作函数
21     BOOL OpenPort(LPCTSTR portName, DWORD baudRate, int dataBits, int stopBits, int parity, DataArriveProc proc, DWORD dest);
22     BOOL ClosePort();     // 关闭串口
23     DWORD WritePort(char *data, DWORD size);    // 往串口写数据
24 
25     // 串口读操作线程的操作函数
26     static UINT AFX_CDECL ReadPortProc(LPVOID lpParam);// 往串口读数据的线程函数
27     BOOL  Activate();   // 激活串口的读操作
28     BOOL  Deactivate(); // 取消串口的读操作
29     BOOL  IsActivate(); // 窗口是否已经准备好进行读操作
30 
31 private:
32     HANDLE m_hPortHandle; // 串口句柄
33     HANDLE m_hReadThread; // 读线程
34     BOOL   m_bReading;    // 读线程是否处于工作状态
35     DCB    m_dcbPort;     // 串口的工作参数
36     COMMTIMEOUTS m_tmOut; // 串口通信超时参数
37 
38     DataArriveProc m_pDataArriveProc; // 接收到数据后的调用的方法
39     DWORD m_dwDestAddress;  // 数据发送的目的地址
40 };
View Code

相关文章:

  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-03-06
  • 2021-09-04
  • 2021-11-19
  • 2021-11-19
  • 2021-04-18
  • 2021-11-19
  • 2021-10-19
相关资源
相似解决方案