From d7c88780e1df54f34563d60bd7fa01011d2eef03 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期一, 26 一月 2026 23:17:17 +0800
Subject: [PATCH] 1.CSVData.cpp 里 unserialize 用了 8*2、125*2,但 serialize 只写 8 + 125 字节。 m_svRawData.insert 的 end 指针是 pszBuffer + 125*2,没有用 index 计算,可能把无效区域一起拷进去。 一旦 size 实际是 133(不是 266),就会直接越界,堆会被破坏,m_svDatas.clear() 在销毁元素时崩。
---
SourceCode/Bond/Servo/CEFEM.cpp | 32 ++++++++------------------------
1 files changed, 8 insertions(+), 24 deletions(-)
diff --git a/SourceCode/Bond/Servo/CEFEM.cpp b/SourceCode/Bond/Servo/CEFEM.cpp
index 39df4b4..d882c9b 100644
--- a/SourceCode/Bond/Servo/CEFEM.cpp
+++ b/SourceCode/Bond/Servo/CEFEM.cpp
@@ -133,7 +133,7 @@
LOGI("<CEquipment-%s>发送RobotCmdS成功.", m_strName.c_str());
}
else {
- LOGI("<CEquipment-%s>发送RobotCmds失败,code:%d", m_strName.c_str(), code);
+ LOGE("<CEquipment-%s>发送RobotCmds失败,code:%d", m_strName.c_str(), code);
}
return 0;
@@ -367,7 +367,7 @@
void CEFEM::initPins()
{
// 加入Pin初始化代码
- LOGI("<CEFEM>initPins");
+ LOGD("<CEFEM>initPins");
}
void CEFEM::initSteps()
@@ -456,25 +456,6 @@
pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM);
pStep->setWriteSignalDev(0x49);
if (addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) {
- delete pStep;
- }
- }
-
- {
- // VCR Event Report
- // 机器上报扫码结果,扫码器预计安装在巡边检机器上
- CEqReadStep* pStep = new CEqReadStep(0x5fef, 15 * 2,
- [&](void* pFrom, int code, const char* pszData, size_t size) -> int {
- if (code == ROK && pszData != nullptr && size > 0) {
- decodeVCREventReport((CStep*)pFrom, pszData, size);
- }
- return -1;
- });
- pStep->setName(STEP_EQ_VCR1_EVENT_REPORT);
- pStep->setProp("Port", (void*)1);
- pStep->setWriteSignalDev(0x4a);
- pStep->setReturnDev(0x91e);
- if (addStep(STEP_ID_VCR1_EVENT_REPORT, pStep) != 0) {
delete pStep;
}
}
@@ -697,9 +678,11 @@
}
}
+ // FAC Data Report
+ addFacDataReportStep(0x6589, 0x04d, 1);
+ /*
{
- // FAC Data Report
- CEqReadStep* pStep = new CEqReadStep(0x6301, 108 * 2,
+ CEqReadStep* pStep = new CEqReadStep(0x6589, 133 * 2,
[&](void* pFrom, int code, const char* pszData, size_t size) -> int {
if (code == ROK && pszData != nullptr && size > 0) {
decodeFacDataReport((CStep*)pFrom, pszData, size);
@@ -713,6 +696,7 @@
delete pStep;
}
}
+ */
{
// JOB Data Request
@@ -890,7 +874,7 @@
void CEFEM::printDebugRobotState()
{
- LOGI("<CEFEM>Robot status:%d, ARM1:%s, ARM2:%s",
+ LOGD("<CEFEM>Robot status:%d, ARM1:%s, ARM2:%s",
m_robotData.status,
m_robotData.armState[0] ? _T("ON") : _T("OFF"),
m_robotData.armState[1] ? _T("ON") : _T("OFF"));
--
Gitblit v1.9.3