diff --git a/K86串口CAN上位机/.gitignore b/K86串口CAN上位机/.gitignore new file mode 100644 index 0000000..baaf1ed --- /dev/null +++ b/K86串口CAN上位机/.gitignore @@ -0,0 +1,2 @@ +/dist +/.build diff --git a/K86串口CAN上位机/default.aproj b/K86串口CAN上位机/default.aproj new file mode 100644 index 0000000..99e2cdd --- /dev/null +++ b/K86串口CAN上位机/default.aproj @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/K86串口CAN上位机/lib/config.aardio b/K86串口CAN上位机/lib/config.aardio new file mode 100644 index 0000000..a1cbfc5 --- /dev/null +++ b/K86串口CAN上位机/lib/config.aardio @@ -0,0 +1,20 @@ +//config 配置文件 +import fsys.config; +config = fsys.config("/config/"); +//config = fsys.config( io.appData("/软件作者/应用程序名/") ); + +//不需要序列化的配置名字前请添加下划线 +namespace config { + __appName = "应用程序名"; + __appVersion = "1.0.0.01"; + __appDescription = "这是一个测试程序"; + __website = "http://www.aardio.com/"; +} + +/**intellisense(config) +__appName = 应用程序名 +__appVersion = 应用程序内部版本号 +__appDescription = 程序说明 +__website = 官方网站 +? = 配置文件名,\n读写配置并序列化为一个表对象,\n表的成员值可以是支持序列化的普通变量,支持table对象\n配置文件在首次使用时自动加载,退出程序时自动保存\n!fsys_table. +end intellisense**/ \ No newline at end of file diff --git a/K86串口CAN上位机/main.aardio b/K86串口CAN上位机/main.aardio new file mode 100644 index 0000000..7755086 --- /dev/null +++ b/K86串口CAN上位机/main.aardio @@ -0,0 +1,233 @@ +import fonts.fontAwesome; +import win.dlg.message; +import win.ui; +/*DSG{{*/ +mainForm = win.form(text="K86上位机";right=885;bottom=591;border="dialog frame";max=false) +mainForm.add( +btnClear={cls="button";text="清空";left=741;top=537;right=854;bottom=579;font=LOGFONT(h=-19);z=6}; +btnFresh={cls="button";text="刷新";left=41;top=47;right=138;bottom=101;font=LOGFONT(h=-20);z=3}; +btnOpen={cls="button";text="打开";left=346;top=47;right=442;bottom=101;font=LOGFONT(h=-20);z=4}; +combobox={cls="combobox";left=154;top=61;right=332;bottom=87;edge=1;font=LOGFONT(h=-20);items={};mode="dropdown";z=1}; +editRx={cls="edit";left=526;top=25;right=854;bottom=523;bgcolor=16777215;edge=1;font=LOGFONT(h=-19);multiline=1;readonly=1;vscroll=1;z=5}; +lbComPort={cls="static";text="串口信息";left=40;top=4;right=413;bottom=40;transparent=1;z=2}; +plKey1={cls="plus";text="滑轨前";left=79;top=177;right=179;bottom=246;bgcolor=-5723992;font=LOGFONT(h=-16);z=8}; +plKey2={cls="plus";text="滑轨后";left=79;top=252;right=179;bottom=321;bgcolor=-5723992;font=LOGFONT(h=-16);z=9}; +plKey3={cls="plus";text="靠背前";left=268;top=177;right=368;bottom=246;bgcolor=-5723992;font=LOGFONT(h=-16);z=10}; +plKey4={cls="plus";text="靠背后";left=268;top=252;right=368;bottom=321;bgcolor=-5723992;font=LOGFONT(h=-16);z=11}; +plKey5={cls="plus";text="腿托升";left=79;top=361;right=179;bottom=430;bgcolor=-5723992;font=LOGFONT(h=-16);z=12}; +plKey6={cls="plus";text="腿托降";left=79;top=437;right=179;bottom=506;bgcolor=-5723992;font=LOGFONT(h=-16);z=13}; +plKey7={cls="plus";text="零重力开";left=268;top=361;right=368;bottom=430;bgcolor=-5723992;font=LOGFONT(h=-16);z=14}; +plKey8={cls="plus";text="零重力关";left=268;top=437;right=368;bottom=506;bgcolor=-5723992;font=LOGFONT(h=-16);z=15}; +static={cls="static";text="V1.0 20250215";left=16;top=563;right=134;bottom=582;font=LOGFONT(h=-16);notify=1;transparent=1;z=7} +) +/*}}*/ + +var keyColor = {0xFFA8A8A8,0xFF00FF00}; + +import sys.comPort; +import console; +import sio; +import win.timer; + + +var sioPort; + +logPrint = function(str){ + mainForm.editRx.print(str); +} + + +//串口列表 +FreshHw = function(){ + comPorts = sys.comPort.list(); + mainForm.combobox.items = comPorts; + mainForm.combobox.selIndex = sys.comPort.find("CP210x")[["index"]] or 1; + if(#comPorts == 0){ + mainForm.lbComPort.text = "没有找到硬件" + } +} +FreshHw(); + + +//获取串口信息 +mainForm.combobox.oncommand = function(id,event){ + var item = comPorts[mainForm.combobox.selIndex] + if(item){ + mainForm.lbComPort.text = item.friendlyName; + } +} + +mainForm.btnFresh.oncommand = function(id,event){ + FreshHw(); + mainForm.combobox.oncommand(); +} + + +var data = {}; +var KeyDelay = {}; +for(i=1;8;1){ + KeyDelay[i] = 0; +} + + +display = function(){ + for(i=1;8;1){ + if(KeyDelay[i] > 0){ + KeyLedCtrl(i,1); + KeyDelay[i]--; + } + else { + KeyLedCtrl(i,0); + } + + + } + +} + +KeyLedCtrl = function(keyid,state){ + if(keyid > 0 && keyid < 9){ + mainForm["plKey"++keyid].background = keyColor[state + 1]; + } + +} + + +DataPrecess = function(str){ + //logPrint(string.left(str,35)); + if(#str != 59){ + return ; + } + if(string.cmpMatch(string.left(str,14),"01 01 02 00 00" )){ + datastr = string.slice(str,36,59); + logPrint(datastr); + data = string.split(datastr,' '); + + keydata = tonumber(data[2],16); + //logPrint(data[2]); + + for(i=0;7;1){ + if(keydata & (1<