PIDSClientResultMsg.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #include <iostream>
  3. #include "PIDSDataDefine.h"
  4. #include <map>
  5. using namespace std;
  6. struct CrowdednessData
  7. {
  8. int Crowdedness;
  9. int Num;
  10. };
  11. class PIDSClientResultMsg
  12. {
  13. public:
  14. // 列车线路号
  15. int TrainLine;
  16. int Train;
  17. std::map<int, CrowdednessData> data;
  18. public:
  19. PIDSClientResultMsg(){}
  20. ~PIDSClientResultMsg(){}
  21. void Serialization(uint8_t* data)
  22. {
  23. data[0] = PIDS_DATA_HEAD;
  24. data[1] = PIDS_SRC_TC1;
  25. data[2] = PIDS_SRC_TYPE_MIVA;
  26. // IP
  27. data[3] = 172;
  28. data[4] = 0;
  29. data[5] = 0;
  30. data[6] = 1;
  31. int16_t length = 36;
  32. data[7] = (length & 0x00FF);
  33. data[8] = (length & 0xFF00) >> 8;
  34. // 填充数据
  35. // Time
  36. getBCDTime(data + 9);
  37. data[15] = this->TrainLine;
  38. data[16] = this->Train;
  39. int id = 0;
  40. for(int i=0; i < 18; i+=3)
  41. {
  42. data[17+i] = this->data[id].Crowdedness;
  43. data[18+i] = (this->data[id].Num & 0x00FF);
  44. data[19+i] = (this->data[id].Num & 0xFF00) >> 8;
  45. id++;
  46. }
  47. int16_t crc = Crc16::GetCRC16(data, 9, length);
  48. data[45] = (crc & 0x00FF);
  49. data[46] = (crc & 0xFF00) >> 8;
  50. // 数据尾
  51. data[47] = PIDS_DATA_END;
  52. }
  53. void ObjectToJson(std::string& json)
  54. {
  55. json+="\r\n";
  56. }
  57. };