From 63686244746925d43248ceaf8d9e31f50df68a72 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 01 九月 2025 17:21:43 +0800
Subject: [PATCH] Merge branch 'clh'

---
 SourceCode/Bond/SGMeasurement/CCLinkPerformance/CCLinkIEControl.h |   70 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/SGMeasurement/CCLinkPerformance/CCLinkIEControl.h b/SourceCode/Bond/SGMeasurement/CCLinkPerformance/CCLinkIEControl.h
new file mode 100644
index 0000000..703780b
--- /dev/null
+++ b/SourceCode/Bond/SGMeasurement/CCLinkPerformance/CCLinkIEControl.h
@@ -0,0 +1,70 @@
+#ifndef CCLINKIECONTROL_H
+#define CCLINKIECONTROL_H
+
+#include "PerformanceMelsec.h"
+
+enum class CCLinkIEControlMode : short {
+    UNKNOWN = 0x0194,               // 未知
+    ONLINE = 0x0000,                // 在线
+    OFFLINE = 0x0002,               // 离线
+    INTER_STATION_TEST = 0x0005,    // 站间测试
+    LINE_TEST = 0x0006,             // 线路测试
+    LOOPBACK_TEST = 0x0007,         // 自回送测试
+    HW_TEST = 0x0009,               // H/W测试
+    BUS_IF_TEST = 0x000E            // 总线I/F测试
+};
+
+class CCCLinkIEControl final : public CPerformanceMelsec {
+public:
+    CCCLinkIEControl();
+    ~CCCLinkIEControl() override;
+
+    struct LedStatus {
+        bool bExtPw; // 外部电源状态 (b15)
+        bool bRd;    // 数据接收状态 (b6)
+        bool bDLnk;  // 数据链接状态 (b5)
+        bool bPrm;   // 管理功能状态 (b4)
+        bool bErr;   // 错误状态 (b3)
+        bool bSd;    // 数据发送状态 (b2)
+        bool bMode;  // 动作模式 (b1)
+        bool bRun;   // 运行状态 (b0)
+
+        // 转换为字符串,用于调试
+        std::string ToString() const {
+            std::ostringstream oss;
+            oss << "CC-Link IE Control Network LED Status: {"
+                << "\n  Ext Power: " << (bExtPw ? "ON" : "OFF")
+                << "\n  Receive Data: " << (bRd ? "Receiving" : "Not Receiving")
+                << "\n  Data Link: " << (bDLnk ? "Linked" : "Not Linked")
+                << "\n  Management: " << (bPrm ? "Managing" : "Not Managing")
+                << "\n  Error: " << (bErr ? "Error Detected" : "No Error")
+                << "\n  Send Data: " << (bSd ? "Sending" : "Not Sending")
+                << "\n  Mode: " << (bMode ? "Executing" : "Not Executing")
+                << "\n  Run: " << (bRun ? "Running" : "Stopped")
+                << "\n}";
+            return oss.str();
+        }
+    };
+
+    // 读取目标站点CPU类型
+    // short ReadCPUCodeEx(const StationIdentifier& station, short& nCPUCode);
+
+    // 板模式获取/设置
+    int SetBoardModeEx(CCLinkIEControlMode mode);
+    CCLinkIEControlMode GetBoardModeEx();
+
+    // 获取板状态
+    int GetBoardStatusEx(BoardStatus& status);
+
+    // 读取LED状态
+    int ReadLedStatus(LedStatus& outLedStatus);
+
+    int ReadDataEx(const StationIdentifier& station, DeviceType enDevType, long devNo, long size, void* pData);
+
+private:
+    static CCLinkIEControlMode ConvertToCCLinkIEControlMode(short nMode);
+    static int ValidateBoardStatus(const BoardStatus& status);
+};
+
+
+#endif //CCLINKIECONTROL_H

--
Gitblit v1.9.3