可以刷写

This commit is contained in:
sunbeam 2022-05-18 08:55:11 +08:00
parent 1328be60b7
commit dce7399998
8 changed files with 132 additions and 20 deletions

View File

@ -19,5 +19,6 @@
<file name="Diag36code.aardio" path="user\Diag36code.aardio" comment="user\Diag36code.aardio"/> <file name="Diag36code.aardio" path="user\Diag36code.aardio" comment="user\Diag36code.aardio"/>
<file name="S19Decode.aardio" path="user\S19Decode.aardio" comment="user\S19Decode.aardio"/> <file name="S19Decode.aardio" path="user\S19Decode.aardio" comment="user\S19Decode.aardio"/>
<file name="Diag37code.aardio" path="user\Diag37code.aardio" comment="user\Diag37code.aardio"/> <file name="Diag37code.aardio" path="user\Diag37code.aardio" comment="user\Diag37code.aardio"/>
<file name="Diag11code.aardio" path="user\Diag11code.aardio" comment="user\Diag11code.aardio"/>
</folder> </folder>
</project> </project>

View File

@ -83,15 +83,22 @@ FuncDisplay = function(str){
loadcodex("\user\Diag10code.aardio"); loadcodex("\user\Diag10code.aardio");
loadcodex("\user\Diag11code.aardio");
loadcodex("\user\Diag22code.aardio"); loadcodex("\user\Diag22code.aardio");
loadcodex("\user\Diag85code.aardio");
loadcodex("\user\Diag28code.aardio");
loadcodex("\user\Diag7Fcode.aardio");
loadcodex("\user\Diag27code.aardio"); loadcodex("\user\Diag27code.aardio");
loadcodex("\user\Diag2Ecode.aardio"); loadcodex("\user\Diag2Ecode.aardio");
loadcodex("\user\DiagBootcode.aardio"); loadcodex("\user\Diag28code.aardio");
loadcodex("\user\Diag31code.aardio");
loadcodex("\user\Diag34code.aardio");
loadcodex("\user\Diag36code.aardio");
loadcodex("\user\Diag37code.aardio");
loadcodex("\user\Diag7Fcode.aardio");
loadcodex("\user\Diag85code.aardio");
loadcodex("\user\DiagBootcode.aardio");
loadcodex("\user\S19Decode.aardio"); loadcodex("\user\S19Decode.aardio");
RespState = 0; RespState = 0;
FuncDiagPro = function(diagmsg){ FuncDiagPro = function(diagmsg){
@ -120,6 +127,9 @@ FuncDiagPro = function(diagmsg){
case 0x7F { case 0x7F {
FuncDiag7FPro(table.slice(diagmsg.data,1,diagmsg.len)) FuncDiag7FPro(table.slice(diagmsg.data,1,diagmsg.len))
} }
case 0x6E {
FuncDiag2EPro(table.slice(diagmsg.data,1,diagmsg.len))
}
else { else {
} }
} }

9
user/Diag11code.aardio Normal file
View File

@ -0,0 +1,9 @@
//发送
FuncReq11 = function(num){
var txdata = {0x2,0x11,num,0x00,0x00,0x00,0x00,0x00};
CANHw.SendMsg(DiagReqID,txdata);
}
//接收
FuncDiag11Pro = function(data){
FuncDisplay("复位成功")
}

View File

@ -26,7 +26,7 @@ FuncReq2E = function(did,data){
else { else {
var txdata = {3+#data,0x2E,did>>8,did&0xff,0,0,0,0}; var txdata = {3+#data,0x2E,did>>8,did&0xff,0,0,0,0};
for(i=1;#data;1){ for(i=1;#data;1){
txdata[5+i] = data[i]; txdata[4+i] = data[i];
} }
CANHw.SendMsg(DiagReqID,txdata); CANHw.SendMsg(DiagReqID,txdata);

View File

@ -4,6 +4,17 @@ FuncReq31EraseFlash = function(addr,len){
FuncReq31(data); FuncReq31(data);
} }
FuncReq31CheckLogicBlock = function(addr,len){
var data = {0x02,0x02,0x44,addr>>24,addr>>16,addr>>8,addr,len>>24,len>>16,len>>8,len};
FuncReq31(data);
}
FuncReq31CheckPD = function(){//Programming Dependencies
var data = {0xFF,0x01};
FuncReq31(data);
}
//发送 //发送
FuncReq31 = function(data){ FuncReq31 = function(data){
@ -15,7 +26,7 @@ FuncReq31 = function(data){
else { else {
var txdata = {2+#data,0x31,0x01,0, 0,0,0,0}; var txdata = {2+#data,0x31,0x01,0, 0,0,0,0};
for(i=1;#data;1){ for(i=1;#data;1){
txdata[5+i] = data[i]; txdata[3+i] = data[i];
} }
CANHw.SendMsg(DiagReqID,txdata); CANHw.SendMsg(DiagReqID,txdata);
} }

View File

@ -29,7 +29,7 @@ FuncGetSendStatus = function(){
return flag_sendend; return flag_sendend;
} }
FuncSendNextBlock = function(){ FuncSendNextBlock = function(){
if(alldata>0x400){ if(#alldata>0x400){
FuncReq36(blocknum,table.slice(alldata,1,0x400)); FuncReq36(blocknum,table.slice(alldata,1,0x400));
alldata = table.slice(alldata,0x401,) alldata = table.slice(alldata,0x401,)
} }
@ -45,9 +45,20 @@ FuncSendNextBlock = function(){
//发送 //发送
FuncReq36 = function(num,data){ FuncReq36 = function(num,data){
len = #data+2; len = #data+2;
var txdata = {0x10+(len>>8),len&0xff,0x36,num&0xff,data[1],data[2],data[3],data[4]}; if(len > 7){
CANHw.SendMsg(DiagReqID,txdata); var txdata = {0x10+(len>>8),len&0xff,0x36,num&0xff,data[1],data[2],data[3],data[4]};
FuncPushPackage(DiagReqID,table.slice(data,5)); CANHw.SendMsg(DiagReqID,txdata);
FuncPushPackage(DiagReqID,table.slice(data,5));
}
else {
var txdata = {len,0x36,num&0xff,0, 0,0,0,0};
for(i=1;#data;1){
txdata[i+3] = data[i];
}
CANHw.SendMsg(DiagReqID,txdata);
}
} }
//接收 //接收

View File

@ -16,7 +16,10 @@ FuncDiag7FPro = function(data){
errNRC = data[2]; errNRC = data[2];
select(errNRC) { select(errNRC) {
case 0x78 { case 0x78 {
FuncDisplay("服务正忙") if(errSID != 0x36){
FuncDisplay("服务正忙")
}
} }
else { else {
FuncDisplay("错误 - NRC:" + tostring(errNRC,16)) FuncDisplay("错误 - NRC:" + tostring(errNRC,16))

View File

@ -73,7 +73,7 @@ FuncSendBlockInit = function(){
blocknum = 1; blocknum = 1;
if(alldata != null){ if(alldata != null){
blocknum = 1; blocknum = 1;
FuncStartSendBlock(alldata[blocknum].["data"]) FuncStartSendBlock(alldata[blocknum]["data"])
} }
} }
@ -82,7 +82,7 @@ FuncSendBlockApp = function(){
select(sendblockstate) { select(sendblockstate) {
case 0{ case 0{
if(FuncSendBlockApp_sendflag == 0){ if(FuncSendBlockApp_sendflag == 0){
FuncReq34(alldata[blocknum].["address"],#alldata[blocknum].["data"]); FuncReq34(alldata[blocknum]["address"],#alldata[blocknum]["data"]);
FuncSendBlockApp_sendflag = 1; FuncSendBlockApp_sendflag = 1;
RespState = 0; RespState = 0;
bootcount = 0; bootcount = 0;
@ -96,7 +96,7 @@ FuncSendBlockApp = function(){
} }
case 1 { case 1 {
FuncStartSendBlock(alldata[blocknum].["data"]);//初始化 FuncStartSendBlock(alldata[blocknum]["data"]);//初始化
FuncSendBlockApp_sendflag = 0; FuncSendBlockApp_sendflag = 0;
sendblockstate += 1; sendblockstate += 1;
} }
@ -151,6 +151,13 @@ FuncBootSeq = function(){
select(bootstate) { select(bootstate) {
case 0 { case 0 {
//读取当前会话 //读取当前会话
/*
var bootdata = FuncGetAllData();
if(#bootdata < 1){
FuncDisplay("请打开文件");
boottimer.disable();
return 0;
}*/
if(sendstate == 0){ if(sendstate == 0){
FuncReadDID(0xF186); FuncReadDID(0xF186);
FuncClearState(); FuncClearState();
@ -242,8 +249,9 @@ FuncBootSeq = function(){
} }
case 9 { case 9 {
if(sendstate == 0){ if(sendstate == 0){
FuncDIDWriteStr(0xf198,"0123456789abcdef1234");//写入repair_shopcode
FuncClearState(); FuncClearState();
FuncDIDWriteStr(0xf198,"0123456789abcdef1234");//写入repair_shopcode
} }
else { else {
var ret = FuncWait(0x2E); var ret = FuncWait(0x2E);
@ -259,7 +267,7 @@ FuncBootSeq = function(){
var day = BCD_Conv(time.now().day); var day = BCD_Conv(time.now().day);
FuncReq2E(0XF199,{year1,year2,month,day}) FuncReq2E(0XF199,{year1,year2,month,day})
FuncClearState(); FuncClearState();
console.log("写入installation_date")
} }
else { else {
var ret = FuncWait(0x2E); var ret = FuncWait(0x2E);
@ -289,17 +297,76 @@ FuncBootSeq = function(){
} }
} }
case 13 { case 13 {
if(sendstate == 0){//发送数据 if(sendstate == 0){//CheckLogicBlock
FuncSendBlockInit(); FuncReq31CheckLogicBlock(0x00FE0000,0x00019FCC);
FuncClearState(); FuncClearState();
} }
else { else {
var ret = FuncSendBlockApp(); var ret = FuncWait(0x31);
nextstate(ret);
}
}
case 14 {
if(sendstate == 0){////Programming Dependencies
FuncReq31CheckPD();
FuncClearState();
}
else {
var ret = FuncWait(0x31);
nextstate(ret);
}
}
case 15 {
if(sendstate == 0){//复位
FuncReq11(0x01);
FuncClearState();
}
else {
var ret = FuncWait(0x11);
nextstate(ret); nextstate(ret);
} }
} }
case 16 {
if(sendstate == 0){
FuncReq10(true,0x03);//进入扩展会话
FuncClearState();
}
else {
var ret = FuncWait(0x10);
nextstate(ret);
}
}
case 17 {
if(sendstate == 0){
FuncReq28(0x00,0x01);//开启发送
FuncClearState();
}
else {
var ret = FuncWait(0x28);
nextstate(ret);
}
}
case 18 {
if(sendstate == 0){
FuncReq85(0x01);//开启DTC
FuncClearState();
}
else {
var ret = FuncWait(0x85);
nextstate(ret);
}
}
case 19 {
if(sendstate == 0){
FuncReq10(true,0x01);//进入默认会话
FuncClearState();
}
else {
var ret = FuncWait(0x10);
nextstate(ret);
}
}
else { else {
FuncDisplay("刷写完成") FuncDisplay("刷写完成")
boottimer.disable(); boottimer.disable();