diff --git a/lib/usb2canfd.aardio b/lib/usb2canfd.aardio index 8f0eea5..10f37f5 100644 --- a/lib/usb2canfd.aardio +++ b/lib/usb2canfd.aardio @@ -116,7 +116,7 @@ namespace usb2canfd{ //刷新硬件 FlashHw = function(){ - import console; + if(DllHandle = null){ //DLL为空,返回 AvailableHW = {} @@ -198,7 +198,6 @@ namespace usb2canfd{ //关闭设备 CloseDevice = function(){ - //console.print("-----------------CloseDevice ---------") if(Hwconnected == null){ return; } diff --git a/main.aardio b/main.aardio index 26e11c1..1938925 100644 --- a/main.aardio +++ b/main.aardio @@ -3,13 +3,15 @@ import win.ui; mainForm = win.form(text="CAN_Bootloader";right=599;bottom=399;border="dialog frame";max=false) mainForm.add( btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=4}; -btnFlash={cls="button";text="开始刷写";left=147;top=198;right=246;bottom=226;z=9}; +btnFlash={cls="button";text="开始刷写";left=148;top=197;right=247;bottom=225;z=9}; btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=2}; btnOpen={cls="button";text="打开文件";left=32;top=197;right=131;bottom=225;z=8}; -btnReadF186={cls="button";text="读取当前会话";left=32;top=236;right=131;bottom=264;z=13}; -btnReadHw={cls="button";text="读取硬件版本号";left=147;top=276;right=246;bottom=304;z=12}; -btnReadSw={cls="button";text="读取软件版本号";left=32;top=276;right=131;bottom=304;z=10}; -btnTest={cls="button";text="停止";left=147;top=237;right=246;bottom=265;z=11}; +btnReadF186={cls="button";text="读取当前会话";left=33;top=228;right=132;bottom=256;z=13}; +btnReadF198={cls="button";text="读取F198";left=33;top=291;right=132;bottom=319;z=19}; +btnReadF199={cls="button";text="读取F199";left=148;top=291;right=247;bottom=319;z=20}; +btnReadHw={cls="button";text="读取硬件版本号";left=148;top=261;right=247;bottom=289;z=12}; +btnReadSw={cls="button";text="读取软件版本号";left=33;top=260;right=132;bottom=288;z=10}; +btnTest={cls="button";text="停止";left=148;top=229;right=247;bottom=257;z=11}; cbbChannel={cls="combobox";left=58;top=64;right=191;bottom=90;edge=1;items={};mode="dropdown";z=3}; cbbDev={cls="combobox";left=58;top=27;right=191;bottom=53;edge=1;items={};mode="dropdown";z=1}; edFile={cls="richedit";left=8;top=131;right=288;bottom=187;border=1;disabled=1;edge=1;multiline=1;wrap=1;z=14}; @@ -27,33 +29,34 @@ import win; import usb2canfd; import win.timer; -var boot_count = 0; +var boot_count = 0;//boot时间计数器 +var bootstate = false;//boot状态标志 timer_bootcount = win.timer(mainForm,100); -timer_bootcount.onTimer = function(){ +timer_bootcount.onTimer = function(){//boot时间定时器,100ms间隔 boot_count++; } -Display = function(str){ +Display = function(str){//显示日志 mainForm.edit.print(tostring(time()) + " " + str); } -mainForm.edFile.wrap = true; -CANHw = usb2canfd.USB2CANHW(); +CANHw = usb2canfd.USB2CANHW();//尝试加载CAN dll var ret = CANHw.LoadDll(); if(ret == 0){ Display("DLL加载成功"); } - +//初始化界面 mainForm.cbbChannel.add("通道1"); mainForm.cbbChannel.add("通道2"); mainForm.cbbChannel.selIndex = 1 +//刷新按键 mainForm.btnFresh.oncommand = function(id,event){ - mainForm.cbbDev.clear(); - var hwnum = CANHw.FlashHw(); + mainForm.cbbDev.clear();//清空下拉框,防止反复刷新叠加 + var hwnum = CANHw.FlashHw();//获取硬件数量 if(hwnum == 0){ mainForm.cbbDev.text = "未找到硬件" } @@ -105,6 +108,7 @@ listener.$Connected = function(){ } listener.$SendEnd = function(isSuccess){ timer_bootcount.disable(); + bootstate = false; if(isSuccess == true){ Display("刷写成功,用时 " + boot_count/10 + " S") } @@ -160,6 +164,10 @@ mainForm.btnFlash.oncommand = function(id,event){ Display("请连接设备"); return; } + if(bootstate == true){ + return ; + } + bootstate = true; mainForm.edit.text = ""; Display("开始刷写流程"); timer_bootcount.enable(); @@ -173,6 +181,24 @@ mainForm.btnOpen.oncommand = function(id,event){ ::PostThreadMessage(thrdId,104,0,0)//自定义消息-打开文件 } +//程序关闭 +mainForm.onClose = function(hwnd,message,wParam,lParam){ + ::PostThreadMessage(thrdId,105,0,0)//自定义消息 + thread.waitClose(thrdHandle); + + //PLinHw.isConnected()///待完善 + //console.print("线程已关闭") + //console.pause() +} + +mainForm.btnReadF198.oncommand = function(id,event){ + DiagReadDID(0xF198); +} + +mainForm.btnReadF199.oncommand = function(id,event){ + DiagReadDID(0xF199); +} + thrdHandle,thrdId = thread.create( CanThread ) diff --git a/res/icon.ico b/res/icon.ico new file mode 100644 index 0000000..dfbb71b Binary files /dev/null and b/res/icon.ico differ diff --git a/user/CanThread.aardio b/user/CanThread.aardio index cd10a36..097e1a6 100644 --- a/user/CanThread.aardio +++ b/user/CanThread.aardio @@ -11,8 +11,6 @@ DiagGloableID = 0x18DB33F1; stopflag = 0; //注册一个消息钩子函数 FuncLoopMsg = function(msg){ - //console.log( "收到消息",msg.message ); - //console.dumpJson(msg); select(msg.message) { case 100 {//刷新硬件 FuncFreshHw(); @@ -33,6 +31,9 @@ FuncLoopMsg = function(msg){ thread.command.$ShowPath(ret); } } + case 105 {//停止boot + thread.stop(0); + } case 110 {//readDID FuncReadDID(msg.wParam); } @@ -103,8 +104,7 @@ loadcodex("\user\S19Decode.aardio"); RespState = 0; FuncDiagPro = function(diagmsg){ - //console.log("诊断服务") - //console.dumpJson(diagmsg); + select(diagmsg.sid) { case 0x50 { FuncDiag10Pro(table.slice(diagmsg.data,1,diagmsg.len)) @@ -153,22 +153,23 @@ FuncStartBoot = function(){ boottimer.enable(); FuncDisplay("开始刷写"); - + stopflag = 0; } var PackNext = 0x21; var Packdata = {}; var PackID = 0; -FuncSendPackage = function(){ +var FuncSendPackage = function(){ while(#Packdata > 0) { + sleep(0.3); var data = {PackNext,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC}; var max = #Packdata > 7 ? 7 : #Packdata; for(i=1;max;1){ data[i+1] = table.remove(Packdata); } CANHw.SendMsg(PackID,data); - sleep(0.3); + PackNext += 1; if(PackNext > 0x2f){ PackNext = 0x20; @@ -213,7 +214,7 @@ timer1.onTimer = function(){ diagresp["next"] = 0x21; table.append(diagresp["data"],table.slice(ret[i].data,4)); } - elseif(ret[i].data[1] <= 0x06){//单帧 + elseif(ret[i].data[1] <= 0x07){//单帧 //console.dumpJson() diagresp["sid"] = ret[i].data[2]; diagresp["len"] = ret[i].data[1]-1; diff --git a/user/Diag22code.aardio b/user/Diag22code.aardio index 4a33976..41436c1 100644 --- a/user/Diag22code.aardio +++ b/user/Diag22code.aardio @@ -25,13 +25,20 @@ FuncDiag22Pro = function(data){ FuncDisplay("软件版本号"); FuncDisplay(string.pack(table.slice(data,3))); } + case 0xF198 { + FuncDisplay("repair_shopcode"); + FuncDisplay(string.pack(table.slice(data,3))); + } + case 0xF199 { + FuncDisplay("installation_date"); + FuncDisplay(string.format("%x%X%x%x",data[3],data[4],data[5],data[6])); + } case 0xF186 { FuncDisplay("当前会话: " + tostring(data[3])); - } - case !=0 { } else { + FuncDisplay("未知DID - " + did); } } diff --git a/user/DiagBootcode.aardio b/user/DiagBootcode.aardio index ab3ca43..9f7a881 100644 --- a/user/DiagBootcode.aardio +++ b/user/DiagBootcode.aardio @@ -31,7 +31,7 @@ FuncWait = function(sid){ } bootcount += 1; if(bootcount >= 400){ - FuncDisplay("超时 " + tostring(sid,16)); + FuncDisplay("步骤" + bootstate + "超时 " + tostring(sid,16)); thread.command.$SendEnd(false); boottimer.disable(); return 3;//超时 @@ -259,7 +259,7 @@ FuncBootSeq = function(){ case 9 { if(sendstate == 0){ FuncClearState(); - FuncDIDWriteStr(0xf198,"0123456789abcdef1234");//写入repair_shopcode + FuncDIDWriteStr(0xf198,"Daming_CANBootload ");//写入repair_shopcode } else { diff --git a/user/securety.aardio b/user/securety.aardio index c5e83c3..eda5f7e 100644 --- a/user/securety.aardio +++ b/user/securety.aardio @@ -1,4 +1,3 @@ -import console; var g_aes128_cbc_mask = @@ -236,14 +235,9 @@ AES128_CBC_XTIME = function(x){ showtab = function(tab,name){ - console.log(name); var str = name + " = "; for(k,v in tab){ - //console.log(tostring(v,16)); - //str += tostring(v,16); - //str += " " str = string.format("[%d] = %x",k,v ); - console.log(str); } //console.log(str); } @@ -272,10 +266,3 @@ GenerateKeyEx = function(seed,level){ //console.log("l_id = " + l_id) } - -/* -var ret = GenerateKeyEx({0xff,0xff,0xff,0xff},0x01); -console.log("结果") -showtab(ret,"key"); -console.pause(true); -*/ \ No newline at end of file