| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #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);
- };
|