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

📄 serialport.h

📁 串口程序可以免费使用,希望大家喜欢,
💻 H
字号:
// SerialPort.h: interface for the CSerialPort class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SerialPort_H__AD808C48_F413_484A_9B54_A481FA3D2B7E__INCLUDED_)
#define AFX_SerialPort_H__AD808C48_F413_484A_9B54_A481FA3D2B7E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <afxmt.h>

#define IDU_COMM_EVENT	(WM_USER + 100)
#define EV_DISCONNECT	192

class CSerialPort  
{
public:
	void AssertConnected();
	CWinThread * GetListener();
	CString ReadAll();

	CWinThread * EnableListener(BOOL bEnable = TRUE);
	BOOL SetDCB(DCB * pDCB, int nHandshaking);

	enum
	{
		comNone,
			comXOnXOff,
			comRTS,
			comRTSXOnXOff
	};

	BOOL IsConnected();

	BOOL GetOverlappedResult(OVERLAPPED * pol, DWORD * pLength, BOOL bWait);
	BOOL GetTimeouts(COMMTIMEOUTS * cto);
	BOOL SetTimeouts(COMMTIMEOUTS * cto);
	BOOL Purge(DWORD nFlags);
	BOOL GetComStat(COMSTAT * pcs);
	UINT CommThread();

	BOOL ClearOutputBuffer();
	BOOL ClearInputBuffer();
	BOOL FlushOutputBuffer();

	BOOL SetDCB(DCB * pDCB);
	HANDLE GetHandle();
	BOOL Open(int nPort);

	BOOL GetDCB(DCB * pDCB);
	BOOL SetDCB(UINT nBaudRate, BYTE cParity = NOPARITY, BYTE nByteSize = 8, BYTE nStopBits = ONESTOPBIT);

	BOOL Open(CString sPort);
	void Close();

	CString Read(BOOL bWait = FALSE);
	DWORD Read(char *pBuffer, DWORD nLength, BOOL bWait = FALSE);
	DWORD Write(char *pBuffer, DWORD nLength, DWORD nWaitLimit = INFINITE);
	DWORD Write(CString sBuffer, DWORD nWaitLimit = INFINITE);

	static UINT CommThread(LPVOID pParam);

	//开启监视线程,以事件方式通知
	CWinThread * StartListener(DWORD nEventMask = EV_BREAK | EV_ERR | EV_RXCHAR);
	//开启监视线程,以消息方式通知
	CWinThread * StartListener(CWnd * pOwner, UINT nNotifyMessageID = IDU_COMM_EVENT, DWORD nEventMask = EV_BREAK | EV_ERR | EV_RXCHAR);
	
	CSerialPort();
	virtual ~CSerialPort();

private:

	CWnd * m_pOwner;
	CWinThread * m_pThread;
	UINT m_nNotifyMessageID;
	OVERLAPPED m_osRead; // 用于重叠读
	OVERLAPPED m_osWrite; // 用于重叠写

	BOOL m_bConnected;
	volatile HANDLE m_hHandle;
	volatile HANDLE m_hShutDownEvent;

protected:

	virtual void OnDisconnect();
	virtual void OnEvent(DWORD nEvent);
	virtual void OnEvRLSD();
	virtual void OnEvErr();
	virtual void OnEvDSR();
	virtual void OnEvBreak();
	virtual void OnEvTxEmpty();
	virtual void OnEvRXFlag();
	virtual void OnEvRxChar();
	virtual void OnEvRing();
	virtual void OnEvCTS();
};

#endif // !defined(AFX_SerialPort_H__AD808C48_F413_484A_9B54_A481FA3D2B7E__INCLUDED_)

⌨️ 快捷键说明

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