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

📄 serialport.h

📁 基于双机互联系统的SPCP串口通信协议编写的串口通信底层类源代码
💻 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
{
	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -