www.pudn.com > EvsCommun.rar > SerialPort.h


#pragma once 
 
#define WM_COMM_BREAK_DETECTED		WM_COMM_USER+1 
#define WM_COMM_CTS_DETECTED		WM_COMM_USER+2 
#define WM_COMM_DSR_DETECTED		WM_COMM_USER+3 
#define WM_COMM_ERR_DETECTED		WM_COMM_USER+4 
#define WM_COMM_RING_DETECTED		WM_COMM_USER+5 
#define WM_COMM_RLSD_DETECTED		WM_COMM_USER+6 
#define WM_COMM_RXCHAR				WM_COMM_USER+7 
#define WM_COMM_RXFLAG_DETECTED		WM_COMM_USER+8 
#define WM_COMM_TXEMPTY				WM_COMM_USER+9 
 
 
class CSerialPort 
{ 
public: 
	CSerialPort(void); 
	~CSerialPort(void); 
private: 
	DCB m_Dcb; 
	UINT m_nBufferIn; 
	UINT m_nBufferOut; 
	COMMTIMEOUTS m_nTimeOut; 
	volatile HANDLE m_hCommu; 
	volatile UINT m_nPort; 
	OVERLAPPED m_OvlpRead; 
	OVERLAPPED m_OvlpWrite; 
	//volatile HANDLE m_comHandle; 
	void Init(void); 
public: 
	 
	void Close(void); 
private: 
	// 记录串口是否已经打开 
	bool m_bOpen; 
public: 
	bool Open(UINT nPort,DWORD BaudRate=9600, BYTE ByteSize = 8,  
			  BYTE Parity = NOPARITY, BYTE StopBits = ONESTOPBIT); 
	//call before opening the port 
	void InitBufferSize(UINT nBufferIn, UINT nBufferOut); 
	bool WriteData(BYTE* pWriteBuff, WORD nWrite); 
				//发送数据时将清空发送和接收数据缓冲区, 
				//并终止当前的发送和接收操作 
	DWORD ReadData(BYTE* pReadBuff, WORD nRead); 
	bool SetParityBit(BYTE nParity); 
};