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_old.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_old.cpp" "b/doc/\346\216\245\345\217\243\350\256\276\350\256\241/old/ActuatorDemo_old.cpp" new file mode 100644 index 0000000..277666a --- /dev/null +++ "b/doc/\346\216\245\345\217\243\350\256\276\350\256\241/old/ActuatorDemo_old.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 = CreateCustDevice("127.0.0.1", 1502); + void* hWrDev = CreateDevice("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 0x01: //绮鍝佺淇敼浜� + { + //鍚戞按鍒嗕华鍙戠伯绉嶆洿鏀癸紝鍚姩鍑嗗 + ret = SendCommands(hWrDev, 0x01, nGrainType); + if (ret <= 0) + { + printf("绮鍝佺淇敼澶辫触锛佹按鍒嗕华鏁呴殰锛乗n"); + ret = WriteState(hPlcDev, 0xFF); + } + else + { + printf("绮鍝佺淇敼鎴愬姛锛佸噯澶囧氨缁猏n"); + ret = WriteState(hPlcDev, 0x02); + } + + } + break; + case 0x03: //寮�濮嬫祴璇� + { + ret = SendCommands(hWrDev, 0x02); + if (ret <= 0) + { + printf("鎵ц妫�娴嬪け璐ワ紒\n"); + ret = WriteState(hPlcDev, 0xFF); + } + else + { + unsigned short nDatas[10] = { 0 }; + + //浠庢按鍒嗕华鍣ㄨ鍙栨暟鎹� + ret = ReadDatas(hWrDev, nDatas); + + printf("鎵ц妫�娴嬫垚鍔燂紒\n"); + ret = WriteState(hPlcDev, 0x04); + + //璁$畻姘村垎鐜� + 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 0xFE: //澶嶄綅鍛戒护 + { + + + } + break; + default: + break; + } + } + } + + if (hPlcDev) DestroyDevice(&hPlcDev); + if (hWrDev) DestroyDevice(&hWrDev); +} + +//鎵嬪姩鍐欐按鍒嗕华鍙傛暟 +void ExeWriteParam() +{ + void* hWrDev = CreateDevice("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 = CreateDevice("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, 0x02); //鎵ц鍚姩鍛戒护 + + 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 = CreateDevice("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 = ReadScanFreq(hWrDev, &nVcc); + + printf(" After Detection,"); + printf(" %d", nVcc); + printf(" \n"); + + } + } + + + + if (hWrDev) DestroyDevice(&hWrDev); +} + +void TestLinearize() +{ + int nSampeCount = 12; + + float x[]={1,2,3,4,5}; //鐢靛钩鍊糾V + float y[]={2506,2200,1846,1440,1004}; //瀹炴祴姘村垎鍊� + 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 = 7.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