| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 
							- #pragma once
 
- #include <CSM315Protocol.h>
 
- //帧总体结构
 
- struct StFrame
 
- {
 
- 	BYTE fheader[5];	//帧头:字符型 5字节“qknet”(71 6B 6E 65 74)
 
- 	BYTE protocode;		//协议码:此版本协议码为0x02H.
 
- 	BYTE dataversion;	//数据版本:此版本号由道岔缺口厂家提供给监测厂家。若监测接收到的数据版本类型和厂家提供的不一致,则不处理接收的数据。
 
- 	BYTE ftype;			//帧类型:0x0FH表示心跳帧,0x8FH表示数据帧。
 
- 	DWORD datalen;		//数据长度
 
- 	LPVOID lpdata;		//数据
 
- 	DWORD ftail;		//帧尾:填充4个字节的0xFF。
 
- 	//新增一些维护型字段
 
- 	FRAME_KIND e_frmKind;
 
- 	StFrame()
 
- 	{
 
- 		memset(this, 0, sizeof(StFrame));
 
- 		memcpy_s(fheader, 5, FRAME_HEADER_315, 5);
 
- 		protocode = PROTOCAL_CODE;
 
- 		dataversion = PROTOCAL_DATAVERSION;
 
- 		ftail = FRAME_TAIL_315;
 
- 		e_frmKind = GENERAL;
 
- 	}
 
- };
 
- //基础命令数据结构,所有数据命令都包含该格式,解析数据时可用此结构判断命令类型,然后再用相应数据结构解析
 
- typedef struct
 
- {
 
- 	BYTE cmdid;			//请求命令的命令码
 
- }StDataBasic;
 
- class CCSM315ProtocolEx : public CCSM315Protocol
 
- {
 
- public:
 
- 	//static BOOL Parse(StFrame&, LPVOID, int, int dir = 1);//解析  JHD->微机监测数据包(JHD就是站机端)
 
- 	//buf指向数据内容 len数据内容的长度  返回data 和 最新位置的buf  LPVOID*只是为了方便返回最新位置
 
- 	static string ParseDataFrm(StFrame& data, LPVOID* buf, int len, int dir);
 
- 	static string ToString(LPVOID, int, int dir = 1);
 
- 	static string GetOptDirDesc(int direct);
 
- 	//采集类型
 
- 	static string GetAcqTypeDesc(int acqtype);
 
- 	//报警类型
 
- 	static string GetAlarmTypeDesc(int alarmID);
 
- 	//曲线类型
 
- 	static string GetCurveTypeDesc(int curvetype);
 
- public:
 
- 	//返回月份的天数
 
- 	static int GetDaysOfMonth(int y, int m);
 
- 	//时间有效
 
- 	static bool IsValid(const SYSTEMTIME& sDT);
 
- 	//时间差
 
- 	static int CalcTimePassSecond(SYSTEMTIME* stLast, SYSTEMTIME* stNow = NULL, BOOL bReturnOriginalVal = FALSE);
 
- public:
 
- 	//释放内存,dir: 数据包方向  0-微机监测->JHD  1-JHD->微机监测
 
- 	static BOOL Release(StFrame& data, int dir);
 
- };
 
 
  |