From 1310b3764eafe085dd43a73aa5190a18e9f717c0 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期四, 11 九月 2025 17:11:40 +0800
Subject: [PATCH] 1. 把数值放大1000倍 2. 发送PLC是双字

---
 SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp b/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
index d5869c7..1de8be5 100644
--- a/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
+++ b/SourceCode/Bond/SGMeasurement/PLCSignalListener.cpp
@@ -258,7 +258,7 @@
                         std::string strProductID;
                         if (ReadProductID(strProductID)) {
                             CString msg;
-                            msg.Format(_T("读取到产品ID:%s"), strProductID.c_str());
+                            msg.Format(_T("读取到产品ID:%s"), strProductID);
                             LOG_MSG(msg, LOG_TYPE_SUCCESS);
                         }
                     }
@@ -302,12 +302,12 @@
     }
 
     for (int i = 0; i < PLC_RESULT_ADDR_COUNT; ++i) {
-        // 放大100倍并四舍五入,转为PLC整数
-        uint16_t nScaled = static_cast<uint16_t>(std::round(values[i] * 100.0));
-        WordContainer vec = { nScaled };
+        // 放大1000倍并四舍五入,转为PLC整数
+        int32_t  nScaled = static_cast<int32_t>(std::round(values[i] * 1000.0));
+        DWordContainer vec = { static_cast<uint32_t>(nScaled) };
 
         short nTargetAddr = PLC_RESULT_ADDR_START + i * 2;
-        int ret = m_pPlc->WriteWordDataEx(m_station, PLC_WORD_DEVICE_TYPE, nTargetAddr, vec);
+        int ret = m_pPlc->WriteDWordDataEx(m_station, PLC_WORD_DEVICE_TYPE, nTargetAddr, vec);
         if (ret != 0) {
             CString msg;
             msg.Format(_T("写入OUT%d到地址%d失败,值=%.2f"), i + 1, nTargetAddr, values[i]);
@@ -336,6 +336,7 @@
     }
 
     strProductID.clear();
+	strProductID.reserve(PLC_PRODUCT_ID_WORDS * 2);
     for (auto w : vec) {
         char c1 = static_cast<char>(w & 0xFF);          // 低字节
         char c2 = static_cast<char>((w >> 8) & 0xFF);   // 高字节

--
Gitblit v1.9.3