⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialport.h

📁 串口通信类编程中必不可少的一个类 定义了类函数
💻 H
字号:
#ifndef _SERIALPORT_H_
#define _SERIALPORT_H_

//定义检测到串状态改变后向父窗口发送的消息
#define WM_COMM_BREAK_DETECTED      WM_USER+1
#define WM_COMM_CTS_DETECTED        WM_USER+2
#define WM_COMM_DSR_DETECTED        WM_USER+3
#define WM_COMM_ERR_DETECTED        WM_USER+4
#define WM_COMM_RING_DETECTED       WM_USER+5
#define WM_COMM_RLSD_DETECTED       WM_USER+6
#define WM_COMM_RXCHAR              WM_USER+7
#define WM_COMM_RXFLAG_DETECTED     WM_USER+8
#define WM_COMM_TXEMPTY_DETECTED    WM_USER+9

class CSerialPortEx
{
  public:

        //构造与析构函数
       CSerialPortEx();
        
        virtual       ~CSerialPortEx();
      
       //串口初始化
       BOOL      InitPort(CWnd*pPortOwner,UINT portnr = 1,UINT baud = 19200,
                              char parity = 'N',UINT databits = 8,UINT stopsbits = 1,DWORD
                              dwCommEvents = EV_RXCHAR|EV_CTS,UINT nBufferSize = 512);
       //开始/重新开始/停止监视

       BOOL        StartMonitoring();
       BOOL        RestartMonitoring();
       BOOL        StopMonioring();
       
      //属性
 
       DWORD       GetWriteBufferSize();
       DWORD       GetCommEvents();
       DCB         GetDCB();
 

 public:
            
       void        WriteToPort(BYTE*string,int nLength);
       void        WriteToPort(CString str);
 
 protected:
   
       void  ProcessErrorMessage(char* ErrorText);
       static UINT  CommThread(LPVOID pParam);
       static void  ReceiveChar(CSerialPortEx* port,COMSTAT comstat);
       static void  WriteChar(CSerialPortEx* port);
       
 public:
     
       static BYTE* ReadBlock(CSerialPortEx *port,int& readLen);

 protected:
 
       CWinThread*              m_Thread;             //监视线程
       CRITICAL_SECTION m_csCommunicationSync;        //同步对象
       
       //事件句柄
       HANDLE           m_hShutdownEvent;
       HANDLE           m_hComm;
       HANDLE           m_hWriteEvent;
       HANDLE           m_hEventArray[3];
     
       OVERLAPPED       m_ov;
       COMMTIMEOUTS     m_CommTimeouts;
    
       CString          m_strRec;
       int m_nToSend;

 public:
      
       CWnd*             m_pOwner;               //父窗口
   

       //属性
       UINT              m_nPortNr;
       BYTE*             m_szWriteBuffer;
       DWORD             m_dwCommEvents;
       DWORD             m_nWriteBufferSize;
       DCB               m_dcb;

       BOOL              m_bThreadAlive;
       BOOL              m_bBlockRead;
}
#endif _SERIALPORT_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -