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

📄 comm.h2

📁 完整,实用的VC写的控制系统,下位分析设备采样控制系统.
💻 H2
字号:
// From Win32 SDK's TTY Sample & TAPICOMM Sample
// Modify by FangHong, 1996-1997

#ifndef _COMM__H
#define _COMM__H

// ascii definitions
const BYTE	ASCII_XON = 0x11;
const BYTE	ASCII_XOFF = 0x13;

class	CWnd;
class	CCommInfo
{
public:
	CCommInfo();
	~CCommInfo();

public:
	// for the Comm Device already opened, like TAPI
	BOOL	Create(CWnd*  pNotifyWnd, DWORD  dwCommBaseCommandID,
		BYTE*  pReadBuf, int  nReadBufLen, HANDLE  hCommFile);
	// for manual opened Comm Device
	BOOL	Create(CWnd*  pNotifyWnd, DWORD  dwCommBaseCommandID,
		BYTE*  pReadBuf, int  nReadBufLen, int  nPort,
		DWORD  dwBaudRate, BYTE  byteFlowCtrl, BYTE  byteDataBits = 8,
		BYTE  byteStopBits = ONESTOPBIT, BYTE  byteParity = NOPARITY, BOOL  bRTS = FALSE);

	BOOL	CloseConnection(void);
	BOOL	OpenConnection(void);

	void	SuspendReadThread(void);
	void	ResumeReadThread(void);
	void	CloseReadThread(void);
	void	CloseWriteThread(void);

	BOOL	WriteCommBlock(LPCTSTR  lpByte, DWORD  dwBytesToWrite);

	static DWORD	ReadThreadProc(LPVOID  lpvParam);
	static DWORD	WriteThreadProc(LPVOID  lpvParam);

protected:
	BOOL	SetupReadEvent(LPOVERLAPPED  lpOverlappedRead,
		LPDWORD  lpnNumberOfBytesRead);
	BOOL	HandleReadEvent(LPOVERLAPPED  lpOverlappedRead,
		LPDWORD  lpnNumberOfBytesRead);
	BOOL	HandleReadData(DWORD  dwSizeofBuffer);
	BOOL	HandleCommEvent(LPOVERLAPPED  lpOverlappedCommEvent,
		LPDWORD  lpfdwEvtMask, BOOL  bRetrieveEvent);

	BOOL	SetupWaitCommEvent(LPOVERLAPPED  lpOverlappedCommEvent,
		LPDWORD  lpfdwEvtMask);
	BOOL	HandleWriteData(LPOVERLAPPED  lpOverlappedWrite,
		LPCSTR  lpszStringToWrite, DWORD  dwNumberOfBytesToWrite);

	BOOL	PostCommError(void);

public:
	enum
	{
		ID_COMM_READ,
		ID_COMM_ERROR,
		ID_COMM_EVENT_NUMBER
	};
	enum
	{
		PWM_COMMWRITE = WM_USER + 1,
	};

	BOOL	m_bConnected;

	BOOL	m_bRTS;	// special for connection with DIANTAI?

	BYTE	m_nPort;
	BYTE	m_byteFlowCtrl;
	BYTE	m_byteParity;
	BYTE	m_byteStopBits;
	BYTE	m_byteDataBits;
	DWORD	m_dwBaudRate;

	HANDLE	m_hReadThread;
	DWORD	m_dwReadThreadID;
	HANDLE	m_hWriteThread;
	DWORD	m_dwWriteThreadID;

	HANDLE	m_hCommFile;
	HANDLE	m_hCloseEvent;

	CWnd*	m_pNotifyWnd;
	DWORD	m_dwCommBaseCommandID;
	BYTE*	m_pReadBuf;
	int	m_nReadBufLen;

	static CString	m_strCommNameFmt;
};

#endif	// _COMM__H

⌨️ 快捷键说明

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