#pragma once #include "JHDGlobalDefine.h" struct ImgInfoRequest { int iZZJNo; DWORD time; }; struct LastImgInfoRequest { int iZZJNo; }; struct ImgListRequest { WORD iZZJNo; DWORD time; DWORD endTime; BYTE imgType; }; struct JEP_LEN_REGION { DWORD dir : 1; //方向,0-下行(主站→采集器),1-上行(采集器→主站) DWORD ceid : 10; DWORD cmdid : 5;//恒为0x1B DWORD flag : 4;//FLAG恒为0x0000 DWORD dlen : 12;//数据长度,本协议最大为4095 };//共4字节 class PktAssembleBuff { public: void Init() { iAbandonBytes = 0; iPktLen = 0; m_iStreamLen = 0; m_protocolType = PROTOCOL_UNKNOWN; iPktBuffSize = 0; m_iStreaBuffSize = 0; if (m_tcpStreamData) { delete[] m_tcpStreamData; m_tcpStreamData = NULL; m_iStreaBuffSize = 0; } if (pkt) { delete pkt; pkt = NULL; } } void Resize(BYTE*& pData, int& iLen, int iNewSize); void ResizeStreamBuff(int iNewSize); void ResizePopPktBuff(int iNewSize); //输入tcp流 void PushStream(BYTE* pData, int iLen); //输出包 //unknow对所有已知协议进行检测 //指定协议则只检测指定的协议 BOOL PopPkt(APP_LAYER_PROTO_TYPE cpt = PROTOCOL_UNKNOWN); BOOL PopAllAs(APP_LAYER_PROTO_TYPE cpt);//把所有的缓存数据当作一个指定协议取出 BYTE* pkt; int iPktBuffSize; int iPktLen; APP_LAYER_PROTO_TYPE m_protocolType; int iAbandonBytes; PktAssembleBuff() { pkt = NULL; m_tcpStreamData = NULL; Init(); } BOOL Request315Pkt(BYTE cmd, BYTE* pPkt, int& iLen, void* pInData = NULL); BYTE* m_tcpStreamData = nullptr; //TCP数据 int m_iStreaBuffSize = 0; //TCP数据分配的内存大小 int m_iStreamLen = 0; //当前数据长度 //int IsValidPkt_DSP(BYTE* pData, int iLen); int IsValidPkt_315(BYTE* pData, int iLen); //int IsValidPkt_JEP(BYTE* pData, int iLen); //int IsValidPkt_ModbusRTU(BYTE* pData, int iLen); //int IsValidPkt_JDSP(BYTE* pData, int iLen); //int IsValidPkt_WEBSOCKET(BYTE* pData, int iLen); };