Browse Source

修复CAN接收消息内存溢出的BUG。

master
zhaohe 1 year ago
parent
commit
2bd8d2ea4a
  1. 2
      components/zcancmder/basic.hpp
  2. 2
      components/zcancmder/zcanreceiver.cpp

2
components/zcancmder/basic.hpp

@ -26,7 +26,7 @@ using namespace zcr;
class CanPacketRxBuffer { class CanPacketRxBuffer {
public: public:
uint16_t id = 0; uint16_t id = 0;
CANPacket m_canPacket[125] = {0}; // 用于接收can消息
CANPacket m_canPacket[100] = {0}; // 用于接收can消息
uint8_t m_canPacketNum = 0; uint8_t m_canPacketNum = 0;
uint8_t m_npacket = 0; uint8_t m_npacket = 0;
uint8_t rxdata[1000] = {0}; uint8_t rxdata[1000] = {0};

2
components/zcancmder/zcanreceiver.cpp

@ -321,7 +321,7 @@ void ZCanCmder::STM32_HAL_onCAN_RxFifo0MsgPending(CAN_HandleTypeDef *canHandle)
rxbuf->m_canPacketNum = 0; rxbuf->m_canPacketNum = 0;
} }
if (rxbuf->m_canPacketNum < 255) {
if (rxbuf->m_canPacketNum < ZARRAY_SIZE(rxbuf->m_canPacket)) {
rxbuf->m_canPacket[rxbuf->m_canPacketNum].dlc = pHeader.DLC; rxbuf->m_canPacket[rxbuf->m_canPacketNum].dlc = pHeader.DLC;
memcpy(rxbuf->m_canPacket[rxbuf->m_canPacketNum].aData, aData, 8); memcpy(rxbuf->m_canPacket[rxbuf->m_canPacketNum].aData, aData, 8);
rxbuf->m_canPacketNum++; rxbuf->m_canPacketNum++;

Loading…
Cancel
Save