diff --git a/src/mqtt_report/src/mqtt_report.cpp b/src/mqtt_report/src/mqtt_report.cpp index 9610bda..fade0b4 100644 --- a/src/mqtt_report/src/mqtt_report.cpp +++ b/src/mqtt_report/src/mqtt_report.cpp @@ -45,10 +45,33 @@ void Msg_Handler(const mc::msg::CanFrame::SharedPtr msg) case 0x1A2: { const uint8_t gearByte = msg->data[0]; - info_report.gear = (gearByte & 0x01) ? 3 : ((gearByte >> 2) & 0x03); + if (gearByte & 0x01) + { + info_report.gear = 3; + } + else + { + // bit2-3 表示当前挡位: + switch ((gearByte >> 2) & 0x03) + { + case 1: + info_report.gear = 2; + break; + case 2: + info_report.gear = 0; + break; + case 3: + info_report.gear = 1; + break; + default: + break; + } + } + // 温度计算,data[5-6] 是一个 16-bit 原始值,单位 0.1°C,偏移量 -100°C const int tempRaw = (msg->data[5] << 8) | msg->data[6]; info_report.motorTemp = static_cast(tempRaw * 0.1f - 100.0f); + break; }