serialport.h
来自「基于双机互联系统的SPCP串口通信协议编写的串口通信底层类源代码」· C头文件 代码 · 共 69 行
H
69 行
#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
{
CSerialPortEx();
virtual ~CSerialPortEx();
//串口初始化
BOOL InitPort(CWnd* pPortOwner,UINT portnr=1,UINT baud=19200,
char parity='N',UINT databits=8,UINT stopbits=1,DWORD
dwCommEvents=EV_RXCHAR|EV_CTS,UINT nBufferSize=512);
BOOL StartMonitoring(); //开始监视
BOOL RestartMonitoring(); //重新开始监视
BOOL StopMonitoring(); //停止监视
//属性
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 + =
减小字号Ctrl + -
显示快捷键?