更新
This commit is contained in:
parent
cb2a256dc5
commit
aed398775a
@ -3,10 +3,11 @@
|
|||||||
<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"/>
|
||||||
|
<file name="p417_SWTL_20240722.S19" path="res\p417_SWTL_20240722.S19" comment="res\p417_SWTL_20240722.S19"/>
|
||||||
|
<file name="p417_SWTR_20240722.S19" path="res\p417_SWTR_20240722.S19" comment="res\p417_SWTR_20240722.S19"/>
|
||||||
</folder>
|
</folder>
|
||||||
<folder name="窗体文件" path="dlg" comment="目录" embed="true" local="false" ignored="false">
|
<folder name="窗体文件" path="dlg" comment="目录" embed="true" local="false" ignored="false">
|
||||||
<file name="about.aardio" path="dlg\about.aardio" comment="dlg\about.aardio"/>
|
<file name="about.aardio" path="dlg\about.aardio" comment="dlg\about.aardio"/>
|
||||||
<file name="诊断子窗口.aardio" path="dlg\诊断子窗口.aardio" comment="dlg\诊断子窗口.aardio"/>
|
|
||||||
</folder>
|
</folder>
|
||||||
<folder name="user" path="user" embed="true" comment="目录" local="false" ignored="false">
|
<folder name="user" path="user" embed="true" comment="目录" local="false" ignored="false">
|
||||||
<file name="CanThread.aardio" path="user\CanThread.aardio" comment="user\CanThread.aardio"/>
|
<file name="CanThread.aardio" path="user\CanThread.aardio" comment="user\CanThread.aardio"/>
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
import win.ui;
|
|
||||||
/*DSG{{*/
|
|
||||||
var winform = win.form(text="诊断读取";right=679;bottom=319;border="thin";max=false;mode="popup")
|
|
||||||
winform.add(
|
|
||||||
btnDID_1701={cls="button";text="电机当前位置霍尔数";left=36;top=162;right=163;bottom=193;z=5};
|
|
||||||
btnDID_1702={cls="button";text="软止点位置霍尔数";left=36;top=203;right=163;bottom=234;z=6};
|
|
||||||
btnDID_1706={cls="button";text="软止点学习状态";left=178;top=40;right=305;bottom=71;z=7};
|
|
||||||
btnDID_1707={cls="button";text="座椅电机电流";left=178;top=80;right=305;bottom=111;z=8};
|
|
||||||
btnDID_1708={cls="button";text="模块输入信号状态";left=178;top=121;right=305;bottom=152;z=9};
|
|
||||||
btnDID_1709={cls="button";text="模块输出信号状态";left=178;top=162;right=305;bottom=193;z=11};
|
|
||||||
btnDID_170B={cls="button";text="系统供电电压";left=178;top=203;right=305;bottom=234;z=10};
|
|
||||||
btnDID_F187={cls="button";text="车辆备用零部件编号";left=36;top=40;right=163;bottom=71;z=2};
|
|
||||||
btnDID_F18A={cls="button";text="供应商公司名称代码";left=36;top=80;right=163;bottom=111;z=3};
|
|
||||||
btnDID_F197={cls="button";text="ECU 系统名称";left=36;top=121;right=163;bottom=152;z=4};
|
|
||||||
groupbox={cls="groupbox";text="DID";left=16;top=12;right=328;bottom=260;edge=1;z=1};
|
|
||||||
groupbox2={cls="groupbox";text="DTC";left=343;top=12;right=655;bottom=260;edge=1;z=12}
|
|
||||||
)
|
|
||||||
/*}}*/
|
|
||||||
|
|
||||||
winform.btnDID_F187.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF187);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_F18A.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF18A);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_F197.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF197);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_1701.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x1701);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_1702.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x1702);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_1706.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x1706);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_1707.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x1707);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_1708.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x1708);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_1709.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x1709);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.btnDID_170B.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0x170B);
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.onClose = function(hwnd,message,wParam,lParam){
|
|
||||||
winform.show(false);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
winform.show();
|
|
||||||
win.loopMessage();
|
|
||||||
return winform;
|
|
@ -55,6 +55,25 @@ namespace usb2canfd{
|
|||||||
BYTE CAN_TXFP; //发送优先级管理,0-标识符决定,1-发送请求顺序决定
|
BYTE CAN_TXFP; //发送优先级管理,0-标识符决定,1-发送请求顺序决定
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CAN_FILTER_CONFIG{
|
||||||
|
ctor( /*输入构造函数所需要的参数*/ ){
|
||||||
|
|
||||||
|
};
|
||||||
|
type=me;
|
||||||
|
/*对象的所有成员必须用分号分隔*/
|
||||||
|
BYTE Enable; //使能该过滤器,1-使能,0-禁止
|
||||||
|
BYTE FilterIndex; //过滤器索引号,取值范围为0到13
|
||||||
|
BYTE FilterMode; //过滤器模式,0-屏蔽位模式,1-标识符列表模式
|
||||||
|
BYTE ExtFrame; //过滤的帧类型标志,为1 代表要过滤的为扩展帧,为0 代表要过滤的为标准帧。
|
||||||
|
INT ID_Std_Ext; //验收码ID
|
||||||
|
INT ID_IDE; //验收码IDE
|
||||||
|
INT ID_RTR; //验收码RTR
|
||||||
|
INT MASK_Std_Ext; //屏蔽码ID,该项只有在过滤器模式为屏蔽位模式时有用
|
||||||
|
INT MASK_IDE; //屏蔽码IDE,该项只有在过滤器模式为屏蔽位模式时有用
|
||||||
|
INT MASK_RTR; //屏蔽码RTR,该项只有在过滤器模式为屏蔽位模式时有用
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//CANfd信息帧的数据类型定义
|
//CANfd信息帧的数据类型定义
|
||||||
class CANFD_MSG{
|
class CANFD_MSG{
|
||||||
ctor( /*输入构造函数所需要的参数*/ ){
|
ctor( /*输入构造函数所需要的参数*/ ){
|
||||||
@ -137,7 +156,7 @@ namespace usb2canfd{
|
|||||||
//加载DLL
|
//加载DLL
|
||||||
LoadDll = function(){
|
LoadDll = function(){
|
||||||
try{
|
try{
|
||||||
DllHandle = ..raw.loadDll("USB2XXX.dll")
|
DllHandle = ..raw.loadDll("\USB2XXX.dll")
|
||||||
}
|
}
|
||||||
catch(err)
|
catch(err)
|
||||||
{
|
{
|
||||||
@ -191,6 +210,30 @@ namespace usb2canfd{
|
|||||||
return AvailableHW;
|
return AvailableHW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetFilter = function(index){
|
||||||
|
CANFilter = ..usb2canfd.CAN_FILTER_CONFIG();
|
||||||
|
CANFilter.FilterIndex = 0;
|
||||||
|
CANFilter.Enable = 1;
|
||||||
|
CANFilter.ExtFrame = 0; //需要过滤接收的帧为标准帧
|
||||||
|
CANFilter.FilterMode = 1;//标识符列表模式
|
||||||
|
CANFilter.ID_IDE = 0; //接收到的数据帧IDE必须为1,也就是必须为扩展帧数据
|
||||||
|
CANFilter.ID_RTR = 0; //接收到的帧类型必须为数据帧
|
||||||
|
CANFilter.ID_Std_Ext = 0x620;//接收到的帧ID必须等于CANFilter.ID_Std_Ext设置的值
|
||||||
|
var ret = DllHandle.CAN_Filter_Init(AvailableHW[index].hLINHW,0,CANFilter);
|
||||||
|
|
||||||
|
CANFilter.FilterIndex = 1;
|
||||||
|
CANFilter.ID_Std_Ext = 0x610;
|
||||||
|
var ret = DllHandle.CAN_Filter_Init(AvailableHW[index].hLINHW,0,CANFilter);
|
||||||
|
|
||||||
|
|
||||||
|
for(i=2;13;1){
|
||||||
|
CANFilter.FilterIndex = i;
|
||||||
|
CANFilter.Enable = 0;
|
||||||
|
DllHandle.CAN_Filter_Init(AvailableHW[index].hLINHW,0,CANFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//打开设备,包括初始化通道
|
//打开设备,包括初始化通道
|
||||||
OpenDevice = function(index,channel,canfd){
|
OpenDevice = function(index,channel,canfd){
|
||||||
if(index > HwNum)
|
if(index > HwNum)
|
||||||
@ -227,7 +270,7 @@ namespace usb2canfd{
|
|||||||
canconfig.CAN_Mode = 0x80;//0-正常模式 1-环回模式 0x80终端电阻
|
canconfig.CAN_Mode = 0x80;//0-正常模式 1-环回模式 0x80终端电阻
|
||||||
|
|
||||||
canconfig.CAN_ABOM = 0;//禁止自动离线
|
canconfig.CAN_ABOM = 0;//禁止自动离线
|
||||||
canconfig.CAN_NART = 1;//禁止报文重传
|
canconfig.CAN_NART = 0;//禁止报文重传
|
||||||
canconfig.CAN_RFLM = 0;//FIFO满之后覆盖旧报文
|
canconfig.CAN_RFLM = 0;//FIFO满之后覆盖旧报文
|
||||||
canconfig.CAN_TXFP = 1;//发送请求决定发送顺序
|
canconfig.CAN_TXFP = 1;//发送请求决定发送顺序
|
||||||
//配置波特率,波特率 = 42M/(BRP*(SJW+BS1+BS2))
|
//配置波特率,波特率 = 42M/(BRP*(SJW+BS1+BS2))
|
||||||
@ -237,6 +280,7 @@ namespace usb2canfd{
|
|||||||
canconfig.CAN_SJW = 2;
|
canconfig.CAN_SJW = 2;
|
||||||
ret = DllHandle.CAN_Init(AvailableHW[index].hLINHW,channel,canconfig);
|
ret = DllHandle.CAN_Init(AvailableHW[index].hLINHW,channel,canconfig);
|
||||||
//console.log("init ret = " + ret);
|
//console.log("init ret = " + ret);
|
||||||
|
this.SetFilter(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
canfd_connected = canfd;
|
canfd_connected = canfd;
|
||||||
@ -349,14 +393,22 @@ namespace usb2canfd{
|
|||||||
else {
|
else {
|
||||||
//CAN
|
//CAN
|
||||||
do{
|
do{
|
||||||
var msgbuf = ..usb2canfd.CAN_MSG();
|
//raw.convertArray(raw.sizeof(..usb2canfd.CAN_MSG())
|
||||||
ret = DllHandle.CAN_GetMsgWithSize(Hwconnected,CANIndex,msgbuf,1);
|
var msgbuf = {};
|
||||||
|
for(i=1;10;1){
|
||||||
|
//msgbuf.push(new ..usb2canfd.CAN_MS())
|
||||||
|
var temp = ..usb2canfd.CAN_MSG()
|
||||||
|
..table.push(msgbuf,temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
//var msgbuf = ..raw.toarray(10,"struct",..usb2canfd.CAN_MS);
|
||||||
|
ret = DllHandle.CAN_GetMsgWithSize(Hwconnected,CANIndex,msgbuf[1],1);
|
||||||
if(ret == 1){
|
if(ret == 1){
|
||||||
var data = {};
|
var data = {};
|
||||||
for(i=1;msgbuf.DataLen;1){
|
for(i=1;msgbuf[1].DataLen;1){
|
||||||
data[i] = msgbuf.Data[i];
|
data[i] = msgbuf[1].Data[i];
|
||||||
}
|
}
|
||||||
var msg = {"id"=msgbuf.ID;"data"=data;};//
|
var msg = {"id"=msgbuf[1].ID;"data"=data;};//
|
||||||
..table.push(retdata,msg);
|
..table.push(retdata,msg);
|
||||||
}
|
}
|
||||||
}while(ret > 0)
|
}while(ret > 0)
|
||||||
@ -388,6 +440,19 @@ namespace usb2canfd{
|
|||||||
return ret,2,res_data;
|
return ret,2,res_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetPower = function(state){
|
||||||
|
var ret = DllHandle.LIN_EX_CtrlPowerOut(Hwconnected,state);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetPower = function(){
|
||||||
|
var buf = ..raw.buffer(10);
|
||||||
|
var ret = DllHandle.LIN_EX_GetVbatValue(Hwconnected,buf);
|
||||||
|
|
||||||
|
return ret,buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
346
main.aardio
346
main.aardio
@ -1,33 +1,18 @@
|
|||||||
|
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=465;border="dialog frame";max=false)
|
||||||
mainForm.add(
|
mainForm.add(
|
||||||
btnConnect={cls="button";text="连接";left=204;top=64;right=289;bottom=90;z=4};
|
btnFlashLeft={cls="button";text="左侧刷写";left=30;top=129;right=168;bottom=243;z=2};
|
||||||
btnDiag1001={cls="button";text="默认会话";left=98;top=229;right=190;bottom=260;z=23};
|
btnFlashRight={cls="button";text="右侧刷写";left=181;top=131;right=319;bottom=245;z=7};
|
||||||
btnDiag1002={cls="button";text="boot会话";left=192;top=229;right=284;bottom=260;z=22};
|
btnStopBoot={cls="button";text="停止";left=29;top=272;right=319;bottom=346;z=3};
|
||||||
btnDiag1003={cls="button";text="扩展会话";left=286;top=229;right=378;bottom=260;z=21};
|
edit={cls="edit";left=361;top=19;right=692;bottom=401;autovscroll=false;edge=1;multiline=1;vscroll=1;z=1};
|
||||||
btnFlash={cls="button";text="开始刷写";left=276;top=368;right=375;bottom=396;z=9};
|
plus={cls="plus";text="等待刷写";left=33;top=380;right=318;bottom=434;bgcolor=12639424;z=10};
|
||||||
btnFresh={cls="button";text="刷新";left=204;top=28;right=288;bottom=54;z=2};
|
progress={cls="progress";left=361;top=435;right=689;bottom=463;edge=1;max=100;min=0;z=4};
|
||||||
btnOpen={cls="button";text="打开文件";left=272;top=101;right=371;bottom=129;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};
|
||||||
btnReadF186={cls="button";text="读取当前会话";left=4;top=229;right=96;bottom=260;z=13};
|
static2={cls="static";text="设备未连接,请先连接设备";left=126;top=42;right=326;bottom=91;transparent=1;z=9};
|
||||||
btnReadF198={cls="button";text="读取F198";left=286;top=261;right=378;bottom=289;z=19};
|
static3={cls="static";text="刷写进度";left=361;top=410;right=414;bottom=430;transparent=1;z=5};
|
||||||
btnReadF199={cls="button";text="读取F199";left=192;top=261;right=284;bottom=289;z=20};
|
static5={cls="static";text="V0.1_20240711";left=545;top=1;right=689;bottom=17;align="right";center=1;notify=1;transparent=1;z=6}
|
||||||
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}
|
|
||||||
)
|
)
|
||||||
/*}}*/
|
/*}}*/
|
||||||
|
|
||||||
@ -42,15 +27,7 @@ Display = function(str){//显示日志
|
|||||||
nowtime.format="%H:%M:%S";
|
nowtime.format="%H:%M:%S";
|
||||||
mainForm.edit.print(tostring(nowtime) + " " + str);
|
mainForm.edit.print(tostring(nowtime) + " " + str);
|
||||||
}
|
}
|
||||||
//遍历目录
|
|
||||||
//import console;
|
|
||||||
/*
|
|
||||||
import fsys.fileInfo;
|
|
||||||
info = fsys.fileInfo("C:\Users\fcb19\Desktop\dll\libusb-1.0.dll");
|
|
||||||
console.log(info.writeTime);
|
|
||||||
execute("pause")
|
|
||||||
raw.loadDll("C:\Users\fcb19\Desktop\dll\libusb-1.0.dll");
|
|
||||||
*/
|
|
||||||
CANHw = usb2canfd.USB2CANHW();//尝试加载CAN dll
|
CANHw = usb2canfd.USB2CANHW();//尝试加载CAN dll
|
||||||
var ret = CANHw.LoadDll();
|
var ret = CANHw.LoadDll();
|
||||||
if(ret == 0){
|
if(ret == 0){
|
||||||
@ -61,42 +38,9 @@ else {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//初始化界面
|
|
||||||
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();//获取硬件数量
|
|
||||||
if(hwnum == 0){
|
|
||||||
mainForm.cbbDev.text = "未找到硬件"
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var allhw = CANHw.GetAvailableHW();
|
|
||||||
for(i=1;#allhw;1){
|
|
||||||
mainForm.cbbDev.add(allhw[i].name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mainForm.cbbDev.selIndex = 1
|
|
||||||
::PostThreadMessage(thrdId,100,0,0)//自定义消息
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnConnect.oncommand = function(id,event){
|
|
||||||
var canfd_check = 0x80;//mainForm.checkbox.checked?0x80:0x00;
|
|
||||||
::PostThreadMessage(thrdId,101,mainForm.cbbDev.selIndex,(mainForm.cbbChannel.selIndex - 1)|canfd_check)//自定义消息
|
|
||||||
/*
|
|
||||||
var ret = CANHw.OpenDevice(mainForm.cbbDev.selIndex,mainForm.cbbChannel.selIndex - 1);//通道为0和1
|
|
||||||
if(ret == 0){
|
|
||||||
Display("连接成功");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Display("连接失败");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
//CAN通讯线程
|
//CAN通讯线程
|
||||||
import thread.command;
|
import thread.command;
|
||||||
@ -106,11 +50,11 @@ listener.$Display = function(str){
|
|||||||
Display(str);
|
Display(str);
|
||||||
}
|
}
|
||||||
listener.$ShowPath = function(str){
|
listener.$ShowPath = function(str){
|
||||||
mainForm.edFile.text = str;
|
//mainForm.edFile.text = str;
|
||||||
|
|
||||||
}
|
}
|
||||||
listener.$ShowFlashDrvPath = function(str){
|
listener.$ShowFlashDrvPath = function(str){
|
||||||
mainForm.edFile2.text = str;
|
//mainForm.edFile2.text = str;
|
||||||
}
|
}
|
||||||
listener.$SetProgress = function(pos){
|
listener.$SetProgress = function(pos){
|
||||||
if(pos >= 0 && pos <= 100){
|
if(pos >= 0 && pos <= 100){
|
||||||
@ -119,11 +63,8 @@ listener.$SetProgress = function(pos){
|
|||||||
}
|
}
|
||||||
|
|
||||||
listener.$Connected = function(){
|
listener.$Connected = function(){
|
||||||
mainForm.btnConnect.disabled = true;
|
Display("设备连接成功");
|
||||||
mainForm.btnFresh.disabled = true;
|
thrdTable.设备连接状态 = 1;
|
||||||
mainForm.cbbDev.disabled = true;
|
|
||||||
mainForm.cbbChannel.disabled = true;
|
|
||||||
flag_connected = 1;
|
|
||||||
}
|
}
|
||||||
listener.$SendEnd = function(isSuccess){
|
listener.$SendEnd = function(isSuccess){
|
||||||
//timer_bootcount.disable();
|
//timer_bootcount.disable();
|
||||||
@ -131,160 +72,185 @@ listener.$SendEnd = function(isSuccess){
|
|||||||
bootstate = false;
|
bootstate = false;
|
||||||
if(isSuccess == true){
|
if(isSuccess == true){
|
||||||
Display("刷写成功,用时 " + usetime + " S")
|
Display("刷写成功,用时 " + usetime + " S")
|
||||||
|
mainForm.plus.text = "刷写完成";
|
||||||
|
//mainForm.plus.bgcolor = 0x32CD32;
|
||||||
|
mainForm.plus.background = 0xFF32CD32;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Display("刷写失败");
|
||||||
|
mainForm.plus.text = "刷写失败";
|
||||||
|
//mainForm.plus.bgcolor = 0x2200E3;
|
||||||
|
mainForm.plus.background = 0xFFE30022;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
import thread.table;
|
||||||
|
thrdTable = thread.table("多线程共享数据");
|
||||||
|
thrdTable.设备连接状态 = 0;
|
||||||
|
thrdTable.设备 = {};
|
||||||
|
thrdTable.test = "123"
|
||||||
|
thrdTable["文件加载状态"] = false;
|
||||||
|
thrdTable["电源电压"] = 0;
|
||||||
//线程函数
|
//线程函数
|
||||||
var CanThread = function(){
|
var CanThread = function(){
|
||||||
//线程函数内部要添加自已的import语句
|
//线程函数内部要添加自已的import语句
|
||||||
import win;
|
import win;
|
||||||
import console;
|
import console;
|
||||||
|
import thread.table;
|
||||||
|
thrdTable = thread.table("多线程共享数据");
|
||||||
//console.log("线程开始运行")
|
//console.log("线程开始运行")
|
||||||
|
//console.log(t_thrdTable.test);
|
||||||
loadcodex("\user\CanThread.aardio");//加载线程程序
|
loadcodex("\user\CanThread.aardio");//加载线程程序
|
||||||
|
|
||||||
//在子线程启动消息循环
|
//在子线程启动消息循环
|
||||||
win.loopMessage(FuncLoopMsg)
|
win.loopMessage(FuncLoopMsg)
|
||||||
}
|
}
|
||||||
DiagReadDID = function(did){
|
|
||||||
::PostThreadMessage(thrdId,110,did,0)//自定义消息
|
var DiagBootReq = function(id){
|
||||||
}
|
::PostThreadMessage(thrdId,102,id,0)//自定义消息
|
||||||
var Diag10Req = function(num){
|
mainForm.plus.text = "刷写中,请勿断开电源或USB连接";
|
||||||
::PostThreadMessage(thrdId,111,num,0)//自定义消息
|
//mainForm.plus.bgcolor = 0x00CCFF;
|
||||||
}
|
mainForm.plus.background = 0xFF00CCFF;
|
||||||
var DiagBootReq = function(){
|
|
||||||
::PostThreadMessage(thrdId,102,0,0)//自定义消息
|
|
||||||
}
|
}
|
||||||
var DiagStopReq = function(){
|
var DiagStopReq = function(){
|
||||||
::PostThreadMessage(thrdId,103,0,0)//自定义消息
|
::PostThreadMessage(thrdId,103,0,0)//自定义消息
|
||||||
|
//mainForm.plus.text = "刷写停止";
|
||||||
|
//mainForm.plus.background = 0xFFC0DCC0
|
||||||
}
|
}
|
||||||
|
|
||||||
mainForm.btnReadSw.oncommand = function(id,event){
|
//import console;
|
||||||
DiagReadDID(0xF195);
|
//console.log("1");
|
||||||
}
|
mainForm.btnFlashLeft.oncommand = function(id,event){
|
||||||
|
if(thrdTable.设备连接状态 == 0){
|
||||||
|
Display("设备未连接");
|
||||||
mainForm.btnReadHw.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF193);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnReadF186.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF186);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnTest.oncommand = function(id,event){
|
|
||||||
DiagStopReq();
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnFlash.oncommand = function(id,event){
|
|
||||||
if(io.exist(mainForm.edFile.text) == null){
|
|
||||||
Display("请打开文件");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(flag_connected == 0){
|
|
||||||
Display("请连接设备");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(bootstate == true){
|
if(bootstate == true){
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
import fsys;
|
if(thrdTable["文件加载状态"] == false){
|
||||||
var filename = fsys.getFileName(mainForm.edFile.text);
|
Display("烧录文件加载错误");
|
||||||
if(mainForm.radiobutton.checked){
|
|
||||||
if(string.find(filename,"SWTL") == null){
|
|
||||||
Display("请打开正确的文件");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
bootstate = true;
|
||||||
|
mainForm.edit.text = "";
|
||||||
|
::PostThreadMessage(thrdId,106,0x720,0x620);//自定义消息
|
||||||
|
Display("开始刷写流程");
|
||||||
|
starttime = time.now();
|
||||||
|
DiagBootReq(1);//左侧
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
mainForm.onClose = function(hwnd,message,wParam,lParam){
|
||||||
|
raw.closehandle(thrdHandle)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
autoconnect = win.timer(mainForm,100);
|
||||||
|
var autoconnect_state = 0;
|
||||||
|
var power_err_count = 0;
|
||||||
|
autoconnect.onTimer = function(){
|
||||||
|
select(autoconnect_state) {
|
||||||
|
case 0 {
|
||||||
|
if(thrdTable.设备连接状态 == 0){
|
||||||
|
//断开
|
||||||
|
mainForm.static.text='\uF127'
|
||||||
|
mainForm.static2.text = "设备未连接,请先连接设备";
|
||||||
|
mainForm.static.color=0xff0;
|
||||||
|
::PostThreadMessage(thrdId,100,0,0);
|
||||||
|
//Display("刷新");
|
||||||
|
sleep(20);
|
||||||
|
if(#thrdTable.设备 > 0){
|
||||||
|
Display(thrdTable.设备[1].name);
|
||||||
|
::PostThreadMessage(thrdId,101,1,0x00);//连接 0x80 -> CANFD
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(string.find(filename,"SWTR") == null){
|
|
||||||
Display("请打开正确的文件");
|
autoconnect_state = 3;
|
||||||
|
power_err_count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 1 {
|
||||||
|
::PostThreadMessage(thrdId,104,0,0);
|
||||||
|
autoconnect_state = 2;
|
||||||
|
}
|
||||||
|
case 2 {
|
||||||
|
if(thrdTable["电源电压"] < 100){
|
||||||
|
::PostThreadMessage(thrdId,105,1,0);
|
||||||
|
power_err_count++;
|
||||||
|
if(power_err_count < 10){
|
||||||
|
autoconnect_state = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mainForm.static2.text = "电源异常,请检查线路"
|
||||||
|
autoconnect_state = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
import console;
|
||||||
|
console.log(thrdTable["电源电压"])
|
||||||
|
autoconnect_state = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
case 3 {
|
||||||
|
if(thrdTable["文件加载状态"] == true){
|
||||||
|
mainForm.static.color=0xff00;
|
||||||
|
mainForm.static.text='\uF0C1';
|
||||||
|
mainForm.static2.text = "设备已连接,可以开始刷写";
|
||||||
|
::PostThreadMessage(thrdId,115,1,0);//连接
|
||||||
|
autoconnect_state = 4;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mainForm.static2.text = "文件已损坏,请重新获取烧录上位机";
|
||||||
|
autoconnect_state = 4;
|
||||||
|
mainForm.btnFlashLeft.disabled = true;
|
||||||
|
mainForm.btnFlashRight.disabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
case 4 {
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
mainForm.btnFlashRight.oncommand = function(id,event){
|
||||||
|
if(thrdTable.设备连接状态 == 0){
|
||||||
|
Display("设备未连接");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(bootstate == true){
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
if(thrdTable["文件加载状态"] == false){
|
||||||
|
Display("烧录文件加载错误");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstate = true;
|
bootstate = true;
|
||||||
mainForm.edit.text = "";
|
mainForm.edit.text = "";
|
||||||
|
::PostThreadMessage(thrdId,106,0x710,0x610);//自定义消息
|
||||||
Display("开始刷写流程");
|
Display("开始刷写流程");
|
||||||
starttime = time.now();
|
starttime = time.now();
|
||||||
//timer_bootcount.enable();
|
DiagBootReq(2);//左侧
|
||||||
DiagBootReq();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mainForm.btnOpen.oncommand = function(id,event){
|
mainForm.btnStopBoot.oncommand = function(id,event){
|
||||||
::PostThreadMessage(thrdId,104,1,0)//自定义消息-打开文件
|
DiagStopReq();
|
||||||
}
|
}
|
||||||
|
|
||||||
//程序关闭
|
autoconnect.enable();
|
||||||
mainForm.onClose = function(hwnd,message,wParam,lParam){
|
|
||||||
if(thrdId != null){
|
|
||||||
::PostThreadMessage(thrdId,105,0,0)//自定义消息
|
|
||||||
thread.waitClose(thrdHandle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
//import console;
|
||||||
|
//console.log("io.exis = ",io.exist("\res\P417_SWTL_20240709.S19"));
|
||||||
|
|
||||||
//PLinHw.isConnected()///待完善
|
|
||||||
//console.print("线程已关闭")
|
|
||||||
//console.pause()
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnReadF198.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF198);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnReadF199.oncommand = function(id,event){
|
|
||||||
DiagReadDID(0xF199);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//var frmChild = win.loadForm("\dlg\诊断子窗口.aardio");
|
|
||||||
//frmChild.show(false);
|
|
||||||
mainForm.btnDiag1003.oncommand = function(id,event){
|
|
||||||
Diag10Req(0x03);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnDiag1002.oncommand = function(id,event){
|
|
||||||
Diag10Req(0x02);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.btnDiag1001.oncommand = function(id,event){
|
|
||||||
Diag10Req(0x01);
|
|
||||||
}
|
|
||||||
mainForm.text += " "
|
|
||||||
|
|
||||||
mainForm.radiobutton.oncommand = function(id,event){
|
|
||||||
if(mainForm.radiobutton.checked){
|
|
||||||
::PostThreadMessage(thrdId,106,0x720,0x620);//自定义消息
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.radiobutton2.oncommand = function(id,event){
|
|
||||||
if(mainForm.radiobutton2.checked){
|
|
||||||
::PostThreadMessage(thrdId,106,0x710,0x610);//自定义消息
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.button.oncommand = function(id,event){
|
|
||||||
::PostThreadMessage(thrdId,107,1,0);//自定义消息
|
|
||||||
}
|
|
||||||
|
|
||||||
aboutcounter = 0;
|
|
||||||
mainForm.static5.oncommand = function(id,event){
|
|
||||||
aboutcounter++;
|
|
||||||
if(aboutcounter >= 5){
|
|
||||||
aboutcounter = 0;
|
|
||||||
var frmChild = mainForm.loadForm("\dlg\about.aardio");
|
|
||||||
frmChild.doModal(mainForm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mainForm.text += mainForm.static5.text;
|
|
||||||
|
|
||||||
mainForm.onClose = function(hwnd,message,wParam,lParam){
|
|
||||||
//::PostThreadMessage(thrdId,109,0,0);//自定义消息
|
|
||||||
//sleep(20);
|
|
||||||
raw.closehandle(thrdHandle)
|
|
||||||
}
|
|
||||||
|
|
||||||
thrdHandle,thrdId = thread.create( CanThread );
|
thrdHandle,thrdId = thread.create( CanThread );
|
||||||
mainForm.show();
|
mainForm.show();
|
||||||
|
@ -21,33 +21,18 @@ FuncLoopMsg = function(msg){
|
|||||||
FuncConnect(msg.wParam,msg.lParam);
|
FuncConnect(msg.wParam,msg.lParam);
|
||||||
}
|
}
|
||||||
case 102 {//开始boot
|
case 102 {//开始boot
|
||||||
FuncStartBoot();
|
FuncStartBoot(msg.wParam);
|
||||||
}
|
}
|
||||||
case 103 {//停止boot
|
case 103 {//停止boot
|
||||||
FuncStopBoot();
|
FuncStopBoot();
|
||||||
|
//FuncGetPowerVal();
|
||||||
}
|
}
|
||||||
case 104 {//打开s19文件
|
case 104 {//读取电压
|
||||||
if(msg.wParam == 0){
|
FuncGetPowerVal();
|
||||||
FuncDisplay("打开FlashDriver");
|
|
||||||
var ret = FuncOpenS19File(msg.wParam);
|
|
||||||
if(ret != null){
|
|
||||||
thread.command.$ShowFlashDrvPath(ret);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
FuncDisplay("打开烧写文件");
|
|
||||||
var ret = FuncOpenS19File(msg.wParam);
|
|
||||||
if(ret != null){
|
|
||||||
thread.command.$ShowPath(ret);
|
|
||||||
var crc32 = FuncGetFlashCRC(msg.wParam);
|
|
||||||
FuncDisplay("CRC = " ++ string.format("%X",crc32));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
case 105 {//控制电源
|
||||||
|
FuncPowerCtrl(msg.wParam);
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
case 105 {//停止boot
|
|
||||||
thread.stop(0);
|
|
||||||
}
|
}
|
||||||
case 106 {
|
case 106 {
|
||||||
FuncSetCANID(msg.wParam,msg.lParam);
|
FuncSetCANID(msg.wParam,msg.lParam);
|
||||||
@ -73,12 +58,30 @@ FuncLoopMsg = function(msg){
|
|||||||
case 114 {
|
case 114 {
|
||||||
FuncReq27(msg.wParam);
|
FuncReq27(msg.wParam);
|
||||||
}
|
}
|
||||||
|
case 115 {
|
||||||
|
FuncReadDeviceVersion(1);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FuncReadDeviceVersion = function(id){
|
||||||
|
var ret,DeviceInfo,funcstr = CANHw.GetDevInfo(id);
|
||||||
|
if(ret != 0){
|
||||||
|
var v1 = (DeviceInfo.FirmwareVersion>>24)&0xff;
|
||||||
|
var v2 = (DeviceInfo.FirmwareVersion>>16)&0xff;
|
||||||
|
var v3 = DeviceInfo.FirmwareVersion&0xffff;
|
||||||
|
FuncDisplay("固件版本"++v1++"."++v2++"."++v3)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
FuncDisplay("读取失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
FuncSetCANID = function(req,resp){
|
FuncSetCANID = function(req,resp){
|
||||||
DiagReqID = req;
|
DiagReqID = req;
|
||||||
DiagRespID = resp;
|
DiagRespID = resp;
|
||||||
@ -95,6 +98,54 @@ FuncSendMsg = function(no){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FuncLoadAPPFile = function(){
|
||||||
|
var ret = FuncOpenS19File(1,"\res\P417_SWTL_20240722.S19");
|
||||||
|
if(ret != null){
|
||||||
|
FuncDisplay("加载左侧烧录文件");
|
||||||
|
var crc32 = FuncGetFlashCRC(1);
|
||||||
|
FuncDisplay("CRC = " ++ string.format("%X",crc32));
|
||||||
|
if(string.format("%X",crc32) != "F6570262"){
|
||||||
|
FuncDisplay("CRC校验错误,文件已损坏");
|
||||||
|
thrdTable["文件加载状态"] = false;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
FuncDisplay("加载左侧文件失败");
|
||||||
|
thrdTable["文件加载状态"] = false;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
var ret = FuncOpenS19File(2,"\res\P417_SWTR_20240722.S19");
|
||||||
|
if(ret != null){
|
||||||
|
FuncDisplay("加载右侧烧录文件");
|
||||||
|
var crc32 = FuncGetFlashCRC(2);
|
||||||
|
FuncDisplay("CRC = " ++ string.format("%X",crc32));
|
||||||
|
if(string.format("%X",crc32) != "1F3D406C"){
|
||||||
|
FuncDisplay("CRC校验错误,文件已损坏");
|
||||||
|
thrdTable["文件加载状态"] = false;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
FuncDisplay("加载左侧文件失败");
|
||||||
|
thrdTable["文件加载状态"] = false;
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
thrdTable["文件加载状态"] = true;
|
||||||
|
}
|
||||||
|
FuncPowerCtrl = function(state){
|
||||||
|
var ret = CANHw.SetPower(state);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
FuncGetPowerVal = function(){
|
||||||
|
var ret,buf = CANHw.GetPower();
|
||||||
|
var val = (buf[2]<<8) + buf[1];
|
||||||
|
//console.dumpJson(buf);
|
||||||
|
FuncDisplay("BAT电压"++val++"mV")
|
||||||
|
thrdTable["电源电压"] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FuncFreshHw = function(){
|
FuncFreshHw = function(){
|
||||||
@ -104,6 +155,7 @@ FuncFreshHw = function(){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FuncDisplay("找到硬件")
|
FuncDisplay("找到硬件")
|
||||||
|
thrdTable.设备 = CANHw.GetAvailableHW()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,17 +163,20 @@ FuncConnect = function(dev,chn){
|
|||||||
var canfd = (chn&0x80)==0x80?true:false;
|
var canfd = (chn&0x80)==0x80?true:false;
|
||||||
var ret = CANHw.OpenDevice(dev,chn&0x7f,canfd);
|
var ret = CANHw.OpenDevice(dev,chn&0x7f,canfd);
|
||||||
if(ret == 0){
|
if(ret == 0){
|
||||||
FuncDisplay("连接成功");
|
//FuncDisplay("连接成功");
|
||||||
thread.command.$Connected();
|
thread.command.$Connected();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FuncDisplay("连接失败");
|
FuncDisplay("连接失败");
|
||||||
}
|
}
|
||||||
|
FuncPowerCtrl(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
FuncDisplay = function(str){
|
FuncDisplay = function(str){
|
||||||
thread.command.$Display(str);//"线程" +
|
thread.command.$Display(str);//"线程" +
|
||||||
}
|
}
|
||||||
|
//console.log("在loadcodex测试")
|
||||||
|
//console.log(thrdTable.test)
|
||||||
|
|
||||||
|
|
||||||
loadcodex("\user\Diag10code.aardio");
|
loadcodex("\user\Diag10code.aardio");
|
||||||
@ -188,27 +243,37 @@ FuncDiagPro = function(diagmsg){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
FuncStartBoot = function(){
|
FuncStartBoot = function(id){
|
||||||
FuncInitBootState();
|
FuncInitBootState(id);
|
||||||
boottimer.enable();
|
boottimer.enable();
|
||||||
|
|
||||||
FuncDisplay("开始刷写");
|
FuncDisplay("开始刷写");
|
||||||
stopflag = 0;
|
stopflag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var delay = function(w){
|
||||||
|
while(w){
|
||||||
|
for(i=1;50000;1)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
w -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var PackNext = 0x21;
|
var PackNext = 0x21;
|
||||||
var Packdata = {};
|
var Packdata = {};
|
||||||
var PackID = 0;
|
var PackID = 0;
|
||||||
var FuncSendPackage = function(){
|
var FuncSendPackage = function(){
|
||||||
while(#Packdata > 0)
|
while(#Packdata > 0)
|
||||||
{
|
{
|
||||||
sleep(0.3);
|
//sleep(1);
|
||||||
|
delay(2);
|
||||||
var data = {PackNext,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC};
|
var data = {PackNext,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC};
|
||||||
var max = #Packdata > 7 ? 7 : #Packdata;
|
var max = #Packdata > 7 ? 7 : #Packdata;
|
||||||
for(i=1;max;1){
|
for(i=1;max;1){
|
||||||
data[i+1] = table.remove(Packdata);
|
data[i+1] = table.remove(Packdata);
|
||||||
}
|
}
|
||||||
sleep(1);
|
//sleep(0.3);
|
||||||
CANHw.SendMsg(PackID,data);
|
CANHw.SendMsg(PackID,data);
|
||||||
|
|
||||||
PackNext += 1;
|
PackNext += 1;
|
||||||
@ -280,14 +345,16 @@ timer1.onTimer = function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//console.varDump(ret[i].id);
|
//console.log(..string.format("%x",ret[i].id));
|
||||||
//显示报文
|
//显示报文
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FuncLoadAPPFile();
|
||||||
timer1.enable();
|
timer1.enable();
|
||||||
FuncDisplay("正在运行");
|
FuncDisplay("CAN线程正在运行");
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,10 +46,10 @@ FuncDiag27Pro = function(data){
|
|||||||
SecuretyKey = securetyKeyCalc(SecuretySeed,data[1]);
|
SecuretyKey = securetyKeyCalc(SecuretySeed,data[1]);
|
||||||
if(#SecuretyKey >= 4){
|
if(#SecuretyKey >= 4){
|
||||||
FuncReq27(data[1]+1,SecuretyKey);
|
FuncReq27(data[1]+1,SecuretyKey);
|
||||||
var str = "计算密钥-";
|
var str = "计算密钥中";
|
||||||
for(i=1;4;1){
|
/*for(i=1;4;1){
|
||||||
str += " " + tostring(SecuretyKey[i],16);
|
str += " " + tostring(SecuretyKey[i],16);
|
||||||
}
|
}*/
|
||||||
FuncDisplay(str);
|
FuncDisplay(str);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
var bootstate = 0;
|
var bootstate = 0;
|
||||||
var bootcount = 0;
|
var bootcount = 0;
|
||||||
var sendstate = 0;
|
var sendstate = 0;
|
||||||
|
var senddataid = 0;
|
||||||
FuncWait = function(sid){
|
FuncWait = function(sid){
|
||||||
if(RespState == (sid + 0x40)){//正响应
|
if(RespState == (sid + 0x40)){//正响应
|
||||||
//bootcount = 0;
|
//bootcount = 0;
|
||||||
@ -36,6 +37,7 @@ FuncWait = function(sid){
|
|||||||
boottimer.disable();
|
boottimer.disable();
|
||||||
return 3;//超时
|
return 3;//超时
|
||||||
}
|
}
|
||||||
|
return 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
FuncStopBoot = function(){
|
FuncStopBoot = function(){
|
||||||
@ -46,11 +48,12 @@ FuncClearState = function(){
|
|||||||
bootcount = 0;
|
bootcount = 0;
|
||||||
sendstate = 1;
|
sendstate = 1;
|
||||||
}
|
}
|
||||||
FuncInitBootState = function(){
|
FuncInitBootState = function(id){
|
||||||
bootstate = 0;
|
bootstate = 0;
|
||||||
RespState = 0;
|
RespState = 0;
|
||||||
bootcount = 0;
|
bootcount = 0;
|
||||||
sendstate = 0;
|
sendstate = 0;
|
||||||
|
senddataid = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -72,6 +75,7 @@ var blocknum = 1;
|
|||||||
var alldata_blocknum = 0;
|
var alldata_blocknum = 0;
|
||||||
var block_sended = 0;
|
var block_sended = 0;
|
||||||
var sendFlashDriverState = 0;
|
var sendFlashDriverState = 0;
|
||||||
|
var FuncSendBlockApp_sendflag = 0;
|
||||||
FuncSendBlockInit = function(id){
|
FuncSendBlockInit = function(id){
|
||||||
var len = 0;
|
var len = 0;
|
||||||
alldata = FuncGetAllData(id);
|
alldata = FuncGetAllData(id);
|
||||||
@ -88,6 +92,7 @@ FuncSendBlockInit = function(id){
|
|||||||
alldata_blocknum = len;
|
alldata_blocknum = len;
|
||||||
block_sended = 0;
|
block_sended = 0;
|
||||||
sendblockstate = 0;
|
sendblockstate = 0;
|
||||||
|
FuncSendBlockApp_sendflag = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
nextstate = function(val){
|
nextstate = function(val){
|
||||||
@ -97,7 +102,7 @@ nextstate = function(val){
|
|||||||
block_sended += 1;
|
block_sended += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var FuncSendBlockApp_sendflag = 0
|
|
||||||
FuncSendBlockApp = function(){
|
FuncSendBlockApp = function(){
|
||||||
select(sendblockstate) {
|
select(sendblockstate) {
|
||||||
case 0{
|
case 0{
|
||||||
@ -363,6 +368,7 @@ FuncBootSeq = function(){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var ret = FuncWait(0x31);
|
var ret = FuncWait(0x31);
|
||||||
|
//console.log("ret = " , ret);
|
||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
delaycount = 0;
|
delaycount = 0;
|
||||||
}
|
}
|
||||||
@ -381,11 +387,13 @@ FuncBootSeq = function(){
|
|||||||
|
|
||||||
case 14 {
|
case 14 {
|
||||||
if(sendstate == 0){//发送数据
|
if(sendstate == 0){//发送数据
|
||||||
FuncSendBlockInit(1);
|
//console.log("开始发送App数据 ");
|
||||||
|
FuncSendBlockInit(senddataid);
|
||||||
//FuncDisplay("开始发送App数据");
|
//FuncDisplay("开始发送App数据");
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
var ret = FuncSendBlockApp();
|
var ret = FuncSendBlockApp();
|
||||||
nextstate(ret);
|
nextstate(ret);
|
||||||
}
|
}
|
||||||
@ -393,7 +401,7 @@ FuncBootSeq = function(){
|
|||||||
case 15 {
|
case 15 {
|
||||||
if(sendstate == 0){//CheckLogicBlock
|
if(sendstate == 0){//CheckLogicBlock
|
||||||
FuncDisplay("CRC校验");
|
FuncDisplay("CRC校验");
|
||||||
var crc = FuncGetFlashCRC(1);
|
var crc = FuncGetFlashCRC(senddataid);
|
||||||
FuncReq31CheckLogicBlock(crc);
|
FuncReq31CheckLogicBlock(crc);
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
}
|
}
|
||||||
@ -457,24 +465,14 @@ FuncBootSeq = function(){
|
|||||||
if(sendstate == 0){
|
if(sendstate == 0){
|
||||||
FuncDisplay("写入刷写信息");
|
FuncDisplay("写入刷写信息");
|
||||||
FuncClearState();
|
FuncClearState();
|
||||||
FuncDIDWriteStr(0xf198,"DM_Bootloader ");//写入repair_shopcode
|
FuncDIDWriteStr(0xf198,"DM_Reworker ");//写入repair_shopcode LEN=16
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var ret = FuncWait(0x2E);
|
var ret = FuncWait(0x2E);
|
||||||
nextstate(ret);//
|
nextstate(ret);//
|
||||||
}
|
}
|
||||||
//nextstate(0);
|
|
||||||
/*
|
|
||||||
if(sendstate == 0){
|
|
||||||
FuncReq28(0x00,0x01);//开启发送
|
|
||||||
FuncClearState();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var ret = FuncWait(0x28);
|
|
||||||
nextstate(ret);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
case 21 {
|
case 21 {
|
||||||
if(sendstate == 0){//写入installation_date
|
if(sendstate == 0){//写入installation_date
|
||||||
|
@ -69,11 +69,8 @@ FuncGetFlashCRC = function(id){
|
|||||||
|
|
||||||
FuncOpenS19File = function(id,path){
|
FuncOpenS19File = function(id,path){
|
||||||
import fsys.dlg;
|
import fsys.dlg;
|
||||||
if(path == null){
|
|
||||||
path = fsys.dlg.open('S19文件|*.sx;*.s19;*.srec|所有文件|*.*||',,,winform);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(io.exist( path )){
|
if(path != null){
|
||||||
//winform.editPath.text = path;
|
//winform.editPath.text = path;
|
||||||
var readbuf = string.load(path);
|
var readbuf = string.load(path);
|
||||||
|
|
||||||
@ -95,7 +92,7 @@ FuncOpenS19File = function(id,path){
|
|||||||
var fileinfobuf = string.slice(str,9,-3);//取出文件信息
|
var fileinfobuf = string.slice(str,9,-3);//取出文件信息
|
||||||
fileinfo = "file info:"+string.unhex(fileinfobuf,"")//解码
|
fileinfo = "file info:"+string.unhex(fileinfobuf,"")//解码
|
||||||
fileinfo = string.replace(fileinfo,"\z"," ");//替换空字符
|
fileinfo = string.replace(fileinfo,"\z"," ");//替换空字符
|
||||||
FuncDisplay(fileinfo)//显示
|
//FuncDisplay(fileinfo)//显示
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case "S1"{
|
case "S1"{
|
||||||
@ -160,6 +157,10 @@ FuncOpenS19File = function(id,path){
|
|||||||
*/
|
*/
|
||||||
AllData[id] = FlashData;
|
AllData[id] = FlashData;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
//blocknum = 1;
|
//blocknum = 1;
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user