www.pudn.com > gps-time.rar > ComPort.h


// ComPort.h: interface for the CComPort class. 
// 
////////////////////////////////////////////////////////////////////// 
//串口类:管理当前串口的操作、连接设备的管理、接收数据的分析处理。 
#if !defined(AFX_COMPORT_H__F368C602_1947_11D5_932F_5254AB322796__INCLUDED_) 
#define AFX_COMPORT_H__F368C602_1947_11D5_932F_5254AB322796__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
#include "combuff.h" 
#include "constant.h" 
 
class CCommunication; 
class CRegionSocket; 
class CComPort; 
typedef CTypedPtrArray CComPortArray; 
 
typedef struct CUserModes 
{ 
	BYTE ID; 
	BYTE Mode; 
}CUserMode; 
 
class CComPort :public CObject  
{ 
public:		 
	void SendSelfControl(); 
	CUserMode mUserMode; 
	int GetMyDeviceNo(); 
	CComPort(CCommunication *pComm); 
	virtual ~CComPort(); 
	//对串口的操作、设置参数等 
	void Close();//关闭串口 
	BOOL Open();//打开串口 
	void SetPamera(BYTE Port,long BitRate,BYTE DeviceType,BYTE DeviceNo,CString Depict); 
	void WaitCommEvent();//waits for an event to occur for a specified communications device 
	int GetState() { if (!m_bPortOpen) return DEV_COMCLOSED;	// 取通讯口的工作状态 
					 else return DEV_COMOPENED; } 
	HANDLE GetReceiveEvent() { ASSERT(m_osWait.hEvent != NULL); return m_osWait.hEvent; }   // 取通讯口接受数据事件句柄 
	//对设备的操作 
	void AdjustDevConnect();//判断设备是否超时 
	//对收到的数据处理分析 
	void ReadComData();//接收数据,触发数据处理线程。 
	BOOL TransmitTable(BYTE tDeviceNo, BYTE *sBuff,int sCount);//向中心转发数据 
	BOOL ProcessTable();//分析数据 
	BOOL SendTable(BYTE *sBuff,int sCount);//发送数据给设备 
	void NotifyStatus(BOOL iConnected);//向中心发送设备状态信息 
 
	BYTE m_ComPort;  //端口号 
	long m_ComBitRate;  //波特率 
	BYTE m_DeviceType;  //设备类 
	BYTE m_DeviceNo;     //设备号 
	CString m_Depict; 
 
	BYTE m_ConfigreDeviceType; 
	BYTE m_ConfigreDeviceNo; 
 
	BOOL     m_bPortOpen;   //端口是否成功打开 
	DWORD m_dwEventMask;// 串口所发生事件类型的掩码 
	HANDLE m_hcom ;//串口句柄 
	CCommunication *m_pOwner;		//指向串口管理类 
	HANDLE m_hProcessEvent;				// 通知表格处理线程处理数据的事件 
    BOOL   IsConnected;  //是否连接,只支持一个路口设备连接 
	int    nTimeCount; 
	 
	int TimeOutCount; //连接超时     
     
private : 
	void AskCntProc(BYTE sDeviceType,BYTE sDeviceNo);//应答请求连接 
	void QryCmdProc(BYTE sDeviceType,BYTE sDeviceNo);//应答查询连接 
	void SendAck(BYTE sDeviceType,BYTE sDeviceNo);//发送应答请求连接 
	void SendAckQry(BYTE sDeviceType,BYTE sDeviceNo);//发送查询请求连接 
	OVERLAPPED m_osWrite; 
	OVERLAPPED m_osRead; 
	OVERLAPPED m_osWait; 
	//对串口的操作 
	BOOL WriteComm(BYTE* MyBuff, int wCount);//写串口 
	int ReadComm(BYTE* MyBuff, int rCount);//读串口 
	CComBuff MyComBuff;  //内部包含的通信缓冲区 
 
	// lv change 060809 该函数变量为类变量 
	BYTE TmpBuffReadData[m_MaxTableLen]; 
	BYTE TmpBuff[m_MaxTableLen]; 
	BYTE  rBuff[m_MaxTableLen]; 
}; 
 
#endif // !defined(AFX_COMPORT_H__F368C602_1947_11D5_932F_5254AB322796__INCLUDED_)