v0.7:增加速度可调

This commit is contained in:
sunbeam 2023-08-15 09:24:26 +08:00
parent a32c87b161
commit 393e555806
5 changed files with 162 additions and 40 deletions

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<project ver="10" name="CAN_Bootloader" libEmbed="true" icon="res\icon.ico" ui="win" output="CAN_Bootloader.exe" CompanyName="单位名称" FileDescription="CAN_Bootloader" LegalCopyright="Copyright (C) 作者 2022" ProductName="CAN_Bootloader" InternalName="CAN_Bootloader" FileVersion="0.0.0.03" ProductVersion="0.0.0.03" publishDir="/dist/" dstrip="true" local="false" ignored="false"> <project ver="10" name="CAN_Bootloader" libEmbed="true" icon="res\icon.ico" ui="win" output="CAN_Bootloader.exe" CompanyName="单位名称" FileDescription="CAN_Bootloader" LegalCopyright="Copyright (C) 作者 2022" ProductName="CAN_Bootloader" InternalName="CAN_Bootloader" FileVersion="0.0.0.04" ProductVersion="0.0.0.04" publishDir="/dist/" dstrip="true" local="false" ignored="false">
<file name="main.aardio" path="main.aardio" comment="main.aardio"/> <file name="main.aardio" path="main.aardio" comment="main.aardio"/>
<folder name="资源文件" path="res" embed="true" local="false" ignored="false"> <folder name="资源文件" path="res" embed="true" local="false" ignored="false">
<file name="icon.ico" path="res\icon.ico" comment="res\icon.ico"/> <file name="icon.ico" path="res\icon.ico" comment="res\icon.ico"/>

View File

