#pragma once #include #include #include static std::map g_mapAcqTypeIDtoString= { {0x101,"定位测力值"}, {0x102,"反位测力值"}, {0x103,"转换阻力测力值"}, {0x104,"温度"}, {0x105,"湿度"}, {0x201,"定位密贴"}, {0x202,"定位开程"}, {0x203,"反位密贴"}, {0x204,"反位开程"}, {0x205,"轨间距离"}, {0x206,"直轨横移"}, {0x207,"曲轨横移"}, {0x208,"直尖轨爬行"}, {0x209,"曲尖轨爬行"}, {0x210,"转辙机振动"}, {0x301,"密贴缺口值"}, {0x302,"斥离缺口值"}, {0x303,"左表示杆行程"}, {0x304,"右表示杆行程"}, {0x305,"密贴缺口偏移值"}, {0x306,"密贴缺口标准值"}, {0x307,"油位"}, {0x308,"温度"}, {0x309,"湿度"}, {0x310,"油压曲线"}, {0x311,"电流"}, {0x312,"电压"} }; static std::map g_mapAcqTypeStringtoID = { {"定位测力值", 0x101 }, { "反位测力值" ,0x102 }, { "转换阻力测力值" ,0x103 }, { "温度" ,0x104 }, { "湿度" ,0x105 }, { "定位密贴" ,0x201 }, { "定位开程" ,0x202 }, { "反位密贴" ,0x203 }, { "反位开程" ,0x204 }, { "轨间距离" ,0x205 }, { "直轨横移" ,0x206 }, { "曲轨横移" ,0x207 }, { "直尖轨爬行" ,0x208 }, { "曲尖轨爬行" ,0x209 }, { "转辙机振动" ,0x210 }, { "密贴缺口值" ,0x301 }, { "斥离缺口值" ,0x302 }, { "左表示杆行程" ,0x303 }, { "右表示杆行程" ,0x304 }, { "密贴缺口偏移值" ,0x305 }, { "密贴缺口标准值" ,0x306 }, { "油位" ,0x307 }, { "温度" ,0x308 }, { "湿度" ,0x309 }, { "油压曲线" ,0x310 }, { "电流" ,0x311 }, { "电压" ,0x312 }, }; #pragma pack(push, 1) struct C315CommData { std::vector m_vecData; ~C315CommData() { m_vecData.clear(); } const BYTE * const GetData() const { return m_vecData.data(); } size_t GetDataSize()const { return m_vecData.size(); } void Clear_Data() { m_vecData.clear(); } void Push_Data(const BYTE * lpData, WORD wSize) { //m_vecData.assign(lpData, lpData + wSize); if (wSize == 0) return; size_t nInsertPos = m_vecData.size(); m_vecData.resize(nInsertPos + wSize); CopyMemory(m_vecData.data() + nInsertPos, lpData, wSize); } void Update_Data(int nIdx, const void *lpData, WORD wSize) { //m_vecData.assign(lpData, lpData + wSize); if (wSize == 0) return; if (nIdx + wSize > m_vecData.size()) return; CopyMemory(m_vecData.data() + nIdx, lpData, wSize); } void Reserve(DWORD dwSize) { size_t nInsertPos = m_vecData.capacity(); if (dwSize > nInsertPos) m_vecData.reserve(dwSize); } template void Push_Data(T d) { Push_Data((const BYTE*)&d, sizeof(T)); } template void Push_Data(T *d, WORD wSize) { Push_Data((const BYTE*)d, wSize); } void Push_Tail() { static const BYTE cbTail[4] = { 0xFF, 0xFF, 0xFF, 0xFF }; Push_Data(cbTail, 4); } void Update_FrameLen(DWORD dwFrameLen) { size_t nDataSize = m_vecData.size(); if (nDataSize >= 12) { CopyMemory(m_vecData.data() + 8, &dwFrameLen, sizeof(dwFrameLen)); } } void Update_FrameLen() { DWORD nDataSize = m_vecData.size(); if (nDataSize >= 12) { nDataSize -= 16; //帧内容长度 CopyMemory(m_vecData.data() + 8, &nDataSize, sizeof(nDataSize)); } } }; #pragma pack(pop)