123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #pragma once
- #include <iostream>
- #include "PIDSDataDefine.h"
- #include <map>
- using namespace std;
- class PIDSServerResultMsg
- {
- public:
-
- int CurrentSite;
-
- int NextSite;
-
- int StartSite;
-
- int EndSite;
-
- bool TimeFlag;
-
- uint8_t DoorFlag;
-
- uint8_t PIDSFlag;
- std::map<int,int> DynamicLoad;
- public:
- PIDSServerResultMsg(){};
- ~PIDSServerResultMsg(){};
-
-
- int32_t Deserialization(uint8_t *data, int length)
- {
-
- if(data[0] != PIDS_DATA_HEAD || data[length-1] != PIDS_DATA_END) {
- ErrorL << "Incorrect data head and tail";
- return ERR;
- }
-
- uint16_t DataLength = ((uint16_t)data[8] << 8 | data[7]);
-
- int16_t crc = Crc16::GetCRC16(data, 9, DataLength);
-
-
-
-
- this->CurrentSite = data[9];
- this->NextSite = data[10];
- this->StartSite = data[11];
- this->EndSite = data[12];
- this->TimeFlag = data[13] ? true:false;
-
-
- this->DoorFlag = data[21];
- this->PIDSFlag = data[22];
-
- int id = 1;
- for(int i = 0; i < 12; i+=2){
- this->DynamicLoad[id] = (uint16_t)data[24 + i] << 8 | data[23 + i];
- id++;
- }
- return OK;
- }
- };
|