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

📄 comport.h

📁 gps对时
💻 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<CObArray, CComPort*> 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_)

⌨️ 快捷键说明

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