From f12c06721586943503ea6a9ee7560410c46aa997 Mon Sep 17 00:00:00 2001 From: sunbeam Date: Wed, 9 Oct 2024 16:27:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0log=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E3=80=81VIN=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + dlg/about.aardio | 6 +- main.aardio | 149 +++++++++++++++++++++++++++++++++++---- user/CanThread.aardio | 34 ++++++++- user/DiagBootcode.aardio | 24 +++++-- 5 files changed, 190 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index baaf1ed..0c60bd8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /dist /.build +/log +/配置文件.ini diff --git a/dlg/about.aardio b/dlg/about.aardio index f419d2e..5312cec 100644 --- a/dlg/about.aardio +++ b/dlg/about.aardio @@ -9,10 +9,8 @@ static={cls="static";text="Static";left=21;top=17;right=458;bottom=340;transpare 更新履历 = /* V0.1_20230320: 初版 -V0.2_20230321: 修复右板无法刷写,增加点亮功能,增加更改履历 -V0.3_20230321: 修复关闭界面后程序没有完全关闭的问题 -V0.4_20230322: 修复偶发刷写卡在请求下载的问题 -V0.5_20230401: 兼容0331程序无法读DID +V0.2_20240921: 中英文版本 +v0.3_20241009: 增加日志记录;增加VIN记录; */ winform.button.oncommand = function(id,event){ diff --git a/main.aardio b/main.aardio index f018375..9286ea9 100644 --- a/main.aardio +++ b/main.aardio @@ -1,7 +1,7 @@ import fonts.fontAwesome; import win.ui; /*DSG{{*/ -mainForm = win.form(text="CAN_Bootloader";right=699;bottom=465;border="dialog frame";max=false) +mainForm = win.form(text="CAN_Bootloader";right=699;bottom=473;border="dialog frame";max=false) mainForm.add( btnFlashLeft={cls="button";text="左侧刷写 Left side flashing";left=30;top=129;right=168;bottom=243;z=2}; @@ -15,17 +15,60 @@ Waiting for flashing";left=33;top=375;right=316;bottom=460;bgcolor=12639424;z=10 progress={cls="progress";left=361;top=435;right=689;bottom=463;edge=1;max=100;min=0;z=4}; static={cls="static";text='\uF127';left=43;top=30;right=114;bottom=98;align="center";center=1;color=255;font=LOGFONT(h=-56;name='FontAwesome');transparent=1;z=8}; static2={cls="static";text="设备未连接,请先连接设备";left=126;top=42;right=326;bottom=91;transparent=1;z=9}; -static3={cls="static";text="刷写进度 Brush writing progress";left=361;top=410;right=688;bottom=430;transparent=1;z=5}; -static5={cls="static";text="V0.2_20240921";left=545;top=1;right=689;bottom=17;align="right";center=1;notify=1;transparent=1;z=6} +static3={cls="static";text="刷写进度 Flashing writing progress";left=361;top=410;right=688;bottom=430;transparent=1;z=5}; +static4={cls="static";text="no.";left=39;top=102;right=141;bottom=122;align="right";transparent=1;z=11}; +static5={cls="static";text="V0.3_20241009";left=545;top=1;right=689;bottom=17;align="right";center=1;notify=1;transparent=1;z=6}; +static6={cls="static";text="00000";left=145;top=102;right=203;bottom=120;transparent=1;z=12} ) /*}}*/ import win; import usb2canfd; import win.timer; +import win.inputBox; +import fsys.ini; + +import console + +// 获取当前时间 +var currentDate = time.now() + +// 设置格式化字符串为 "YYYYMMDD" +currentDate.format = "%Y%m%d" + + +side_now = ""; var bootstate = false;//boot状态标志 +var inifile=fsys.ini("\配置文件.ini"); +//读取小节对象 +sec = inifile.getSection("计数"); + +if(sec.当前计数 == null){ + sec.当前计数 = 1; + sec.左成功 = 0; + sec.左失败 = 0; + sec.右成功 = 0; + sec.右失败 = 0; + //sec.VIN = "YSM4ZPAA0SF405299"; + sec.save() +} + +当前计数 = sec.当前计数; +左成功 = sec.左成功; +左失败 = sec.左失败; +右成功 = sec.右成功; +右失败 = sec.右失败; + +//console.dump(sec); + +mainForm.static6.text = string.format("%05d",当前计数); + +//VINCODE = sec.VIN; + +//console.log(VINCODE); + Display = function(str){//显示日志 var nowtime = time(); nowtime.format="%H:%M:%S"; @@ -45,6 +88,21 @@ else { "); } +var write_log_file = function(id,ifsuccess,vin){ + if(ifsuccess){ + success = "success"; + } + else { + success = "failed"; + } + + var vinr6 = string.right(vin,6); + var logfile_name = string.format("\log\%05d_%s_%s_%s.txt",当前计数,success,vinr6,side_now); + //console.log(logfile_name); + //string.save(logfile_name,"VIN = " ++ vin); + string.save(logfile_name,'test'); + string.save(logfile_name, mainForm.edit.text); +} @@ -82,11 +140,18 @@ listener.$SendEnd = function(isSuccess){ bootstate = false; if(isSuccess == true){ Display("刷写成功,用时 " + usetime + " S") - Display("Brushed successfully, took "+usetime+" S + Display("Flashing successfully, took "+usetime+" S "); - mainForm.plus.text = "刷写完成\Brushed successfully"; + mainForm.plus.text = "刷写完成\Flashing successfully"; //mainForm.plus.bgcolor = 0x32CD32; mainForm.plus.background = 0xFF32CD32; + if(side_now == "L"){ + 左成功 += 1; + } + else { + 右成功 += 1; + } + } else { Display("刷写失败"); @@ -95,8 +160,25 @@ listener.$SendEnd = function(isSuccess){ mainForm.plus.text = "刷写失败 Flashing failed"; //mainForm.plus.bgcolor = 0x2200E3; mainForm.plus.background = 0xFFE30022; + if(side_now == "L"){ + 左失败 += 1; + } + else { + 右失败 += 1; + } } + + write_log_file(当前计数,isSuccess,VINCODE); + 当前计数 += 1; + mainForm.static6.text = string.format("%05d",当前计数); + sec.当前计数 = 当前计数; + sec.左成功 = 左成功; + sec.左失败 = 左失败; + sec.右成功 = 右成功; + sec.右失败 = 右失败; + //sec.VIN = VINCODE; + sec.save(); } import thread.table; thrdTable = thread.table("多线程共享数据"); @@ -137,6 +219,7 @@ var DiagStopReq = function(){ //import console; //console.log("1"); mainForm.btnFlashLeft.oncommand = function(id,event){ + if(thrdTable.设备连接状态 == 0){ Display("设备未连接"); Display("device not connected @@ -152,12 +235,27 @@ mainForm.btnFlashLeft.oncommand = function(id,event){ "); return; } + // 创建一个输入对话框 + var inputBox = win.inputBox(); + inputBox.info.text = "请输入VIN码:"; + inputBox.input.text = VINCODE; + inputBox.text = "输入VIN码"; + // 显示输入对话框并获取用户输入 + var result = inputBox.doModal(); + if(result == null){ + Display('请输入正确的VIN'); + Display('Please enter the correct VIN\n') + return; + } + VINCODE = result; + side_now = "L"; bootstate = true; mainForm.edit.text = ""; + Display("VIN:" ++ VINCODE ++ '\n'); ::PostThreadMessage(thrdId,106,0x720,0x620);//自定义消息 - Display("开始刷写流程"); - Display("Start flashing process - "); + Display(tostring(currentDate)); + Display("左侧开始刷写流程"); + Display('Start flashing process\n'); starttime = time.now(); DiagBootReq(1);//左侧 } @@ -212,8 +310,8 @@ autoconnect.onTimer = function(){ } else { - import console; - console.log(thrdTable["电源电压"]) + //import console; + //console.log(thrdTable["电源电压"]) autoconnect_state = 3; } @@ -260,14 +358,31 @@ mainForm.btnFlashRight.oncommand = function(id,event){ "); return; } + // 创建一个输入对话框 + var inputBox = win.inputBox(); + inputBox.info.text = "请输入VIN码:"; + //inputBox.input.text = VINCODE; + inputBox.text = "输入VIN码"; + // 显示输入对话框并获取用户输入 + var result = inputBox.doModal(); + if(result == null ){ + Display('请输入正确的VIN'); + Display('Please enter the correct VIN\n') + return; + } + VINCODE = result; + + side_now = "R"; bootstate = true; mainForm.edit.text = ""; + Display("VIN:" ++ VINCODE ++ '\n'); ::PostThreadMessage(thrdId,106,0x710,0x610);//自定义消息 - Display("开始刷写流程"); + Display(tostring(currentDate)); + Display("右侧开始刷写流程"); Display("Start flashing process "); starttime = time.now(); - DiagBootReq(2);//左侧 + DiagBootReq(2);// } mainForm.btnStopBoot.oncommand = function(id,event){ @@ -278,6 +393,16 @@ autoconnect.enable(); //import console; //console.log("io.exis = ",io.exist("\res\P417_SWTL_20240709.S19")); +click_times = 0; +mainForm.static5.oncommand = function(id,event){ + click_times+=1; + if(click_times >= 5){ + + var frmChild = mainForm.loadForm("\dlg\about.aardio"); + frmChild.show(); + click_times = 0; + } +} thrdHandle,thrdId = thread.create( CanThread ); mainForm.show(); diff --git a/user/CanThread.aardio b/user/CanThread.aardio index c2131de..b24f851 100644 --- a/user/CanThread.aardio +++ b/user/CanThread.aardio @@ -324,9 +324,23 @@ boottimer.onTimer = function(){ FuncBootSeq(); } +LeftVibrationFault = 0; +LeftTouchFault = 0; +LeftPressSensorFault = 0; +LeftCommonFault = 0; + +RightVibrationFault = 0; +RightTouchFault = 0; +RightPressSensorFault = 0; +RightCommonFault = 0; timer1 = win.timer(,1); diagresp = {} + +getbitdata = function(byte,startbit,len){ + return ((byte>>startbit) & ((1<= 400){ FuncDisplay("步骤" + bootstate + "超时 " + tostring(sid,16)); - FuncDisplay("Step" + bootstate + " Timeout " + tostring(sid,16)++" - "); + FuncDisplay("Step" + bootstate + " Timeout " + tostring(sid,16)++'\n'); thread.command.$SendEnd(false); boottimer.disable(); return 3;//超时 @@ -221,6 +220,19 @@ FuncBootSeq = function(){ boottime = 1; nextstate(0); delaycount = 0; + if(DiagReqID == 0x720){ + FuncDisplay("LeftVibrationFault = " ++ LeftVibrationFault); + FuncDisplay("LeftTouchFault = " ++ LeftTouchFault); + FuncDisplay("LeftPressSensorFault = " ++ LeftPressSensorFault); + FuncDisplay("LeftCommonFault = " ++ LeftCommonFault); + } + else { + FuncDisplay("RightVibrationFault = " ++ RightVibrationFault); + FuncDisplay("RightTouchFault = " ++ RightTouchFault); + FuncDisplay("RightPressSensorFault = " ++ RightPressSensorFault); + FuncDisplay("RightCommonFault = " ++ RightCommonFault); + } + FuncDisplay('\n'); /* if(sendstate == 0){ //FuncSendBlockInit(0); @@ -554,8 +566,7 @@ FuncBootSeq = function(){ case 23 { if(sendstate == 0){ FuncDisplay("读取版本"); - FuncDisplay("Read version - "); + FuncDisplay('Read version\n'); FuncReadDID(0xF195);//读取软件版本 delaycount = 0; FuncClearState(); @@ -571,8 +582,7 @@ FuncBootSeq = function(){ case 24 { if(sendstate == 0){ FuncDisplay("读取软件日期"); - FuncDisplay("Read software date - "); + FuncDisplay('Read software date \n'); FuncReadDID(0xF18A);//读取软件版本 FuncClearState(); }