📄 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<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 + -