www.pudn.com > SMS.rar > HwCOM.h


// HwCOM.h: interface for the CHwCOM class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_COM_H__12A72EDD_A7FD_48A8_A0FC_AEBFCA2C5C25__INCLUDED_) 
#define AFX_COM_H__12A72EDD_A7FD_48A8_A0FC_AEBFCA2C5C25__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
#include "..\..\global.h" 
#include  
 
#define MAX_COM_BUFSIZE				10*1024 
#define INVALID_COM_NO				255		// 无效的COM口 
#define MAX_ANSWER_NUM				5		// 发送应答码最大个数(一般是发1个字节) 
#define MAX_RETYR_TIMES				5 
 
// 等待数据超时时间(毫秒) 
#define WAIT_DATA_TIMEOUT			1000 
// 最大通信错误次数 
#define COM_REMOVE_MAX_ERROR		10		// COM设备连续错误多少次就算 COM 丢失 
 
#include  
 
class DLL_INTERNAL CHwCOM  
{ 
public: 
	void ClearComm(BOOL bClearRead); 
	int Write(char *data, int size); 
	int Read(char *data, int size); 
	DWORD GetCommInputBuffLen (); 
	CHwCOM (); 
	~CHwCOM(); 
	DWORD GetCommOutBufRemainBytes(); 
	BOOL WaitForDataToRead(int iBytes,int timeout = WAIT_DATA_TIMEOUT); 
	void ClearCommBufByRead(); 
	void CloseCOM(); 
	BOOL OpenCOM(int nComNO, int nBaudRate=576000, BOOL bQuiet=FALSE); 
 
//属性 
public: 
	HANDLE m_handleCOM; 
	int m_nComNo; 
	CCriticalSection *m_pCSFor_OpenCOM; 
private: 
	int Transmit(char *data, int size, BOOL bRead); 
	COMMPROP m_CommProp; 
	// 打开串口的临间值,所有操作串口的线程都应该使用这个临间值 
	// 这样可以保证不会出现同一串口被几个线程同时打开的情况 
 
	CCriticalSection *m_pCSFor_TransmitCOM; 
	BOOL m_bDeviceGotway; 
 
}; 
 
#endif // !defined(AFX_COM_H__12A72EDD_A7FD_48A8_A0FC_AEBFCA2C5C25__INCLUDED_)