GlobalHead.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #pragma once
  2. #include <map>
  3. #include <vector>
  4. #include <string>
  5. static std::map<int, std::string> g_mapAcqTypeIDtoString=
  6. {
  7. {0x101,"定位测力值"},
  8. {0x102,"反位测力值"},
  9. {0x103,"转换阻力测力值"},
  10. {0x104,"温度"},
  11. {0x105,"湿度"},
  12. {0x201,"定位密贴"},
  13. {0x202,"定位开程"},
  14. {0x203,"反位密贴"},
  15. {0x204,"反位开程"},
  16. {0x205,"轨间距离"},
  17. {0x206,"直轨横移"},
  18. {0x207,"曲轨横移"},
  19. {0x208,"直尖轨爬行"},
  20. {0x209,"曲尖轨爬行"},
  21. {0x210,"转辙机振动"},
  22. {0x301,"密贴缺口值"},
  23. {0x302,"斥离缺口值"},
  24. {0x303,"左表示杆行程"},
  25. {0x304,"右表示杆行程"},
  26. {0x305,"密贴缺口偏移值"},
  27. {0x306,"密贴缺口标准值"},
  28. {0x307,"油位"},
  29. {0x308,"温度"},
  30. {0x309,"湿度"},
  31. {0x310,"油压曲线"},
  32. {0x311,"电流"},
  33. {0x312,"电压"}
  34. };
  35. static std::map<std::string, int> g_mapAcqTypeStringtoID =
  36. {
  37. {"定位测力值", 0x101 },
  38. { "反位测力值" ,0x102 },
  39. { "转换阻力测力值" ,0x103 },
  40. { "温度" ,0x104 },
  41. { "湿度" ,0x105 },
  42. { "定位密贴" ,0x201 },
  43. { "定位开程" ,0x202 },
  44. { "反位密贴" ,0x203 },
  45. { "反位开程" ,0x204 },
  46. { "轨间距离" ,0x205 },
  47. { "直轨横移" ,0x206 },
  48. { "曲轨横移" ,0x207 },
  49. { "直尖轨爬行" ,0x208 },
  50. { "曲尖轨爬行" ,0x209 },
  51. { "转辙机振动" ,0x210 },
  52. { "密贴缺口值" ,0x301 },
  53. { "斥离缺口值" ,0x302 },
  54. { "左表示杆行程" ,0x303 },
  55. { "右表示杆行程" ,0x304 },
  56. { "密贴缺口偏移值" ,0x305 },
  57. { "密贴缺口标准值" ,0x306 },
  58. { "油位" ,0x307 },
  59. { "温度" ,0x308 },
  60. { "湿度" ,0x309 },
  61. { "油压曲线" ,0x310 },
  62. { "电流" ,0x311 },
  63. { "电压" ,0x312 },
  64. };
  65. #pragma pack(push, 1)
  66. struct C315CommData
  67. {
  68. std::vector<BYTE> m_vecData;
  69. ~C315CommData()
  70. {
  71. m_vecData.clear();
  72. }
  73. const BYTE * const GetData() const { return m_vecData.data(); }
  74. size_t GetDataSize()const { return m_vecData.size(); }
  75. void Clear_Data()
  76. {
  77. m_vecData.clear();
  78. }
  79. void Push_Data(const BYTE * lpData, WORD wSize)
  80. {
  81. //m_vecData.assign(lpData, lpData + wSize);
  82. if (wSize == 0) return;
  83. size_t nInsertPos = m_vecData.size();
  84. m_vecData.resize(nInsertPos + wSize);
  85. CopyMemory(m_vecData.data() + nInsertPos, lpData, wSize);
  86. }
  87. void Update_Data(int nIdx, const void *lpData, WORD wSize)
  88. {
  89. //m_vecData.assign(lpData, lpData + wSize);
  90. if (wSize == 0) return;
  91. if (nIdx + wSize > m_vecData.size()) return;
  92. CopyMemory(m_vecData.data() + nIdx, lpData, wSize);
  93. }
  94. void Reserve(DWORD dwSize)
  95. {
  96. size_t nInsertPos = m_vecData.capacity();
  97. if (dwSize > nInsertPos)
  98. m_vecData.reserve(dwSize);
  99. }
  100. template<class T>
  101. void Push_Data(T d)
  102. {
  103. Push_Data((const BYTE*)&d, sizeof(T));
  104. }
  105. template<class T>
  106. void Push_Data(T *d, WORD wSize)
  107. {
  108. Push_Data((const BYTE*)d, wSize);
  109. }
  110. void Push_Tail()
  111. {
  112. static const BYTE cbTail[4] = { 0xFF, 0xFF, 0xFF, 0xFF };
  113. Push_Data(cbTail, 4);
  114. }
  115. void Update_FrameLen(DWORD dwFrameLen)
  116. {
  117. size_t nDataSize = m_vecData.size();
  118. if (nDataSize >= 12)
  119. {
  120. CopyMemory(m_vecData.data() + 8, &dwFrameLen, sizeof(dwFrameLen));
  121. }
  122. }
  123. void Update_FrameLen()
  124. {
  125. DWORD nDataSize = m_vecData.size();
  126. if (nDataSize >= 12)
  127. {
  128. nDataSize -= 16; //帧内容长度
  129. CopyMemory(m_vecData.data() + 8, &nDataSize, sizeof(nDataSize));
  130. }
  131. }
  132. };
  133. #pragma pack(pop)