From 9ad04a15d7f9438cf3e5f1b69b8d458ae767bdf5 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期六, 26 四月 2025 18:06:39 +0800
Subject: [PATCH] 1.CReadStep增加写入返回值或数据的功能;
---
SourceCode/Bond/Servo/CReadStep.cpp | 22 ++++++++++++++++++++++
SourceCode/Bond/Servo/CEqVcrEventStep.cpp | 6 ++++++
SourceCode/Bond/Servo/CEqVcrEventStep.h | 1 +
SourceCode/Bond/Servo/CWriteStep.cpp | 4 ++--
SourceCode/Bond/Servo/CEquipment.cpp | 2 ++
SourceCode/Bond/Servo/CReadStep.h | 7 +++++++
Document/~$WIN_EAS_Equipment_Communication_Specification(CC-LINK)_v3.1(翻译结果).docx | 0
SourceCode/Bond/Servo/CMaster.cpp | 1 +
8 files changed, 41 insertions(+), 2 deletions(-)
diff --git "a/Document/~$WIN_EAS_Equipment_Communication_Specification\050CC-LINK\051_v3.1\050\347\277\273\350\257\221\347\273\223\346\236\234\051.docx" "b/Document/~$WIN_EAS_Equipment_Communication_Specification\050CC-LINK\051_v3.1\050\347\277\273\350\257\221\347\273\223\346\236\234\051.docx"
new file mode 100644
index 0000000..ac59be7
--- /dev/null
+++ "b/Document/~$WIN_EAS_Equipment_Communication_Specification\050CC-LINK\051_v3.1\050\347\277\273\350\257\221\347\273\223\346\236\234\051.docx"
Binary files differ
diff --git a/SourceCode/Bond/Servo/CEqVcrEventStep.cpp b/SourceCode/Bond/Servo/CEqVcrEventStep.cpp
index d98d170..644a7e3 100644
--- a/SourceCode/Bond/Servo/CEqVcrEventStep.cpp
+++ b/SourceCode/Bond/Servo/CEqVcrEventStep.cpp
@@ -78,5 +78,11 @@
{
return &m_vcrEventReport;
}
+
+ int CEqVcrEventStep::setReturnCode(short code)
+ {
+ memcpy(m_szReturnBuf, &code, sizeof(short));
+ m_nReturnDataSize = sizeof(short);
+ }
}
diff --git a/SourceCode/Bond/Servo/CEqVcrEventStep.h b/SourceCode/Bond/Servo/CEqVcrEventStep.h
index 6d8cb63..b7b64a4 100644
--- a/SourceCode/Bond/Servo/CEqVcrEventStep.h
+++ b/SourceCode/Bond/Servo/CEqVcrEventStep.h
@@ -17,6 +17,7 @@
virtual int onTimeout();
void setVcrEventReportDev(int nDev);
CVcrEventReport* getVcrEventReport();
+ int setReturnCode(short code);
private:
int m_nVcrEventReportDev;
diff --git a/SourceCode/Bond/Servo/CEquipment.cpp b/SourceCode/Bond/Servo/CEquipment.cpp
index f710669..28b9a38 100644
--- a/SourceCode/Bond/Servo/CEquipment.cpp
+++ b/SourceCode/Bond/Servo/CEquipment.cpp
@@ -543,6 +543,8 @@
m_listener.onVcrEventReport(this, pVcrEventReport);
}
+ // 0426, 先固定返回1(OK)
+ pEqVcrEventStep->setReturnCode(1);
return 1;
}
}
diff --git a/SourceCode/Bond/Servo/CMaster.cpp b/SourceCode/Bond/Servo/CMaster.cpp
index 0c7ab7c..c05e973 100644
--- a/SourceCode/Bond/Servo/CMaster.cpp
+++ b/SourceCode/Bond/Servo/CMaster.cpp
@@ -445,6 +445,7 @@
CEqVcrEventStep* pStep = new CEqVcrEventStep();
pStep->setName(STEP_EQ_VCR1_EVENT_REPORT);
pStep->setWriteSignalDev(0x4a);
+ pStep->setReturnDev(0x91e);
pStep->setVcrEventReportDev(0x5fef);
if (pEquipment->addStep(STEP_ID_VCR1_EVENT_REPORT, pStep) != 0) {
delete pStep;
diff --git a/SourceCode/Bond/Servo/CReadStep.cpp b/SourceCode/Bond/Servo/CReadStep.cpp
index a482c7a..787d92a 100644
--- a/SourceCode/Bond/Servo/CReadStep.cpp
+++ b/SourceCode/Bond/Servo/CReadStep.cpp
@@ -22,6 +22,9 @@
m_hReadSignalOff = ::CreateEvent(NULL, TRUE, FALSE, NULL);
m_nSignalType = 0;
m_nCurStep = 0;
+ m_szReturnBuf[1024] = {0};
+ m_nReturnDataSize = 0;
+ m_nReturnDevNo = 0;
}
CReadStep::~CReadStep()
@@ -38,6 +41,11 @@
void CReadStep::setWriteSignalDev(int dev)
{
m_nWriteSignalDev = dev;
+ }
+
+ void CReadStep::setReturnDev(int dev)
+ {
+ m_nReturnDevNo = dev;
}
void CReadStep::onReadSignal(int nSignalType)
@@ -88,6 +96,17 @@
m_pEquipment->onStepEvent(this, STEP_EVENT_READDATA);
}
+ // 0426新增
+ // 1.1,写return code or data
+ if (m_nReturnDataSize > 0) {
+ int nWriteRet = m_pCclink->WriteData(m_station, (short)DeviceType::W,
+ m_nReturnDevNo, m_nReturnDataSize, (short*)m_szReturnBuf);
+ if (0 != nWriteRet) {
+ onTimeout();
+ goto RESET;
+ }
+ }
+
// 2.给对方写ON
nextStep();
m_pCclink->SetBitDeviceEx(m_station, (long)DeviceType::B, m_nWriteSignalDev);
@@ -115,6 +134,9 @@
ASSERT(m_pEquipment);
m_pEquipment->onStepEvent(this, STEP_EVENT_COMPLETE);
}
+
+ // 回复数据清空
+ m_nReturnDataSize = 0;
}
}
diff --git a/SourceCode/Bond/Servo/CReadStep.h b/SourceCode/Bond/Servo/CReadStep.h
index e5c88d2..c79ea0f 100644
--- a/SourceCode/Bond/Servo/CReadStep.h
+++ b/SourceCode/Bond/Servo/CReadStep.h
@@ -12,6 +12,7 @@
public:
unsigned WorkingProc();
virtual void setWriteSignalDev(int dev);
+ virtual void setReturnDev(int dev);
virtual void onReadSignal(int nSignalType);
virtual int onReadData();
virtual void init();
@@ -31,6 +32,12 @@
int m_nSignalType;
int m_nCurStep;
int m_nWriteSignalDev; // 对方BIT地址
+
+ // return code or data
+ protected:
+ char m_szReturnBuf[1024];
+ int m_nReturnDataSize;
+ int m_nReturnDevNo;
};
}
diff --git a/SourceCode/Bond/Servo/CWriteStep.cpp b/SourceCode/Bond/Servo/CWriteStep.cpp
index 5414b12..ba18a5c 100644
--- a/SourceCode/Bond/Servo/CWriteStep.cpp
+++ b/SourceCode/Bond/Servo/CWriteStep.cpp
@@ -89,9 +89,9 @@
// 1.写数据
nextStep();
ASSERT(m_pCclink);
- int nRet = m_pCclink->WriteData(m_station, (short)DeviceType::W,
+ int nWriteRet = m_pCclink->WriteData(m_station, (short)DeviceType::W,
m_nWriteDevNo, m_nWriteDataSize, (short*)m_szBuffer);
- if (0 != nRet) {
+ if (0 != nWriteRet) {
onTimeout();
goto RESET;
}
--
Gitblit v1.9.3