From 868daf94f29ce1ffdd799a68c07bb668cd373bcd Mon Sep 17 00:00:00 2001
From: HP\李良庭 <liliangting@lanpucloud.cn:1111>
Date: 星期二, 08 七月 2025 11:49:03 +0800
Subject: [PATCH] 提交分辨率自适应版本V3.1.0.1500

---
 doc/接口设计/old/ActuatorDemo.cpp |  278 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 278 insertions(+), 0 deletions(-)

diff --git "a/doc/\346\216\245\345\217\243\350\256\276\350\256\241/old/ActuatorDemo.cpp" "b/doc/\346\216\245\345\217\243\350\256\276\350\256\241/old/ActuatorDemo.cpp"
new file mode 100644
index 0000000..e5a5f69
--- /dev/null
+++ "b/doc/\346\216\245\345\217\243\350\256\276\350\256\241/old/ActuatorDemo.cpp"
@@ -0,0 +1,278 @@
+锘�// ActuatorDemo.cpp : 姝ゆ枃浠跺寘鍚� "main" 鍑芥暟銆傜▼搴忔墽琛屽皢鍦ㄦ澶勫紑濮嬪苟缁撴潫銆�
+//
+
+#include <iostream>
+#include "../Actuator//Actuator.h"
+
+//绯绘暟
+const double coef[5] = { 1,1,0.01,0,0 };
+
+void ExeTest()
+{
+    void* hPlcDev = CreatePlcDevice("127.0.0.1", 1502);
+    void* hWrDev = CreateWrDevice("COM3", 115200, 'N', 8, 1);
+
+    unsigned short nState = 0;
+    unsigned short nGrainType = 0;
+    int ret = 0;
+
+    if (hPlcDev) ret = ConnectDevice(hPlcDev);
+    if (hWrDev) ret = ConnectDevice(hWrDev);
+
+    char ch = 0;
+
+    while ('c' != (ch = getchar()))  //鎸� c 閫�鍑鸿嚜鍔ㄦ娴�
+    {
+        //璇籔LC鐘舵�佸瓧
+        ret = ReadState(hPlcDev, &nState, &nGrainType);
+        if (ret <= 0)
+        {
+            printf("璇诲彇PLC鐘舵�佸瓧寮傚父锛乗n");
+        }
+        else if (nGrainType > 0 && nState > 0)
+        {
+            switch (nState)
+            {
+            case READY_GRAIN: //绮鍝佺淇敼浜�
+            {
+                //鍚戞按鍒嗕华鍙戠伯绉嶆洿鏀癸紝鍚姩鍑嗗
+                ret = SendCommands(hWrDev, WR_READY, nGrainType);
+                if (ret <= 0)
+                {
+                    printf("绮鍝佺淇敼澶辫触锛佹按鍒嗕华鏁呴殰锛乗n");
+                    ret = WriteState(hPlcDev, DEVICE_WR_FAULT);
+                }
+                else
+                {
+                    printf("绮鍝佺淇敼鎴愬姛锛佸噯澶囧氨缁猏n");
+                    ret = WriteState(hPlcDev, READY_FINISH);
+                }
+
+            }
+            break;
+            case DETECT_START: //寮�濮嬫祴璇�
+            {
+                ret = SendCommands(hWrDev, 0x02);
+                if (ret <= 0)
+                {
+                    printf("鎵ц妫�娴嬪け璐ワ紒\n");
+                    ret = WriteState(hPlcDev, DEVICE_WR_FAULT);
+                }
+                else
+                {
+                    unsigned short nDatas[10] = { 0 };
+
+                    //浠庢按鍒嗕华鍣ㄨ鍙栨暟鎹�
+                    ret = ReadDatas(hWrDev, nDatas);
+
+                    printf("鎵ц妫�娴嬫垚鍔燂紒\n");
+                    ret = WriteState(hPlcDev, DETECT_FINISH);
+
+                    //璁$畻姘村垎鐜�
+                    double v = coef[0] +
+                        coef[1] * nDatas[0] +
+                        coef[2] * nDatas[0] * nDatas[0] +
+                        coef[3] * nDatas[0] * nDatas[0] * nDatas[0] +
+                        coef[4] * nDatas[0] * nDatas[0] * nDatas[0] * nDatas[0];
+
+                    nDatas[0] = 0x01; // 绮鍝佺
+                    nDatas[1] = v; // 21.30% //鍚按鐜�
+                    nDatas[2] = 5150; // 51.50; //瀹归噸姣�
+                    ret = UploadData(hPlcDev, nDatas);
+                }
+            }
+            break;
+            case DEVICE_WR_RESET: //澶嶄綅鍛戒护
+            {
+
+
+            }
+            break;
+            default:
+                break;
+            }
+        }
+    }
+
+    if (hPlcDev) DestroyDevice(&hPlcDev);
+    if (hWrDev) DestroyDevice(&hWrDev);
+}
+
+//鎵嬪姩鍐欏弬鏁�
+void ExeWriteParam()
+{
+    void* hWrDev = CreateWrDevice("COM3", 115200, 'N', 8, 1);
+
+    unsigned short nState = 0;
+    unsigned short nGrainType = 0;
+    int ret = 0;
+
+    if (hWrDev) ret = ConnectDevice(hWrDev);
+
+    ret = WriteParams(hWrDev, 50, 100, 50, 12000, 1);
+    if (ret <= 0)
+        printf("涓嬪彂鍙傛暟澶辫触锛乗n");
+
+    if (hWrDev) DestroyDevice(&hWrDev);
+}
+
+
+//鎵嬪姩妫�娴�
+void ExeManTest()
+{
+    void* hWrDev = CreateWrDevice("COM3", 115200, 'N', 8, 1);
+
+    unsigned short nState = 0;
+    unsigned short nGrainType = 0;
+    int ret = 0;
+
+    if (hWrDev) ret = ConnectDevice(hWrDev);
+
+    ret = SendCommands(hWrDev, WR_READY, 1); //涓嬪彂纭
+
+    if (ret <= 0)
+        printf("鍑嗗澶辫触锛乗n");
+    else
+    {
+        ret = SendCommands(hWrDev, WR_DETECT); //鎵ц鍚姩鍛戒护
+
+        if (ret <= 0)
+        {
+            printf("鎵ц妫�娴嬪け璐ワ紒\n");
+        }
+        else
+        {
+            unsigned short nDatas[10] = { 0 };
+
+            //浠庢按鍒嗕华鍣ㄨ鍙栨暟鎹�
+            ret = ReadDatas(hWrDev, nDatas);
+
+            //璁$畻姘村垎鐜�
+            double v = coef[0] +
+                coef[1] * nDatas[0] +
+                coef[2] * nDatas[0] * nDatas[0] +
+                coef[3] * nDatas[0] * nDatas[0] * nDatas[0] +
+                coef[4] * nDatas[0] * nDatas[0] * nDatas[0] * nDatas[0];
+
+            printf(" After Detection,");
+            printf(" %d %d %d %d", nDatas[0], nDatas[0], nDatas[0], nDatas[0]);
+            printf(" Water Rate:%lf", v);
+            printf(" \n");
+
+        }
+
+    }
+
+    if (hWrDev) DestroyDevice(&hWrDev);
+}
+
+//鎵嬪姩鏍″噯涓�缁�
+void ExeVerifyTest()
+{
+    void* hWrDev = CreateWrDevice("COM3", 115200, 'N', 8, 1);
+
+    unsigned short nState = 0;
+    unsigned short nGrainType = 0;
+    int ret = 0;
+
+    if (hWrDev) ret = ConnectDevice(hWrDev);
+
+    ret = SendCommands(hWrDev, 0x01, 0x01); //涓嬪彂纭
+    
+    if (ret <= 0)
+    {
+        printf("纭澶辫触锛乗n");
+    }
+    else
+    {
+        ret = SendCommands(hWrDev, 0x03); //鎵ц鍚姩鍛戒护
+
+        if (ret <= 0)
+        {
+            printf("鏍″噯鎵ц澶辫触锛乗n");
+        }
+        else
+        {
+            unsigned short nVcc = 0;
+
+            //浠庢按鍒嗕华鍣ㄨ鍙栨暟鎹�
+            ret = ReadVcc(hWrDev, &nVcc);
+
+            printf(" Detected Val: %d", nVcc);
+            printf(" \n");
+
+        }
+    }
+
+
+
+    if (hWrDev) DestroyDevice(&hWrDev);
+}
+
+//鎷熷悎娴嬭瘯--璁$畻鏍″噯绯绘暟
+void TestLinearize()
+{
+    int nSampeCount = 12;
+    
+     float x[]={0,1,2,3,4,5,6,7,8,9,10,11}; //realval
+     float y[]={2506,2200,1846,1440,1004,548,79,-387,-847,-1288,-1700,-2066}; //input
+     double coef[5] = { 0 };
+
+     int ret = Linearize(x, y, coef, 2, nSampeCount);
+     if (ret > 0)
+     {
+         printf("Coef: %f, %f, %f, %f, %f\n", coef[0], coef[1], coef[2], coef[3], coef[4]);
+
+         float v = 3.0f;
+         printf("Input %lf, Cal Val:%lf\n", v,
+             (coef[0] +
+                 coef[1] * v +
+                 coef[2] * v * v +
+                 coef[3] * v * v * v +
+                 coef[4] * v * v * v * v)
+         );
+     }
+
+}
+
+int main()
+{
+    std::cout << "Hello World!\n";
+    char ch = 0;
+    while ('x' != ( ch = getchar() )) //鎸� x 閫�鍑虹▼搴�
+    {
+        switch (ch)
+        {
+            case 'a': //鑷姩娴嬭瘯
+                ExeTest();
+                break;
+            case 'p': //鍚戞按浠戒华涓嬪彂鍙傛暟
+                ExeWriteParam();
+                break;
+            case 'd': //鎵嬪姩妫�娴�
+                ExeManTest();
+                break;
+            case 'v':  //鎵嬪姩鏍″噯
+                ExeVerifyTest();
+                break;
+            case 'l': //鎷熷悎娴嬭瘯
+                TestLinearize();
+                break;
+            default:
+                break;
+        }
+
+    }
+    
+}
+
+// 杩愯绋嬪簭: Ctrl + F5 鎴栬皟璇� >鈥滃紑濮嬫墽琛�(涓嶈皟璇�)鈥濊彍鍗�
+// 璋冭瘯绋嬪簭: F5 鎴栬皟璇� >鈥滃紑濮嬭皟璇曗�濊彍鍗�
+
+// 鍏ラ棬浣跨敤鎶�宸�: 
+//   1. 浣跨敤瑙e喅鏂规璧勬簮绠$悊鍣ㄧ獥鍙f坊鍔�/绠$悊鏂囦欢
+//   2. 浣跨敤鍥㈤槦璧勬簮绠$悊鍣ㄧ獥鍙h繛鎺ュ埌婧愪唬鐮佺鐞�
+//   3. 浣跨敤杈撳嚭绐楀彛鏌ョ湅鐢熸垚杈撳嚭鍜屽叾浠栨秷鎭�
+//   4. 浣跨敤閿欒鍒楄〃绐楀彛鏌ョ湅閿欒
+//   5. 杞埌鈥滈」鐩��>鈥滄坊鍔犳柊椤光�濅互鍒涘缓鏂扮殑浠g爜鏂囦欢锛屾垨杞埌鈥滈」鐩��>鈥滄坊鍔犵幇鏈夐」鈥濅互灏嗙幇鏈変唬鐮佹枃浠舵坊鍔犲埌椤圭洰
+//   6. 灏嗘潵锛岃嫢瑕佸啀娆℃墦寮�姝ら」鐩紝璇疯浆鍒扳�滄枃浠垛��>鈥滄墦寮�鈥�>鈥滈」鐩�濆苟閫夋嫨 .sln 鏂囦欢

--
Gitblit v1.9.3