增加log记录、VIN记录

This commit is contained in:
sunbeam 2024-10-09 16:27:03 +08:00
parent 3df8c235b0
commit f12c067215
5 changed files with 190 additions and 25 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
/dist /dist
/.build /.build
/log
/配置文件.ini

View File

@ -9,10 +9,8 @@ static={cls="static";text="Static";left=21;top=17;right=458;bottom=340;transpare
更新履历 = /* 更新履历 = /*
V0.1_20230320: 初版 V0.1_20230320: 初版
V0.2_20230321: 修复右板无法刷写,增加点亮功能,增加更改履历 V0.2_20240921: 中英文版本
V0.3_20230321: 修复关闭界面后程序没有完全关闭的问题 v0.3_20241009: 增加日志记录;增加VIN记录;
V0.4_20230322: 修复偶发刷写卡在请求下载的问题
V0.5_20230401: 兼容0331程序无法读DID
*/ */
winform.button.oncommand = function(id,event){ winform.button.oncommand = function(id,event){

View File

@ -1,7 +1,7 @@
import fonts.fontAwesome; import fonts.fontAwesome;
import win.ui; import win.ui;
/*DSG{{*/ /*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( mainForm.add(
btnFlashLeft={cls="button";text="左侧刷写 btnFlashLeft={cls="button";text="左侧刷写
Left side flashing";left=30;top=129;right=168;bottom=243;z=2}; 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}; 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}; 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}; 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}; static3={cls="static";text="刷写进度 Flashing 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} 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 win;
import usb2canfd; import usb2canfd;
import win.timer; 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 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){//显示日志 Display = function(str){//显示日志
var nowtime = time(); var nowtime = time();
nowtime.format="%H:%M:%S"; 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; bootstate = false;
if(isSuccess == true){ if(isSuccess == true){
Display("刷写成功,用时 " + usetime + " S") 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.bgcolor = 0x32CD32;
mainForm.plus.background = 0xFF32CD32; mainForm.plus.background = 0xFF32CD32;
if(side_now == "L"){
左成功 += 1;
}
else {
右成功 += 1;
}
} }
else { else {
Display("刷写失败"); Display("刷写失败");
@ -95,8 +160,25 @@ listener.$SendEnd = function(isSuccess){
mainForm.plus.text = "刷写失败 Flashing failed"; mainForm.plus.text = "刷写失败 Flashing failed";
//mainForm.plus.bgcolor = 0x2200E3; //mainForm.plus.bgcolor = 0x2200E3;
mainForm.plus.background = 0xFFE30022; 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; import thread.table;
thrdTable = thread.table("多线程共享数据"); thrdTable = thread.table("多线程共享数据");
@ -137,6 +219,7 @@ var DiagStopReq = function(){
//import console; //import console;
//console.log("1"); //console.log("1");
mainForm.btnFlashLeft.oncommand = function(id,event){ mainForm.btnFlashLeft.oncommand = function(id,event){
if(thrdTable.设备连接状态 == 0){ if(thrdTable.设备连接状态 == 0){
Display("设备未连接"); Display("设备未连接");
Display("device not connected Display("device not connected
@ -152,12 +235,27 @@ mainForm.btnFlashLeft.oncommand = function(id,event){
"); ");
return; 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; bootstate = true;
mainForm.edit.text = ""; mainForm.edit.text = "";
Display("VIN:" ++ VINCODE ++ '\n');
::PostThreadMessage(thrdId,106,0x720,0x620);//自定义消息 ::PostThreadMessage(thrdId,106,0x720,0x620);//自定义消息
Display("开始刷写流程"); Display(tostring(currentDate));
Display("Start flashing process Display("左侧开始刷写流程");
"); Display('Start flashing process\n');
starttime = time.now(); starttime = time.now();
DiagBootReq(1);//左侧 DiagBootReq(1);//左侧
} }
@ -212,8 +310,8 @@ autoconnect.onTimer = function(){
} }
else { else {
import console; //import console;
console.log(thrdTable["电源电压"]) //console.log(thrdTable["电源电压"])
autoconnect_state = 3; autoconnect_state = 3;
} }
@ -260,14 +358,31 @@ mainForm.btnFlashRight.oncommand = function(id,event){
"); ");
return; 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; bootstate = true;
mainForm.edit.text = ""; mainForm.edit.text = "";
Display("VIN:" ++ VINCODE ++ '\n');
::PostThreadMessage(thrdId,106,0x710,0x610);//自定义消息 ::PostThreadMessage(thrdId,106,0x710,0x610);//自定义消息
Display("开始刷写流程"); Display(tostring(currentDate));
Display("右侧开始刷写流程");
Display("Start flashing process Display("Start flashing process
"); ");
starttime = time.now(); starttime = time.now();
DiagBootReq(2);//左侧 DiagBootReq(2);//
} }
mainForm.btnStopBoot.oncommand = function(id,event){ mainForm.btnStopBoot.oncommand = function(id,event){
@ -278,6 +393,16 @@ autoconnect.enable();
//import console; //import console;
//console.log("io.exis = ",io.exist("\res\P417_SWTL_20240709.S19")); //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 ); thrdHandle,thrdId = thread.create( CanThread );
mainForm.show(); mainForm.show();

View File

@ -324,9 +324,23 @@ boottimer.onTimer = function(){
FuncBootSeq(); FuncBootSeq();
} }
LeftVibrationFault = 0;
LeftTouchFault = 0;
LeftPressSensorFault = 0;
LeftCommonFault = 0;
RightVibrationFault = 0;
RightTouchFault = 0;
RightPressSensorFault = 0;
RightCommonFault = 0;
timer1 = win.timer(,1); timer1 = win.timer(,1);
diagresp = {} diagresp = {}
getbitdata = function(byte,startbit,len){
return ((byte>>startbit) & ((1<<len) - 1));
}
timer1.onTimer = function(){ timer1.onTimer = function(){
if(CANHw.isConnected() == false){ if(CANHw.isConnected() == false){
return; return;
@ -369,8 +383,24 @@ timer1.onTimer = function(){
} }
} }
else { else {
//console.log(..string.format("%x",ret[i].id)); var id = ret[i].id & 0x7FFFFFFF;
//显示报文 select(id) {
case 0x34 {
//console.log("get 0x34");
LeftVibrationFault = getbitdata(ret[i].data[1],0,2);
LeftTouchFault = getbitdata(ret[i].data[1],2,2);
LeftPressSensorFault = getbitdata(ret[i].data[1],4,3);
LeftCommonFault = getbitdata(ret[i].data[1],7,1);
}
case 0x38 {
RightVibrationFault = getbitdata(ret[i].data[1],0,2);
RightTouchFault = getbitdata(ret[i].data[1],2,2);
RightPressSensorFault = getbitdata(ret[i].data[1],4,3);
RightCommonFault = getbitdata(ret[i].data[1],7,1);
}
else {
}
}
} }
} }

View File

@ -19,7 +19,7 @@ FuncWait = function(sid){
} }
else { else {
FuncDisplay("刷写错误 步骤" + bootstate); FuncDisplay("刷写错误 步骤" + bootstate);
FuncDisplay("Brushing error steps" + bootstate++" FuncDisplay("Flashing error steps" + bootstate++"
"); ");
boottimer.disable(); boottimer.disable();
thread.command.$SendEnd(false); thread.command.$SendEnd(false);
@ -38,8 +38,7 @@ FuncWait = function(sid){
bootcount += 1; bootcount += 1;
if(bootcount >= 400){ if(bootcount >= 400){
FuncDisplay("步骤" + bootstate + "超时 " + tostring(sid,16)); FuncDisplay("步骤" + bootstate + "超时 " + tostring(sid,16));
FuncDisplay("Step" + bootstate + " Timeout " + tostring(sid,16)++" FuncDisplay("Step" + bootstate + " Timeout " + tostring(sid,16)++'\n');
");
thread.command.$SendEnd(false); thread.command.$SendEnd(false);
boottimer.disable(); boottimer.disable();
return 3;//超时 return 3;//超时
@ -221,6 +220,19 @@ FuncBootSeq = function(){
boottime = 1; boottime = 1;
nextstate(0); nextstate(0);
delaycount = 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){ if(sendstate == 0){
//FuncSendBlockInit(0); //FuncSendBlockInit(0);
@ -554,8 +566,7 @@ FuncBootSeq = function(){
case 23 { case 23 {
if(sendstate == 0){ if(sendstate == 0){
FuncDisplay("读取版本"); FuncDisplay("读取版本");
FuncDisplay("Read version FuncDisplay('Read version\n');
");
FuncReadDID(0xF195);//读取软件版本 FuncReadDID(0xF195);//读取软件版本
delaycount = 0; delaycount = 0;
FuncClearState(); FuncClearState();
@ -571,8 +582,7 @@ FuncBootSeq = function(){
case 24 { case 24 {
if(sendstate == 0){ if(sendstate == 0){
FuncDisplay("读取软件日期"); FuncDisplay("读取软件日期");
FuncDisplay("Read software date FuncDisplay('Read software date \n');
");
FuncReadDID(0xF18A);//读取软件版本 FuncReadDID(0xF18A);//读取软件版本
FuncClearState(); FuncClearState();
} }