|
@@ -871,7 +871,7 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
|
|
|
{
|
|
|
BMS_Mode = 1;
|
|
|
}
|
|
|
- *SendLen = 0x54 + BMS_CELL_MAX_NUM * 2 + BMS_TEMP_MAX_NUM;
|
|
|
+ *SendLen = 0x54 + min(BMS_CellTotal,BMS_CELL_MAX_NUM)*2 + min(BMS_TempTotal,BMS_TEMP_MAX_NUM);
|
|
|
SendBuffer = malloc(*SendLen);
|
|
|
*(SendBuffer + 0) = TCP_START_SYM1;
|
|
|
*(SendBuffer + 1) = TCP_START_SYM2;
|
|
@@ -879,7 +879,7 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
|
|
|
*(SendBuffer + 3) = TCP_ANS_SYM;
|
|
|
memcpy(SendBuffer + 4, TcpbattSN, BATT_SN_LEN);
|
|
|
*(SendBuffer + 0x15) = (TCP_ENCPT_DISABLE & 0xFF); // uint8 TCP_ENCPT_DISABLE
|
|
|
- uint16 DataLen = 0x3B + BMS_CELL_MAX_NUM * 2 + BMS_TEMP_MAX_NUM;
|
|
|
+ uint16 DataLen = 0x3B + min(BMS_CellTotal,BMS_CELL_MAX_NUM)*2 + min(BMS_TempTotal,BMS_TEMP_MAX_NUM);
|
|
|
*(SendBuffer + 0x16) = ((DataLen >> 8) & 0xFF); // uint16 DataLen
|
|
|
*(SendBuffer + 0x17) = (DataLen & 0xFF);
|
|
|
*(SendBuffer + 0x18) = ((UTC8TimeTcp.year) & 0xFF); // uint8 year
|
|
@@ -932,9 +932,9 @@ void TcpDataEncode(uint32 *PtrSendAddr, uint16 *SendLen)
|
|
|
*(SendBuffer + 0x52 + index * 2) = ((BMS_CellVolt[index] >> 8) & 0xFF);
|
|
|
*(SendBuffer + 0x52 + index * 2 + 1) = ((BMS_CellVolt[index]) & 0xFF);
|
|
|
}
|
|
|
- *(SendBuffer + 0x352) = (BMS_TempTotal & 0xFF); // uint8 PACK中电芯温度点(探针)的总数目
|
|
|
- memcpy(SendBuffer + 0x353, BMS_CellTemp, min(BMS_TempTotal,BMS_TEMP_MAX_NUM));
|
|
|
- *(SendBuffer + 0x393) = bcc_chk(SendBuffer, 0x393);
|
|
|
+ *(SendBuffer + 0x52 + min(BMS_CellTotal,BMS_CELL_MAX_NUM)*2) = (BMS_TempTotal & 0xFF); // uint8 PACK中电芯温度点(探针)的总数目
|
|
|
+ memcpy(SendBuffer + 0x53 + min(BMS_CellTotal,BMS_CELL_MAX_NUM)*2, BMS_CellTemp, min(BMS_TempTotal,BMS_TEMP_MAX_NUM));
|
|
|
+ *(SendBuffer + 0x53 + min(BMS_CellTotal,BMS_CELL_MAX_NUM)*2 + min(BMS_TempTotal,BMS_TEMP_MAX_NUM)) = bcc_chk(SendBuffer, 0x53 + min(BMS_CellTotal,BMS_CELL_MAX_NUM)*2 + min(BMS_TempTotal,BMS_TEMP_MAX_NUM));
|
|
|
*PtrSendAddr = (uint32)SendBuffer;
|
|
|
break;
|
|
|
}
|