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"?>
<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"/>
<folder name="资源文件" path="res" embed="true" local="false" ignored="false">
<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.4_20230322: 修复偶发刷写卡在请求下载的问题
V0.5_20230401: 兼容0331程序无法读DID
V0.6_20230724: 增加读供应商ID功能增加断开连接增加烧写过程中禁用其他按键
V0.7_20230724: 增加刷写速度可选功能
*/
winform.button.oncommand = function(id,event){

View File

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

View File

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

View File

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