v2.9 增加自动重连;增加返工页面

This commit is contained in:
sunbeam 2024-03-13 19:51:28 +08:00
parent d776e4680c
commit 2820dbedaf
10 changed files with 280 additions and 35 deletions

View File

@ -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("正在运行");

View File

@ -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");//加载线程程序
//在子线程启动消息循环

View File

@ -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;

View File

@ -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){

View File

@ -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){

191
dlg/rework.aardio Normal file
View File

@ -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;

View File

@ -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();

View File

@ -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};

View File

@ -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;
}

View File

@ -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"){