diff --git a/components/zcancmder/basic.hpp b/components/zcancmder/basic.hpp index edf2068..f7a5d07 100644 --- a/components/zcancmder/basic.hpp +++ b/components/zcancmder/basic.hpp @@ -26,7 +26,7 @@ using namespace zcr; class CanPacketRxBuffer { public: uint16_t id = 0; - CANPacket m_canPacket[125] = {0}; // 用于接收can消息 + CANPacket m_canPacket[100] = {0}; // 用于接收can消息 uint8_t m_canPacketNum = 0; uint8_t m_npacket = 0; uint8_t rxdata[1000] = {0}; diff --git a/components/zcancmder/zcanreceiver.cpp b/components/zcancmder/zcanreceiver.cpp index d9c721f..503fb1c 100644 --- a/components/zcancmder/zcanreceiver.cpp +++ b/components/zcancmder/zcanreceiver.cpp @@ -324,7 +324,12 @@ void ZCanCmder::STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *canHandle) rxbuf->m_canPacketNum = 0; } - if (rxbuf->m_canPacketNum < 255) { + if (rxbuf->m_canPacketNum != frameId) { + rxbuf->m_canPacketNum = 0; + continue; + } + + if (rxbuf->m_canPacketNum < ZARRAY_SIZE(rxbuf->m_canPacket)) { rxbuf->m_canPacket[rxbuf->m_canPacketNum].dlc = pHeader.DLC; memcpy(rxbuf->m_canPacket[rxbuf->m_canPacketNum].aData, aData, 8); rxbuf->m_canPacketNum++;