@ -13,6 +13,8 @@ V0.2_20230321: 修复右板无法刷写,增加点亮功能,增加更改履
V0.3_20230321: 修复关闭界面后程序没有完全关闭的问题 V0.3_20230321: 修复关闭界面后程序没有完全关闭的问题
V0.4_20230322: 修复偶发刷写卡在请求下载的问题 V0.4_20230322: 修复偶发刷写卡在请求下载的问题
V0.5_20230401: 兼容0331程序无法读DID V0.5_20230401: 兼容0331程序无法读DID
V0.6_20230724: 增加读供应商ID功能增加断开连接增加烧写过程中禁用其他按键
V0.7_20230724: 增加刷写速度可选功能
*/ */
winform.button.oncommand = function(id,event){ winform.button.oncommand = function(id,event){

View File

@ -2,33 +2,38 @@ 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=465;border="dialog frame";max=false)
mainForm.add( mainForm.add(
btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=4}; btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=5};
btnDiag1001={cls="button";text="默认会话";left=98;top=229;right=190;bottom=260;z=23}; btnDiag1001={cls="button";text="默认会话";left=98;top=229;right=190;bottom=260;z=24};
btnDiag1002={cls="button";text="boot会话";left=192;top=229;right=284;bottom=260;z=22}; btnDiag1002={cls="button";text="boot会话";left=192;top=229;right=284;bottom=260;z=23};
btnDiag1003={cls="button";text="扩展会话";left=286;top=229;right=378;bottom=260;z=21}; btnDiag1003={cls="button";text="扩展会话";left=286;top=229;right=378;bottom=260;z=22};
btnFlash={cls="button";text="开始刷写";left=276;top=368;right=375;bottom=396;z=9}; btnDisconnect={cls="button";text="断开";left=302;top=64;right=387;bottom=90;z=29};
btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=2}; btnFlash={cls="button";text="开始刷写";left=276;top=368;right=375;bottom=396;z=10};
btnOpen={cls="button";text="打开文件";left=272;top=101;right=371;bottom=129;z=8}; btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=3};
btnReadF186={cls="button";text="读取当前会话";left=4;top=229;right=96;bottom=260;z=13}; btnOpen={cls="button";text="打开文件";left=272;top=101;right=371;bottom=129;z=9};
btnReadF18A={cls="button";text="供应商ID";left=98;top=304;right=190;bottom=332;z=27}; btnReadF186={cls="button";text="读取当前会话";left=4;top=229;right=96;bottom=260;z=14};
btnReadF198={cls="button";text="读取F198";left=286;top=261;right=378;bottom=289;z=19}; btnReadF18A={cls="button";text="供应商ID";left=98;top=304;right=190;bottom=332;z=28};
btnReadF199={cls="button";text="读取F199";left=192;top=261;right=284;bottom=289;z=20}; btnReadF198={cls="button";text="读取F198";left=286;top=261;right=378;bottom=289;z=20};
btnReadHw={cls="button";text="硬件版本号";left=98;top=261;right=190;bottom=289;z=12}; btnReadF199={cls="button";text="读取F199";left=192;top=261;right=284;bottom=289;z=21};
btnReadSw={cls="button";text="软件版本号";left=4;top=261;right=96;bottom=289;z=10}; btnReadHw={cls="button";text="硬件版本号";left=98;top=261;right=190;bottom=289;z=13};
btnTest={cls="button";text="停止";left=277;top=400;right=376;bottom=428;z=11}; btnReadSw={cls="button";text="软件版本号";left=4;top=261;right=96;bottom=289;z=11};
button={cls="button";text="点亮";left=6;top=304;right=94;bottom=332;z=26}; btnTest={cls="button";text="停止";left=277;top=400;right=376;bottom=428;z=12};
cbbChannel={cls="combobox";left=58;top=64;right=191;bottom=90;edge=1;items={};mode="dropdown";z=3}; button={cls="button";text="点亮";left=6;top=304;right=94;bottom=332;z=27};
cbbDev={cls="combobox";left=58;top=27;right=191;bottom=53;edge=1;items={};mode="dropdown";z=1}; cbbChannel={cls="combobox";left=58;top=64;right=191;bottom=90;edge=1;items={};mode="dropdown";z=4};
edFile={cls="richedit";left=8;top=131;right=371;bottom=209;border=1;disabled=1;edge=1;multiline=1;wrap=1;z=14}; cbbDev={cls="combobox";left=58;top=27;right=191;bottom=53;edge=1;items={};mode="dropdown";z=2};
edit={cls="edit";left=390;top=19;right=692;bottom=401;autovscroll=false;edge=1;multiline=1;vscroll=1;z=5}; edFile={cls="richedit";left=8;top=131;right=371;bottom=209;border=1;disabled=1;edge=1;multiline=1;wrap=1;z=15};
progress={cls="progress";left=389;top=435;right=689;bottom=463;edge=1;max=100;min=0;z=15}; edit={cls="edit";left=390;top=19;right=692;bottom=401;autovscroll=false;edge=1;multiline=1;vscroll=1;z=6};
radiobutton={cls="radiobutton";text="左板";left=277;top=310;right=365;bottom=329;checked=1;z=24}; groupbox={cls="groupbox";text="刷写速度";left=9;top=385;right=153;bottom=427;edge=1;z=1};
radiobutton2={cls="radiobutton";text="右板";left=277;top=336;right=365;bottom=355;z=25}; progress={cls="progress";left=389;top=435;right=689;bottom=463;edge=1;max=100;min=0;z=16};
static={cls="static";text="设备";left=1;top=28;right=61;bottom=52;align="center";center=1;transparent=1;z=6}; radiobutton={cls="radiobutton";text="左板";left=277;top=310;right=365;bottom=329;checked=1;group=1;z=25};
static2={cls="static";text="通道";left=1;top=66;right=61;bottom=90;align="center";center=1;transparent=1;z=7}; radiobutton2={cls="radiobutton";text="右板";left=277;top=336;right=365;bottom=355;z=26};
static3={cls="static";text="刷写进度";left=389;top=408;right=442;bottom=428;transparent=1;z=16}; rbSpeedHigh={cls="radiobutton";text="高";left=98;top=402;right=134;bottom=421;z=32};
static4={cls="static";text="烧录APP";left=13;top=108;right=85;bottom=132;center=1;transparent=1;z=17}; rbSpeedLow={cls="radiobutton";text="低";left=20;top=402;right=56;bottom=421;group=1;z=30};
static5={cls="static";text="V0.5_20230401";left=545;top=1;right=689;bottom=17;align="right";center=1;notify=1;transparent=1;z=18} rbSpeedMiddle={cls="radiobutton";text="中";left=59;top=402;right=95;bottom=421;checked=1;z=31};
static={cls="static";text="设备";left=1;top=28;right=61;bottom=52;align="center";center=1;transparent=1;z=7};
static2={cls="static";text="通道";left=1;top=66;right=61;bottom=90;align="center";center=1;transparent=1;z=8};
static3={cls="static";text="刷写进度";left=389;top=408;right=442;bottom=428;transparent=1;z=17};
static4={cls="static";text="烧录APP";left=13;top=108;right=85;bottom=132;center=1;transparent=1;z=18};
static5={cls="static";text="V0.7_20230724";left=545;top=1;right=689;bottom=17;align="right";center=1;notify=1;transparent=1;z=19}
) )
/*}}*/ /*}}*/
@ -60,6 +65,7 @@ mainForm.cbbChannel.add("通道2");
mainForm.cbbChannel.selIndex = 1 mainForm.cbbChannel.selIndex = 1
//刷新按键 //刷新按键
mainForm.btnFresh.oncommand = function(id,event){ mainForm.btnFresh.oncommand = function(id,event){
mainForm.cbbDev.clear();//清空下拉框,防止反复刷新叠加 mainForm.cbbDev.clear();//清空下拉框,防止反复刷新叠加
@ -116,8 +122,20 @@ listener.$Connected = function(){
mainForm.btnFresh.disabled = true; mainForm.btnFresh.disabled = true;
mainForm.cbbDev.disabled = true; mainForm.cbbDev.disabled = true;
mainForm.cbbChannel.disabled = true; mainForm.cbbChannel.disabled = true;
mainForm.btnDisconnect.disabled = false;
flag_connected = 1; flag_connected = 1;
} }
listener.$Disconnected = function(){
mainForm.btnConnect.disabled = false;
mainForm.btnFresh.disabled = false;
mainForm.cbbDev.disabled = false;
mainForm.cbbChannel.disabled = false;
mainForm.btnDisconnect.disabled = true;
flag_connected = 0;
}
listener.$SendEnd = function(isSuccess){ listener.$SendEnd = function(isSuccess){
//timer_bootcount.disable(); //timer_bootcount.disable();
var usetime = time.now().diffsecond(starttime); var usetime = time.now().diffsecond(starttime);
@ -125,6 +143,7 @@ listener.$SendEnd = function(isSuccess){
if(isSuccess == true){ if(isSuccess == true){
Display("刷写成功,用时 " + usetime + " S") Display("刷写成功,用时 " + usetime + " S")
} }
EnableAll();
} }
//线程函数 //线程函数
@ -137,6 +156,8 @@ var CanThread = function(){
//在子线程启动消息循环 //在子线程启动消息循环
win.loopMessage(FuncLoopMsg) win.loopMessage(FuncLoopMsg)
} }
//开启线程
thrdHandle,thrdId = thread.create( CanThread );
DiagReadDID = function(did){ DiagReadDID = function(did){
::PostThreadMessage(thrdId,110,did,0)//自定义消息 ::PostThreadMessage(thrdId,110,did,0)//自定义消息
} }
@ -200,10 +221,43 @@ mainForm.btnFlash.oncommand = function(id,event){
starttime = time.now(); starttime = time.now();
//timer_bootcount.enable(); //timer_bootcount.enable();
DiagBootReq(); DiagBootReq();
DisableAll();
} }
DisableAll = function(){
mainForm.btnOpen.disabled = 1;
mainForm.btnReadF18A.disabled = 1;
mainForm.btnReadF186.disabled = 1;
mainForm.btnReadF198.disabled = 1;
mainForm.btnReadF199.disabled = 1;
mainForm.btnReadHw.disabled = 1;
mainForm.btnReadSw.disabled = 1;
mainForm.btnDiag1003.disabled = 1;
mainForm.btnDiag1002.disabled = 1;
mainForm.btnDiag1001.disabled = 1;
mainForm.button.disabled = 1;
mainForm.radiobutton.disabled = 1;
mainForm.radiobutton2.disabled = 1;
mainForm.btnFlash.disabled = 1;
}
EnableAll = function(){
mainForm.btnOpen.disabled = 0;
mainForm.btnReadF18A.disabled = 0;
mainForm.btnReadF186.disabled = 0;
mainForm.btnReadF198.disabled = 0;
mainForm.btnReadF199.disabled = 0;
mainForm.btnReadHw.disabled = 0;
mainForm.btnReadSw.disabled = 0;
mainForm.btnDiag1003.disabled = 0;
mainForm.btnDiag1002.disabled = 0;
mainForm.btnDiag1001.disabled = 0;
mainForm.button.disabled = 0;
mainForm.radiobutton.disabled = 0;
mainForm.radiobutton2.disabled = 0;
mainForm.btnFlash.disabled = 0;
}
mainForm.btnOpen.oncommand = function(id,event){ mainForm.btnOpen.oncommand = function(id,event){
::PostThreadMessage(thrdId,104,1,0)//自定义消息-打开文件 ::PostThreadMessage(thrdId,104,1,0)//自定义消息-打开文件
} }
@ -283,6 +337,39 @@ mainForm.btnReadF18A.oncommand = function(id,event){
DiagReadDID(0xF18A); DiagReadDID(0xF18A);
} }
thrdHandle,thrdId = thread.create( CanThread ); mainForm.btnDisconnect.oncommand = function(id,event){
::PostThreadMessage(thrdId,120,0,0)//自定义消息
}
setSpeed = function(speed){
::PostThreadMessage(thrdId,121,speed,0)//自定义消息
}
if(mainForm.rbSpeedLow.checked == true){
setSpeed(1);
}
if(mainForm.rbSpeedMiddle.checked == true){
setSpeed(2);
}
if(mainForm.rbSpeedHigh.checked == true){
setSpeed(3);
}
mainForm.rbSpeedLow.oncommand = function(id,event){
setSpeed(1);
}
mainForm.rbSpeedMiddle.oncommand = function(id,event){
setSpeed(2);
}
mainForm.rbSpeedHigh.oncommand = function(id,event){
setSpeed(3);
}
mainForm.btnDisconnect.disabled = true;
mainForm.show(); mainForm.show();
return win.loopMessage(); return win.loopMessage();

