From f8971cfc3abcc23fd2a5541a7bf698389d5e9300 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期六, 15 二月 2025 16:47:54 +0800
Subject: [PATCH] 1.增加CMaster, CBonder,CEFEM等类,测试读取CC-Link数据;

---
 SourceCode/Bond/Servo/CCLinkPerformance/CCLinkIEControl.cpp |   46 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/SourceCode/Bond/Servo/CCLinkPerformance/CCLinkIEControl.cpp b/SourceCode/Bond/Servo/CCLinkPerformance/CCLinkIEControl.cpp
index bc85cc4..582cc6b 100644
--- a/SourceCode/Bond/Servo/CCLinkPerformance/CCLinkIEControl.cpp
+++ b/SourceCode/Bond/Servo/CCLinkPerformance/CCLinkIEControl.cpp
@@ -40,7 +40,7 @@
         return ERROR_CODE_INVALID_DATA;
     }
 
-    // 瑙f瀽鍚勪綅鐘舵��
+    // 解析各位状态
     const short nBuffer = vecLedBuffer[0];
     outLedStatus.bExtPw = (nBuffer & (1 << 15)) != 0;
     outLedStatus.bRd = (nBuffer & (1 << 6)) != 0;
@@ -56,26 +56,48 @@
 
 CCLinkIEControlMode CCCLinkIEControl::ConvertToCCLinkIEControlMode(const short nMode) {
     switch (static_cast<CCLinkIEControlMode>(nMode)) {
-        case CCLinkIEControlMode::ONLINE: return CCLinkIEControlMode::ONLINE;                           // 鍦ㄧ嚎
-        case CCLinkIEControlMode::OFFLINE: return CCLinkIEControlMode::OFFLINE;                         // 绂荤嚎
-        case CCLinkIEControlMode::INTER_STATION_TEST: return CCLinkIEControlMode::INTER_STATION_TEST;   // 绔欓棿娴嬭瘯
-        case CCLinkIEControlMode::LINE_TEST: return CCLinkIEControlMode::LINE_TEST;                     // 绾胯矾娴嬭瘯
-        case CCLinkIEControlMode::LOOPBACK_TEST: return CCLinkIEControlMode::LOOPBACK_TEST;             // 鑷洖閫佹祴璇�
-        case CCLinkIEControlMode::HW_TEST: return CCLinkIEControlMode::HW_TEST;                         // H/W娴嬭瘯
-        case CCLinkIEControlMode::BUS_IF_TEST: return CCLinkIEControlMode::BUS_IF_TEST;                 // 鎬荤嚎I/F娴嬭瘯
+        case CCLinkIEControlMode::ONLINE: return CCLinkIEControlMode::ONLINE;                           // 在线
+        case CCLinkIEControlMode::OFFLINE: return CCLinkIEControlMode::OFFLINE;                         // 离线
+        case CCLinkIEControlMode::INTER_STATION_TEST: return CCLinkIEControlMode::INTER_STATION_TEST;   // 站间测试
+        case CCLinkIEControlMode::LINE_TEST: return CCLinkIEControlMode::LINE_TEST;                     // 线路测试
+        case CCLinkIEControlMode::LOOPBACK_TEST: return CCLinkIEControlMode::LOOPBACK_TEST;             // 自回送测试
+        case CCLinkIEControlMode::HW_TEST: return CCLinkIEControlMode::HW_TEST;                         // H/W测试
+        case CCLinkIEControlMode::BUS_IF_TEST: return CCLinkIEControlMode::BUS_IF_TEST;                 // 总线I/F测试
         default: return CCLinkIEControlMode::UNKNOWN;
     }
 }
 
 int CCCLinkIEControl::ValidateBoardStatus(const BoardStatus& status) {
     if (status.nStationValue < 1 || status.nStationValue > 120) {
-        return ERROR_CODE_STATION_OUT_OF_RANGE; // 绔欏彿瓒呭嚭鑼冨洿
+        return ERROR_CODE_STATION_OUT_OF_RANGE; // 站号超出范围
     }
     if (status.nGroupValue < 0 || status.nGroupValue > 32) {
-        return ERROR_CODE_GROUP_OUT_OF_RANGE;   // 缁勮秴鍑鸿寖鍥�
+        return ERROR_CODE_GROUP_OUT_OF_RANGE;   // 组超出范围
     }
     if (status.nNetworkValue < 1 || status.nNetworkValue > 239) {
-        return ERROR_CODE_NETWORK_OUT_OF_RANGE; // 缃戠粶鍙疯秴鍑鸿寖鍥�
+        return ERROR_CODE_NETWORK_OUT_OF_RANGE; // 网络号超出范围
     }
-    return 0; // 鏍¢獙閫氳繃
+    return 0; // 校验通过
+}
+
+int CCCLinkIEControl::ReadData2(const StationIdentifier& station, short devType, short devNo, short size, void* pData)
+{
+    // 验证站点参数和数据有效性
+    int nRet = ValidateStationAndSize(station, size);
+    if (nRet != 0) {
+        UpdateLastError(nRet);
+        return nRet;
+    }
+
+    // 确保线程安全的最小锁定范围
+    {
+        std::lock_guard<std::mutex> lock(m_mtx);
+        nRet = mdReceive(m_nPath, CombineStation(station), devType, devNo, &size, pData);
+    }
+
+    if (nRet != 0) {
+        UpdateLastError(nRet);
+    }
+
+    return nRet;
 }
\ No newline at end of file

--
Gitblit v1.9.3