diff --git a/CANThread/CanThread.aardio b/CANThread/CanThread.aardio index d1296a2..e351712 100644 --- a/CANThread/CanThread.aardio +++ b/CANThread/CanThread.aardio @@ -54,6 +54,9 @@ FuncLoopMsg = function(msg){ case 117 { FuncDIDWriteValue1B(msg.wParam,msg.lParam); } + case 118 { + FuncDIDWriteValue4B(msg.wParam,msg.lParam); + } else { } @@ -87,6 +90,8 @@ FuncConnect = function(dev,chn){ //console.log("连接成功"); CANHw.GetAvailableHW(); thread.command.$Connected(); + autoval1 = dev; + autoval2 = chn; } else { FuncDisplay("连接失败"); @@ -236,6 +241,22 @@ RxTask = function(){ //console.varDump(ret[i].id); } } +//自动重连 +AutoReconnectCount=0; +AutoReconnectTaks = function(){ + AutoReconnectCount += 1; + if(AutoReconnectCount > 100){ + AutoReconnectCount = 0; + var ret,DeviceInfo,str = CANHw.GetNowInfo(); + //console.log("ret = " ++ ret); + //console.dumpJson(DeviceInfo); + //console.log(str); + if(ret == 0){ + FuncConnect(autoval1,autoval2); + } + } + +} loadcodex("\CANThread\CAN_Msg.aardio"); @@ -249,6 +270,7 @@ CT_timer.onTimer = function(){ RxTask(); //console.log("发送报文"); TxTask(); + AutoReconnectTaks(); } CT_timer.enable(); FuncDisplay("正在运行"); diff --git a/CANThread/CanThreadStart.aardio b/CANThread/CanThreadStart.aardio index 0447236..4987d4b 100644 --- a/CANThread/CanThreadStart.aardio +++ b/CANThread/CanThreadStart.aardio @@ -46,6 +46,9 @@ CT_Diag10 = function(sid){ CT_Diag22 = function(did){ ::PostThreadMessage(thrdId,110,did,0);//参考CanThread文件FuncLoopMsg函数 } +CT_Diag2EVal4B = function(did,data){ + ::PostThreadMessage(thrdId,118,did,data);//参考CanThread文件FuncLoopMsg函数 +} CT_Diag2EVal2B = function(did,data){ ::PostThreadMessage(thrdId,116,did,data);//参考CanThread文件FuncLoopMsg函数 } @@ -61,13 +64,14 @@ CT_SetDiagID = function(req,rsp){ } LastDiagRespData = {}; CT_GetLastDiagResp = function(){ - - return LastDiagRespData; + var retdata = LastDiagRespData; + LastDiagRespData = {}; + return retdata; } - -CT_UpdateCANTxMsg(0x30,200,{0,0,0x00,0, 0,0x08,0,0}); +//初始报文数据 +CT_UpdateCANTxMsg(0x30,200,{0,0,0x40,0, 0,0x08,0,0}); //CAN通讯线程 import thread.command; @@ -92,6 +96,7 @@ var CanThreadFunc = function(){ //线程函数内部要添加自已的import语句 import win; import console; + //需要在线程中查看console时取消下句的注释 //console.log("线程开始运行") loadcodex("\CANThread\CanThread.aardio");//加载线程程序 //在子线程启动消息循环 diff --git a/CANThread/Diag2Ecode.aardio b/CANThread/Diag2Ecode.aardio index ca77e41..7c0b79a 100644 --- a/CANThread/Diag2Ecode.aardio +++ b/CANThread/Diag2Ecode.aardio @@ -9,6 +9,13 @@ FuncDIDWriteStr = function(did,str){ FuncReq2E(did,data) return data; } +FuncDIDWriteValue4B = function(did,data){ + if(CANHw.isConnected() == false){ + return; + } + var txdata = {0x07,0x2E,did>>8,did&0xff,data>>24,data>>16,data>>8,data&0xff}; + CANHw.SendMsg(DiagReqID,txdata); +} FuncDIDWriteValue2B = function(did,data){ if(CANHw.isConnected() == false){ return; diff --git a/dlg/about.aardio b/dlg/about.aardio index d5072e6..8548194 100644 --- a/dlg/about.aardio +++ b/dlg/about.aardio @@ -16,8 +16,8 @@ V2.4: 增加DAC周期写入功能 V2.5: 巡航等按键增加第二路信号显示,增加调试帧开关 V2.6: 修复右边2个按键信号和基线没显示数值问题 V2.7: 信号界面增加左右按下状态 -V2.8: 增加显示错误信息 -v2.9: 修复诊断错误信号关联错误;增加读取振动参数 +V2.8: 增加显示错误信息 +v2.9: 修复诊断错误信号关联错误;增加读取振动参数;增加自动重连功能 */ winform.button.oncommand = function(id,event){ diff --git a/dlg/diagnostic.aardio b/dlg/diagnostic.aardio index d582f63..ef7ad98 100644 --- a/dlg/diagnostic.aardio +++ b/dlg/diagnostic.aardio @@ -94,7 +94,7 @@ Diag3E_Timer.onTimer = function(){ Display = function(str){ var nowtime = time(); nowtime.format="%H:%M:%S"; - var side = winform.rbLeft.checked?"左侧":"右侧"; + var side = winform.rbLeft.checked?"(左侧)":"(右侧)"; winform.edLog.print(tostring(nowtime) ++ " " ++ side ++ str); } @@ -126,28 +126,7 @@ winform.cb3E.oncommand = function(id,event){ } //import console; -GetReadThResp = function(did){ - var ret = CT_GetLastDiagResp(); - if(ret == null){ - return 0; - } - if(ret.sid == 0x62 && (ret.len >= 3)){ - var getdid = (ret.data[1]<<8) + ret.data[2]; - if(getdid != did){ - return 0; - } - //console.dumpJson(ret); - if(ret.len == 4){ - var val = (ret.data[3]<<8) + ret.data[4]; - return val; - } - if(ret.len == 3){ - var val = ret.data[3]; - return val; - } - } - return 0; -} + winform.btnReadPressTh.oncommand = function(id,event){ diff --git a/dlg/rework.aardio b/dlg/rework.aardio new file mode 100644 index 0000000..510ee64 --- /dev/null +++ b/dlg/rework.aardio @@ -0,0 +1,191 @@ +import win.ui; +/*DSG{{*/ +var winform = win.form(text="aardio form";right=984;bottom=599;bgcolor=16777215) +winform.add( +button={cls="button";text="写入";left=538;top=50;right=714;bottom=162;font=LOGFONT(h=-56);z=10}; +cbb1={cls="combobox";left=44;top=78;right=200;bottom=104;disabled=1;edge=1;font=LOGFONT(h=-16);items={};mode="dropdown";z=1}; +cbb2={cls="combobox";left=217;top=79;right=377;bottom=105;disabled=1;edge=1;font=LOGFONT(h=-16);items={};mode="dropdown";z=2}; +ed1={cls="edit";text="100";left=399;top=79;right=516;bottom=106;disabled=1;edge=1;font=LOGFONT(h=-16);num=1;z=3}; +edit={cls="edit";left=40;top=213;right=697;bottom=508;edge=1;font=LOGFONT(h=-16);multiline=1;vscroll=1;z=7}; +progress={cls="progress";left=40;top=129;right=514;bottom=149;edge=1;max=100;min=0;z=11}; +stNum={cls="static";text="0";left=800;top=213;right=873;bottom=245;center=1;font=LOGFONT(h=-16);transparent=1;z=9}; +stStatus={cls="static";text="等待写入";left=767;top=61;right=908;bottom=153;align="center";bgcolor=16777215;center=1;z=12}; +static={cls="static";text="参考电压";left=44;top=48;right=117;bottom=80;center=1;font=LOGFONT(h=-16);transparent=1;z=4}; +static2={cls="static";text="震动等级";left=219;top=49;right=292;bottom=81;center=1;font=LOGFONT(h=-16);transparent=1;z=5}; +static3={cls="static";text="振动周期";left=398;top=49;right=471;bottom=81;center=1;font=LOGFONT(h=-16);transparent=1;z=6}; +static4={cls="static";text="成功数量:";left=719;top=213;right=792;bottom=245;center=1;font=LOGFONT(h=-16);transparent=1;z=8} +) +/*}}*/ + +import color; + +var refArr = {"0x0 1V0","0x1 1V1","0x2 1V2","0x3 1V25","0x4 2V0","0x5 2V2","0x6 2V4","0x7 2V5"}; +var gainArr = {"Level0","Level1","Level2","Level3"} + +successnum = 0; + +winform.cbb1.clear(); +for(k,v in refArr){ + winform.cbb1.add(v); +} +winform.cbb1.selIndex = 4; + +winform.cbb2.clear(); +for(k,v in gainArr){ + winform.cbb2.add(v); +} +winform.cbb2.selIndex = 1; + +var reworkDisplay = function(str){ + var nowtime = time(); + nowtime.format="%H:%M:%S"; + winform.edit.print(tostring(nowtime) ++ " " ++ str); +} + + +//import console; +winform.button.oncommand = function(id,event){ + winform.stStatus.text = "写入中"; + winform.stStatus.bgcolor = 0x4FF4FF; + winform.stStatus.redraw(); + CT_SetDiagID(0x720,0x620); + reworkDisplay("左侧写入中"); + var val1,val2,val3; + CT_Diag10(0x03); + win.delay(20,1); + var temp = winform.cbb1.selIndex - 1; + CT_Diag2EVal1B(0x9002,temp); + win.delay(100,1); + winform.progress.pos = 5; + + var temp = winform.cbb2.selIndex - 1; + CT_Diag2EVal1B(0x9003,temp); + win.delay(100,1); + winform.progress.pos = 10; + + var temp = tonumber(winform.ed1.text); + CT_Diag2EVal1B(0x9004,temp); + win.delay(100,1); + winform.progress.pos = 15; + + var writedate = 0x20240304; + CT_Diag2EVal4B(0xF199,writedate); + win.delay(100,1); + winform.progress.pos = 25; + // + CT_Diag10(0x01); + win.delay(20,1); + var str = "左侧读出数据:" + var did = 0xF199; + CT_Diag22(did); + win.delay(100,1); + winform.progress.pos = 35; + var ret = GetReadThResp(did); + if(type(ret) != type.table){ + reworkDisplay("左侧数据错误"); + winform.stStatus.text = "写入失败"; + winform.stStatus.bgcolor = 0x4763FF; + winform.stStatus.redraw(); + return ; + } + //console.dumpJson(ret); + if(#ret == 4){ + var date = string.format("%02x%02x%02x%02x",ret[1],ret[2],ret[3],ret[4]) + str+= "date=" ++ date; + reworkDisplay(str); + if(date != "20240304")// + { + reworkDisplay("左侧数据错误"); + winform.stStatus.text = "写入失败"; + winform.stStatus.bgcolor = 0x4763FF; + winform.stStatus.redraw(); + return ; + } + } + else { + reworkDisplay("ret = " ++ ret); + reworkDisplay("左侧读取失败"); + winform.stStatus.text = "写入失败"; + winform.stStatus.bgcolor = 0x4763FF; + winform.stStatus.redraw(); + return ; + } + // + + + //右侧 + CT_SetDiagID(0x710,0x610); + reworkDisplay("右侧写入中"); + var val1,val2,val3; + CT_Diag10(0x03); + win.delay(20,1); + var temp = winform.cbb1.selIndex - 1; + CT_Diag2EVal1B(0x9002,temp); + win.delay(100,1); + winform.progress.pos = 50; + + var temp = winform.cbb2.selIndex - 1; + CT_Diag2EVal1B(0x9003,temp); + win.delay(100,1); + winform.progress.pos = 55; + + var temp = tonumber(winform.ed1.text); + CT_Diag2EVal1B(0x9004,temp); + win.delay(100,1); + winform.progress.pos = 60; + + CT_Diag2EVal4B(0xF199,writedate); + win.delay(100,1); + winform.progress.pos = 70; + // + CT_Diag10(0x01); + win.delay(20,1); + var str = "右侧读出数据:" + var did = 0xF199; + CT_Diag22(did); + win.delay(100,1); + winform.progress.pos = 80; + var ret = GetReadThResp(did); + if(type(ret) != type.table){ + reworkDisplay("右侧数据错误"); + winform.stStatus.text = "写入失败"; + winform.stStatus.bgcolor = 0x4763FF; + winform.stStatus.redraw(); + return ; + } + if(#ret == 4){ + var date = string.format("%02x%02x%02x%02x",ret[1],ret[2],ret[3],ret[4]) + str+= "date=" ++ date; + reworkDisplay(str); + if(date != "20240304") + { + reworkDisplay("右侧数据错误"); + winform.stStatus.text = "写入失败"; + winform.stStatus.bgcolor = 0x4763FF; + winform.stStatus.redraw(); + return ; + } + } + else { + reworkDisplay("ret = " ++ ret); + reworkDisplay("右侧读取失败"); + winform.stStatus.text = "写入失败"; + winform.stStatus.bgcolor = 0x4763FF; + winform.stStatus.redraw(); + return ; + } + + + + reworkDisplay("两侧开关写入完成"); + successnum+=1; + winform.stNum.text = successnum; + winform.progress.pos = 100; + winform.stStatus.text = "写入成功"; + winform.stStatus.bgcolor = 0x32CD32; + winform.stStatus.redraw(); +} + +winform.show(); +win.loopMessage(); +return winform; \ No newline at end of file diff --git a/dlg/setting.aardio b/dlg/setting.aardio index 0a875f1..546a4a1 100644 --- a/dlg/setting.aardio +++ b/dlg/setting.aardio @@ -9,7 +9,7 @@ cbbDev={cls="combobox";left=127;top=123;right=376;bottom=149;dl=1;dt=1;edge=1;it plus={cls="plus";text="全屏";left=133;top=316;right=216;bottom=347;align="left";dl=1;dt=1;font=LOGFONT(h=-15);iconStyle={align="left";font=LOGFONT(h=-15;name='FontAwesome')};iconText='\uF0C8 ';notify=1;textPadding={left=24};z=7}; plus5={cls="plus";text="English";left=130;top=264;right=248;bottom=295;align="left";dl=1;dt=1;font=LOGFONT(h=-20;name='FontAwesome');iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome');padding={left=5}};iconText='\uF0C8';notify=1;textPadding={left=30};z=1}; static={cls="static";left=128;top=65;right=441;bottom=81;transparent=1;z=6}; -static4={cls="static";text="V2.9 20240302";left=745;top=4;right=981;bottom=35;align="right";font=LOGFONT(h=-22);notify=1;transparent=1;z=4} +static4={cls="static";text="V2.9 20240304";left=745;top=4;right=981;bottom=35;align="right";font=LOGFONT(h=-22);notify=1;transparent=1;z=4} ) /*}}*/ @@ -95,6 +95,32 @@ setting.static4.oncommand = function(id,event){ frmChild.doModal(mainForm); } } +GetReadThResp = function(did){ + var ret = CT_GetLastDiagResp(); + if(ret == null){ + return 0; + } + if(ret.sid == 0x62 && (ret.len >= 3)){ + var getdid = (ret.data[1]<<8) + ret.data[2]; + + if(getdid != did){ + return 0; + } + + if(ret.len == 4){ + var val = (ret.data[3]<<8) + ret.data[4]; + return val; + } + if(ret.len == 3){ + var val = ret.data[3]; + return val; + } + if(ret.len > 4){ + return table.slice(ret.data,3); + } + } + return 0; +} setting.show(); win.loopMessage(); diff --git a/dlg/show.aardio b/dlg/show.aardio index 1e0dd2b..4d09229 100644 --- a/dlg/show.aardio +++ b/dlg/show.aardio @@ -9,7 +9,7 @@ button={cls="button";text="Button";left=381;top=425;right=507;bottom=451;hide=1; button2={cls="button";text="左";left=253;top=512;right=352;bottom=571;hide=1;z=43}; button3={cls="button";text="右";left=437;top=512;right=536;bottom=571;hide=1;z=44}; checkbox={cls="checkbox";text="点亮";left=112;top=31;right=198;bottom=68;ah=1;aw=1;bgcolor=16777215;checked=1;font=LOGFONT(h=-22);z=3}; -checkbox2={cls="checkbox";text="白天";left=208;top=32;right=294;bottom=69;ah=1;aw=1;bgcolor=16777215;font=LOGFONT(h=-22);z=20}; +checkbox2={cls="checkbox";text="白天";left=208;top=32;right=294;bottom=69;ah=1;aw=1;bgcolor=16777215;checked=1;font=LOGFONT(h=-22);z=20}; checkbox3={cls="checkbox";text="发送";left=20;top=30;right=106;bottom=67;ah=1;aw=1;bgcolor=16777215;checked=1;font=LOGFONT(h=-22);z=42}; plLeft={cls="plus";left=103;top=129;right=334;bottom=331;ah=1;aw=1;border={color=-7114533;width=1};z=2}; plRight={cls="plus";left=596;top=131;right=827;bottom=333;ah=1;aw=1;border={color=-7114533;width=1};z=26}; diff --git a/lib/usb2canfd.aardio b/lib/usb2canfd.aardio index f6e9ea9..6a4f40f 100644 --- a/lib/usb2canfd.aardio +++ b/lib/usb2canfd.aardio @@ -185,6 +185,19 @@ namespace usb2canfd{ return ret,DeviceInfo,funcstr; } + //获取设备信息 + GetNowInfo = function(){ + if(Hwconnected == null){ + return 0; + } + //DllHandle.USB_OpenDevice(Hwconnected); + var DeviceInfo = ..usb2canfd.DEVICE_INFO(); + var funcstr = ..raw.buffer(100); + + var ret = DllHandle.DEV_GetDeviceInfo(Hwconnected,DeviceInfo,funcstr); + + return ret,DeviceInfo,funcstr; + } //获取有效硬件 GetAvailableHW = function(){ @@ -244,7 +257,7 @@ namespace usb2canfd{ } else { - Hwconnected = null + //Hwconnected = null Chconntected = null; } diff --git a/main.aardio b/main.aardio index 798e1df..6e812c2 100644 --- a/main.aardio +++ b/main.aardio @@ -9,8 +9,8 @@ logo={cls="bkplus";text='\uF0E4';left=6;top=9;right=35;bottom=34;color=15780518; navDiag={cls="plus";text="诊断";left=421;top=5;right=541;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF108';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=8}; navFirst={cls="plus";text="控制";left=180;top=5;right=300;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF00A';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=3}; navHelp={cls="plus";text="信号";left=300;top=5;right=420;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF012';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=7}; -navSetting={cls="plus";text="设置";left=541;top=5;right=661;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF0AD';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=6}; -plus={cls="plus";text="返工";left=661;top=5;right=781;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF0AD';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=9}; +navRework={cls="plus";text="返工";left=661;top=5;right=781;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF0AD';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=9}; +navSetting={cls="plus";text="设置";left=541;top=5;right=661;bottom=40;align="left";color=16777215;dl=1;dt=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-19;name='FontAwesome');padding={left=12;top=4}};iconText='\uF085';notify=1;paddingLeft=1;paddingRight=1;paddingTop=3;textPadding={left=39;bottom=1};x=0.5;y=0.2;z=6}; titleBar={cls="bkplus";left=0;top=0;right=985;bottom=41;bgcolor=14977280;dl=1;dr=1;dt=1;z=2} ) /*}}*/ @@ -23,7 +23,8 @@ var tbs = win.ui.tabs( mainForm.navFirst, mainForm.navSetting, mainForm.navHelp, - mainForm.navDiag + mainForm.navDiag, + mainForm.navRework, ); tbs.skin({ @@ -45,6 +46,7 @@ tbs.loadForm(1,"\dlg\show.aardio" ); tbs.loadForm(2,"\dlg\switch.aardio" ); tbs.loadForm(3,"\dlg\diagnostic.aardio"); tbs.loadForm(4,"\dlg\setting.aardio" ); +tbs.loadForm(5,"\dlg\rework.aardio" ); subscribe("语言",function(conf){ if(conf == "English"){