View File

@ -9,6 +9,7 @@ DiagReqID = 0x720;//0x18dadff1;
DiagRespID = 0x620;//0x18daf1df; DiagRespID = 0x620;//0x18daf1df;
DiagGloableID = 0x7DF;//0x18DB33F1; DiagGloableID = 0x7DF;//0x18DB33F1;
stopflag = 0; stopflag = 0;
FlashSpeed = 1;
//注册一个消息钩子函数 //注册一个消息钩子函数
FuncLoopMsg = function(msg){ FuncLoopMsg = function(msg){
select(msg.message) { select(msg.message) {
@ -73,6 +74,12 @@ FuncLoopMsg = function(msg){
case 114 { case 114 {
FuncReq27(msg.wParam); FuncReq27(msg.wParam);
} }
case 120 {
FuncDisconnect();
}
case 121 {
FuncSetSpeed(msg.wParam);
}
else { else {
} }
@ -119,6 +126,12 @@ FuncConnect = function(dev,chn){
} }
} }
FuncDisconnect = function(){
CANHw.CloseDevice();
thread.command.$Disconnected();
}
FuncDisplay = function(str){ FuncDisplay = function(str){
thread.command.$Display(str);//"线程" + thread.command.$Display(str);//"线程" +
} }
@ -203,6 +216,7 @@ var timedll = raw.loadDll("Winmm.dll");
//timedll.timeBeginPeriod(1); //timedll.timeBeginPeriod(1);
var tickdll = raw.loadDll("Kernel32.dll"); var tickdll = raw.loadDll("Kernel32.dll");
var mydelay = function(ms){ var mydelay = function(ms){
if(ms == 0)return;
import time.performance; import time.performance;
var tk = time.performance.tick(); var tk = time.performance.tick();
while((time.performance.tick() - tk) < ms){ while((time.performance.tick() - tk) < ms){
@ -211,9 +225,27 @@ var mydelay = function(ms){
} }
FuncSetSpeed = function(speed){
select(speed) {
case 1 {
FlashSpeed = 4;
}
case 2 {
FlashSpeed = 1;
}
case 3 {
FlashSpeed = 0;
}
else {
FlashSpeed = 2;
}
}
}
var FuncSendPackage = function(){ var FuncSendPackage = function(){
timer1.disable(); timer1.disable();
//timedll.timeBeginPeriod(1); timedll.timeBeginPeriod(1);
while(#Packdata > 0) while(#Packdata > 0)
{ {
//sleep(1); //sleep(1);
@ -222,12 +254,7 @@ var FuncSendPackage = function(){
for(i=1;max;1){ for(i=1;max;1){
data[i+1] = table.remove(Packdata); data[i+1] = table.remove(Packdata);
} }
//thread.delay(0.5); mydelay(FlashSpeed);
//mydelay(2);
//timedll.timeBeginPeriod(1);
//sleep(1);
//
CANHw.SendMsg(PackID,data); CANHw.SendMsg(PackID,data);
//timedll.timeEndPeriod(1); //timedll.timeEndPeriod(1);
PackNext += 1; PackNext += 1;
@ -235,7 +262,7 @@ var FuncSendPackage = function(){
PackNext = 0x20; PackNext = 0x20;
} }
} }
timedll.timeEndPeriod(1);
timer1.enable(); timer1.enable();
} }
FuncPushPackage = function(ID,data){ FuncPushPackage = function(ID,data){

View File

@ -3,6 +3,7 @@
var bootstate = 0; var bootstate = 0;
var bootcount = 0; var bootcount = 0;
var sendstate = 0; var sendstate = 0;
var FuncSendBlockApp_sendflag = 0;
FuncWait = function(sid){ FuncWait = function(sid){
if(RespState == (sid + 0x40)){//正响应 if(RespState == (sid + 0x40)){//正响应
//bootcount = 0; //bootcount = 0;
@ -88,6 +89,9 @@ FuncSendBlockInit = function(id){
alldata_blocknum = len; alldata_blocknum = len;
block_sended = 0; block_sended = 0;
sendblockstate = 0; sendblockstate = 0;
FuncSendBlockApp_sendflag = 0;
//FuncDisplay("清除flag = " ++ FuncSendBlockApp_sendflag);
return 0; return 0;
} }
nextstate = function(val){ nextstate = function(val){
@ -97,10 +101,12 @@ nextstate = function(val){
block_sended += 1; block_sended += 1;
} }
} }
var FuncSendBlockApp_sendflag = 0
FuncSendBlockApp = function(){ FuncSendBlockApp = function(){
//FuncDisplay("sendblockstate = " ++ sendblockstate);
select(sendblockstate) { select(sendblockstate) {
case 0{ case 0{
//FuncDisplay("flag = " ++ FuncSendBlockApp_sendflag);
if(FuncSendBlockApp_sendflag == 0){ if(FuncSendBlockApp_sendflag == 0){
FuncDisplay("请求下载"); FuncDisplay("请求下载");
FuncReq34(alldata[blocknum]["address"],#alldata[blocknum]["data"]); FuncReq34(alldata[blocknum]["address"],#alldata[blocknum]["data"]);