Files
python_tools/web/layui/ReCheck_cmd.js
2024-01-14 22:38:04 +08:00

975 lines
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var recheck_oper = {
cmd:0,
comm_port:"",
comm_baud:"",
comm_parity:-1,
comm_stopbit:-1,
run_mode :1,
firmware:"",
update_firmware:"",
firmware_size:0,
firmware_crc:0,
}
var recheck_qthandle = null;
var Reremend_value = new Array();
var channelre_v = new Array();
var recheck_recive_buf = [];
var recheck_chennel_enable = new Array();
var recheck_version = [0x01,0x00,0x01,0x00];
var recheck_excuedcmd = 0;
var recheck_excued_rtv = 0;
var recheck_timeout_diff = 5000;
var recheck_updata_rtvinfo = "";
var recheck_app_addr = 0x08004000;
function ReCheck_Start_Comm()
{
console.log("ReCheck_Start_Comm ");
if( typeof(recheck_qthandle) != "undefined" && recheck_qthandle != null )
{
recheck_qthandle.SearchCommport();
console.log("SearchCommport ");
}
}
function ReCheck_Open_CommPort(main_serial)
{
recheck_oper.comm_port =main_serial.comm_port;
recheck_oper.comm_baud =main_serial.comm_baud;
recheck_oper.comm_parity =main_serial.comm_parity;
recheck_oper.comm_stopbit = main_serial.comm_stopbit;
Main_Close_CommPort_Select();
var json_str = JSON.stringify(recheck_oper);
console.log(json_str);
if( typeof(recheck_qthandle) != "undefined" && recheck_qthandle != null )
{
recheck_qthandle.OpenCommPort(json_str);
}
}
function ReCheck_InputUpdateShow(data_array)
{
var obj;
var obj_name;
var channel;
for(var i=0; i < 20; i++)
{
channel = i+1;
obj_name = "#RChannel"+channel+"_input";
obj = $(obj_name);
obj.val(data_array[i].toFixed(2));
}
}
function ReCheck_Init()
{
if(recheck_qthandle == null)
{
for(var i = 0; i < 20; i++)
{
Reremend_value[i] = 0.0;
recheck_chennel_enable[i] = 1;
channelre_v[i] = 0.0;
}
}
//if(typeof(qt) != "undefined" && qt != null )
if(typeof(qchannel) != "undefined" && qchannel != null )
{
//var qwebchannel = new QWebChannel(qt.webChannelTransport,function(channel){
recheck_qthandle = qchannel.objects.recheck_qthandle;
if((typeof(recheck_qthandle) != "undefined") && (recheck_qthandle != null) )
{
console.log("ReCheck_Init OK ---");
recheck_qthandle.ShowCommMes.connect(function(mesg,type){
ShowCommMes(mesg,type);
});
recheck_qthandle.ShowCommport.connect(function(jsoninfo){
Main_ShowCommport(jsoninfo);
});
recheck_qthandle.ReCheckComm_Recive.connect(function(jsoninfo){
ReCheckComm_Recive(jsoninfo);
});
recheck_qthandle.FirmWateUpdate_Return.connect(function(jsoninfo){
recheck_excuedcmd = 0xFFFE;//获取固件更新返回
recheck_excued_rtv = 0;
recheck_updata_rtvinfo = jsoninfo;
console.log("FirmWateUpdate_Return "+jsoninfo);
});
}
//});
}
}
function ReCheckComm_Recive(jsoninfo)
{
var frame = JSON.parse(jsoninfo);
recheck_recive_buf = frame;
if(recheck_oper.run_mode == 1)
{
var rtv = ZhangXingDecode(recheck_recive_buf);
if(rtv.rtv > 0)
{
return ;
}
recheck_excuedcmd = recheck_recive_buf[5];
recheck_excued_rtv = recheck_recive_buf[8];
}else{
ZhangXingSDcode(recheck_recive_buf);
cmd = recheck_recive_buf[4];
switch(cmd)
{
case 0x01:ReCheckS_Measure();break;
case 0x02:ReCheckS_WriteAmendV();break;
case 0x03:ReCheckS_ReadAmendV();break;
case 0x04:ReCheckS_Amend();break;
case 0x05:ReCheckS_RVersion();break;
}
}
}
function ZhangXingCode( cmdparam)
{
var ZhangXinHeader = "Ym";
var buf = Str2Bytes(ZhangXinHeader);
buf[2] = cmdparam.length & 0x0FF; //数据长度
buf[3] = (cmdparam.length >> 8) & 0x0FF; //数据长度
var buf_count = 4;
var checkA = 0;
var checkB = 0;
for(var i = 0; i < cmdparam.length;i++)
{
buf[buf_count++] = cmdparam[i];
checkA += cmdparam[i] & 0x0FF;
checkB += checkA;
}
checkA &= 0x0FF;
checkB &= 0x0FF;
buf[buf_count++] = checkA;
buf[buf_count++] = checkB;
return buf;
}
function ZhangXingSCode(cmdparam)
{
var ZhangXinHeader = "YmC";
var buf = Str2Bytes(ZhangXinHeader);
buf[3] = cmdparam.length & 0x0FF; //数据长度
buf[4] = (cmdparam.length >> 8) & 0x0FF; //数据长度
var buf_count = 5;
var checkA = 0;
var checkB = 0;
for(var i = 0; i < cmdparam.length;i++)
{
buf[buf_count++] = cmdparam[i];
checkA += cmdparam[i] & 0x0FF;
checkB += checkA;
}
checkA &= 0x0FF;
checkB &= 0x0FF;
buf[buf_count++] = checkA;
buf[buf_count++] = checkB;
return buf;
}
function ZhangXingSDcode(buf)
{
if(buf.len < 9)
{
return 1;
}
if(buf[0] != 0x59 || buf[1] != 0x6D)
{
return 1;
}
var len = buf[2] + (buf[3] << 8);
if((len + 6) < buf.length)
{
return 1;
}
var checkA = 0;
var checkB = 0;
for(var i = 0; i < len; i++)
{
checkA += buf[i+4] & 0x0FF;
checkB += checkA;
}
checkA &= 0x0FF;
checkB &= 0x0FF;
if((buf[len+4] != checkA) || (buf[len+5] != checkB))
{
return 1;
}
return 0;
}
function ZhangXingDecode( buf)
{
var ZhangXinHeader = "YmC";
var headbuf = Str2Bytes(ZhangXinHeader);
var index = 0;
var result = {
rtv:0,
databuf:[],
};
for(index = 0; index < buf.length && index < 3;index++)
{
if(buf[index] != headbuf[index])
{
break;
}
}
if(index != 3)
{
result.rtv = 1;
return result;
}
var len = ((buf[4] & 0x0FF) << 8 | (buf[3]&0x0FF));
if((len+ 7) != buf.length)
{
result.rtv = 1;
return result;
}
var checkA = 0;
var checkB = 0;
for(var i = 0; i < len; i++)
{
result.databuf[i] = buf[i+5];
checkA += result.databuf[i] & 0x0FF;
checkB += checkA;
}
checkA &= 0x0FF;
checkB &= 0x0FF;
if((buf[buf.length-2] != checkA) || (buf[buf.length-1] != checkB))
{
result.rtv = 1;
return result;
}
return result;
}
function ReChannel_Btn(channel)
{
if(recheck_oper.run_mode != 1)
{
return;
}
var channel_en = recheck_chennel_enable[channel-1];
var btnobj = $("#rechannel_btn"+channel);
if(btnobj == "undefined" || btnobj == null)
{
return;
}
if(channel_en > 0 )
{
channel_en = 0;
btnobj.removeClass("layui-btn-normal");
btnobj.addClass("layui-btn-disabled");
}else{
channel_en = 1;
btnobj.removeClass("layui-btn-disabled");
btnobj.addClass("layui-btn-normal");
}
recheck_chennel_enable[channel-1] = channel_en;
}
function ReCheckSendData(buf)
{
var json_str = JSON.stringify(buf);
console.log(json_str);
if( typeof(recheck_qthandle) != "undefined" && recheck_qthandle != null )
{
recheck_qthandle.ReCheck_SendData(json_str);
}
var mes = "Tx:" + Bytes2Str(buf);
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
function ReCheckMode( mode)
{
var masterbtnobj = $("#recheckMaster_btn");
var slavebtnobj = $("#recheckSlave_btn");
recheck_oper.run_mode = mode;
if(recheck_oper.run_mode == 1)
{
masterbtnobj.removeClass("layui-btn-disabled");
slavebtnobj.addClass("layui-btn-disabled");
}else{
slavebtnobj.removeClass("layui-btn-disabled");
masterbtnobj.addClass("layui-btn-disabled");
}
}
//同步非阻塞延时
async function ReCheck_WaitCmdExcu( cmd, time_out)
{
if(time_out == 0)
return 0;
time_out += recheck_timeout_diff;
time_out = parseInt ( (time_out+19)/20);
recheck_excued_rtv = 0;
while((time_out > 0) && (recheck_excued_rtv < 1))
{
if(recheck_excuedcmd == cmd)
{
break;
}
await TransSleep(20);
time_out--;
}
if(recheck_excued_rtv != 0)
{
ShowCommMes("命令执行失败",MesgType.MESG_TYPE_ERROR);
return 2;
}
if(time_out > 0 )
{
return 0;
}
else
{
ShowCommMes("通信超时",MesgType.MESG_TYPE_ERROR);
return 1;
}
}
async function ReCheckM_Measure()
{
var cmdb_buf =[0x01,0x01,0x00,0x00,0x00,0x00,0x00];
var channelmask = 0;
var bit_mask;
var temp_data = 0;
for(var i = 0; i < 20; i++)
{
bit_mask = 0;
if(recheck_chennel_enable[i] > 0)
{
bit_mask = 1 << i;
}
channelmask |= bit_mask;
}
for(i = 0; i < 4; i++)
{
cmdb_buf[3+i] = ((channelmask>>(i*8)) & 0x0FF);
}
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(1,1000)
if(rtv != 0)
{
return;
}
var mes_str = "测量成功: ";
for(var i = 0 ,j = 0 ; i < 40;i+=2,j++)
{
if(recheck_chennel_enable[j] > 0)
{
channelre_v[j] = (recheck_recive_buf[14+i]*256 + recheck_recive_buf[13+i]) / 100.0;
mes_str += "ch"+(j+1)+": ";
mes_str += channelre_v[j].toFixed(2);
mes_str += " ";
}else{
channelre_v[j] = 0;
}
}
ReCheck_InputUpdateShow(channelre_v);
ShowCommMes(mes_str,MesgType.MESG_TYPE_INFO);
}
function ReCheckS_Measure()
{
var ack_buf = [];
var channelmask = 0;
var temp_data;
for(var i = 0; i < 3;i++)
{
ack_buf[i] = recheck_recive_buf[4+i];
}
ack_buf[3] = 0;
for(var i = 0; i < 4;i++)//拷贝掩码
{
temp_data = recheck_recive_buf[7+i];
ack_buf[i+4] = temp_data;
channelmask += ((temp_data & 0x0FF) << (i*8));
}
for(var i = 0; i < 20;i++)
{
if((channelmask & 0x01) > 0)
{
temp_data = parseInt(channelre_v[i] * 100,10);
}else{
temp_data = 0;
}
ack_buf[8+2*i] = temp_data & 0x0FF;
ack_buf[9+2*i] = (temp_data >> 8 )& 0x0FF;
}
ack_buf = ZhangXingSCode(ack_buf);
ReCheckSendData(ack_buf);
}
async function ReCheckM_WriteAmendV()
{
var cmdb_buf =[0x02,0x01,0x00,0x00,0x00,0x00,0x00];
var channelmask = 0;
var bit_mask;
var temp_data = 0;
for(var i = 0; i < 20; i++)
{
bit_mask = 0;
if(recheck_chennel_enable[i] > 0)
{
bit_mask = 1 << i;
temp_data = parseInt(Reremend_value[i]*100,10);
cmdb_buf[i*2+7] = temp_data & 0x0FF;
cmdb_buf[i*2+8] = (temp_data >> 8)& 0x0FF;
}else{
cmdb_buf[i*2+7] = 0;
cmdb_buf[i*2+8] = 0;
}
channelmask |= bit_mask;
}
for(i = 0; i < 4; i++)
{
cmdb_buf[3+i] = channelmask>>(i*8);
}
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(2,1000)
if(rtv != 0)
{
return;
}
ShowCommMes("设置校准值成功: ",MesgType.MESG_TYPE_INFO);
}
function ReCheckS_WriteAmendV()
{
var ack_buf = [];
for(var i = 0; i < 3;i++)
{
ack_buf[i] = recheck_recive_buf[4+i];
}
ack_buf[3] = 0;
ack_buf = ZhangXingSCode(ack_buf);
ReCheckSendData(param);
}
async function ReCheckM_ReadAmendV()
{
var cmdb_buf =[0x03,0x01,0x00];
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(3,1000)
if(rtv != 0)
{
return;
}
var mes_str = "读校准值成功: ";
for(var i = 0,j=0 ; i < 40;i+=2,j++)
{
Reremend_value[j] = (recheck_recive_buf[10+i] + recheck_recive_buf[9+i]) / 100.0;
mes_str += Reremend_value[j].toFixed(2);
mes_str += " ";
}
ReCheck_InputUpdateShow(Reremend_value);
ShowCommMes(mes_str,MesgType.MESG_TYPE_INFO);
}
function ReCheckS_ReadAmendV()
{
var ack_buf = [];
for(var i = 0; i < 3;i++)
{
ack_buf[i] = recheck_recive_buf[4+i];
}
ack_buf[3] = 0;
var temp_data = 0;
for(var i =0 ; i < 20; i++)
{
temp_data = parseInt(Reremend_value[i]*100,10);
ack_buf[i*2+4] = temp_data & 0x0FF;
ack_buf[i*2+5] = (temp_data >> 8)& 0x0FF;
}
ack_buf = ZhangXingSCode(ack_buf);
ReCheckSendData(ack_buf);
}
async function ReCheckM_Amend()
{
var checkmask = 0x00;
var bit_mask = 0;
for(var i = 0; i < 20; i++)
{
bit_mask = 0;
if(recheck_chennel_enable[i] > 0)
{
bit_mask = 1 << i;
}
checkmask |= bit_mask;
}
var cmdb_buf= [0x04,0x01,0x00];
for(i = 0; i < 4; i++)
{
cmdb_buf[3+i] = ((checkmask>>(i*8)) & 0x0FF);
}
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(4,1000)
if(rtv != 0)
{
return;
}
ShowCommMes("校准成功",MesgType.MESG_TYPE_INFO);
}
function ReCheckS_Amend()
{
var ack_buf = [];
for(var i = 0; i < 3;i++)
{
ack_buf[i] = recheck_recive_buf[4+i];
}
ack_buf[3] = 0;
for(var i = 0; i < 4;i++)//拷贝掩码
{
ack_buf[i+4] = recheck_recive_buf[7+i];
}
ack_buf = ZhangXingSCode(ack_buf);
ReCheckSendData(ack_buf);
}
async function ReCheckM_RVersion()
{
var cmdb_buf =[0x05,0x01,0x00];
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(5,1000)
if(rtv != 0)
{
return;
}
var mes = "";
for(var i = 9; i < 13; i++ )
{
recheck_version[i-9] = recheck_recive_buf[i];
}
mes += Bytes2Str(recheck_version);
var obj = $("#ReVersion_input");
obj.val(mes);
ShowCommMes("读取版本: "+mes,MesgType.MESG_TYPE_INFO);
}
function ReCheckS_RVersion()
{
var ack_buf = [0x05,recheck_recive_buf[6],recheck_recive_buf[7],0x00,
recheck_version[0],recheck_version[1],recheck_version[2],recheck_version[3]];
ack_buf = ZhangXingSCode(ack_buf);
ReCheckSendData(ack_buf);
}
function ReCheckS_SetAmendV()
{
var obj;
var obj_name;
var channel;
var mes_str ;
for(var i=0; i < 20; i++)
{
if(recheck_chennel_enable[i] < 1)
{
continue;
}
channel = i+1;
mes_str = "设置通道校准值 通道"+channel +": ";
obj_name = "#RChannel"+channel+"_input";
obj = $(obj_name);
Reremend_value[i] = obj.val()*1;
mes_str += obj.val();
ShowCommMes(mes_str,MesgType.MESG_TYPE_INFO);
}
}
function ReCheckS_SetVersion()
{
var obj = $("#ReVersion_input");
var version_v = obj.val();
var regexp = /(,|;|0x|0X)/g;
var w_data = version_v.replace(regexp," ");
var w_data_array = w_data.split(" ");
var w_data_temp = '' ;
for(var index = 0; index < w_data_array.length;index++)
{
var str = w_data_array[index];
if(str.length < 1)
{
continue;
}else if(str.length == 1)
{
str = "0"+str;
}
if(str.length != 2)
{
continue;
}
w_data_temp += str;
}
var version_buf = HexStr2Bytes(w_data_temp);
if(version_buf.length != 4)
{
return;
}
var mes_str = "设置软件版本 "
for(var i = 0; i < 4; i++)
{
recheck_version[i] = 0x00;
}
for(var i = 0; i < 4 && i < version_buf.length; i++)
{
recheck_version[i] = version_buf[i];
}
mes_str += Bytes2Str(recheck_version);
ShowCommMes(mes_str,MesgType.MESG_TYPE_INFO);
}
function ReCheckS_SetReV()
{
var obj;
var obj_name;
var channel;
var mes_str ;
for(var i=0; i < 20; i++)
{
if(recheck_chennel_enable[i] < 1)
{
continue;
}
channel = i+1;
mes_str = "设置通道电阻值 通道"+channel +": ";
obj_name = "#RChannel"+channel+"_input";
obj = $(obj_name);
channelre_v[i] = obj.val()*1;
mes_str += obj.val();
ShowCommMes(mes_str,MesgType.MESG_TYPE_INFO);
}
}
function Test()
{
recheck_recive_buf = "[89,116,3,0,3,1,0,4,11]";
ReCheckComm_Recive(recheck_recive_buf);
}
async function ReCheck_cmd(cmd)
{
switch(cmd)
{
case 0:ReCheckMode(0);break;
case 1:ReCheckMode(1);break;
case 10:await ReCheck_LoadFirmwareFile();break;
case 11:await ReCheck_UpdateApp(); break;
}
if(recheck_oper.run_mode == 1)
{
switch(cmd)
{
case 2: await ReCheckM_ReadAmendV();break;
case 3: await ReCheckM_WriteAmendV();break;
case 4: await ReCheckM_Amend();break;
case 5: await ReCheckM_Measure();break;
case 6: await ReCheckM_RVersion();break;
default: break;
}
}else{
switch(cmd)
{
case 7:ReCheckS_SetAmendV(); break;
case 8:ReCheckS_SetReV();break;
case 9:ReCheckS_SetVersion();break;
}
}
}
function ReCheck_TestClear()
{
var obj = $("#recheck_receara");
obj.val("");
}
function ReCheck_TestSend()
{
var obj = $("#recheck_receara");
recheck_recive_buf = obj.val();
ReCheckComm_Recive(recheck_recive_buf);
}
/***********************在线更新程序************************************/
async function ReCheck_LoadFirmwareFile()
{
if( typeof(recheck_qthandle) != "undefined" && recheck_qthandle != null )
{
recheck_qthandle.GetFirmWare();
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(0xFFFE,10000000);
ShowCommMes("选择固件文件",MesgType.MESG_TYPE_INFO);
if(rtv == 0){
recheck_oper.update_firmware = recheck_updata_rtvinfo;
$("#recheck_firmware_file").val(recheck_oper.update_firmware);
}
}
}
async function ReCheck_JumpLoader()
{
var cmdb_buf =[0xFE,0x01,0x00];
//读 0x08 03 F0 00 4字节
var cmdtest_buf = [0xFB,0x01,0x00,0x00,0xF8,0x03,0x08,0x04,0x00]
var try_count = 3;
cmdb_buf = ZhangXingCode(cmdb_buf);
cmdtest_buf = ZhangXingCode(cmdtest_buf);
while(try_count > 0)
{
ReCheckSendData(cmdb_buf);
await TransSleep(500);
ShowCommMes("等待程序复位",MesgType.MESG_TYPE_INFO);
ReCheckSendData(cmdtest_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(0xFB,1000)
if(rtv == 0)
{
break;
}
try_count--;
}
if(try_count == 0)
{
ShowCommMes("复位失败",MesgType.MESG_TYPE_INFO);
return 1;
}
ShowCommMes("等待更新程序",MesgType.MESG_TYPE_INFO);
return 0;
}
async function ReCheck_CleanProgram()
{
var cmdb_buf =[0xFD,0x01,0x00];
var index = cmdb_buf.length;
for(var i = 0; i < 4; i++)
{
cmdb_buf[index] = (recheck_app_addr>> (i*8)) & 0x0FF;
index++;
}
for(var i = 0; i < 4; i++)
{
cmdb_buf[index] = (recheck_oper.firmware_size >> (i*8)) & 0x0FF;
index++;
}
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(0xFD,2000)
if(rtv != 0)
{
ShowCommMes("程序擦除失败",MesgType.MESG_TYPE_ERROR);
return 1;
}
ShowCommMes("程序擦除",MesgType.MESG_TYPE_INFO);
return 0;
}
async function ReCheck_RunApp()
{
var cmdb_buf =[0xF9,0x01,0x00];
cmdb_buf = ZhangXingCode(cmdb_buf);
ReCheckSendData(cmdb_buf);
await TransSleep(500);
ShowCommMes("跳转到用户程序",MesgType.MESG_TYPE_INFO);
}
async function ReCheck_CheckRunApp()
{
var crccmd_buf =[0xFA,0x01,0x00];
var index = crccmd_buf.length;
for(var i = 0; i < 4; i++)
{
crccmd_buf[index] = (recheck_app_addr>> (i*8)) & 0x0FF;
index++;
}
for(var i = 0; i < 4; i++)
{
crccmd_buf[index] = (recheck_oper.firmware_size >> (i*8)) & 0x0FF;
index++;
}
for(var i = 0; i < 4; i++)
{
crccmd_buf[index] = (recheck_oper.firmware_crc >> (i*8)) & 0x0FF;
index++;
}
crccmd_buf = ZhangXingCode(crccmd_buf);
ReCheckSendData(crccmd_buf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(0xFA,3000)
if(rtv != 0)
{
ShowCommMes("代码校验失败",MesgType.MESG_TYPE_ERROR);
return ;
}
await ReCheck_RunApp();
}
async function ReCheck_WriteFlash_Program(regaddr,write_data)
{
var cmdbuf = [0xFC,0x01,0x00];
var len = write_data.length;
for(var i = 0; i < 4; i++)
{
cmdbuf[i+3] = (regaddr >> (i*8)) & 0x0FF;
}
for(var i = 0; i < 2; i++)
{
cmdbuf[i+7] = (len >> (i*8)) & 0x0FF;
}
for(var i = 0,j =cmdbuf.length ; i <len ; i++,j++)
{
cmdbuf[j] = write_data[i];
}
cmdbuf = ZhangXingCode(cmdbuf);
ReCheckSendData(cmdbuf);
recheck_excuedcmd = 0;
var rtv = await ReCheck_WaitCmdExcu(0xFC,1000)
var mes = "地址: "+regaddr +" 写入数据长度: "+len;
return rtv;
}
async function ReCheck_UpdateApp()
{
var file_size = 0;
var file_info = [];
var check_sum = 0;
if(typeof(recheck_qthandle) == "undefined" || recheck_qthandle == null)
{
return ;
}
recheck_excuedcmd = 0;
recheck_oper.update_firmware = $("#recheck_firmware_file").val();
recheck_qthandle.OpenFirmWare(recheck_oper.update_firmware);
var rtv = await ReCheck_WaitCmdExcu(0xFFFE,10000);
if(rtv != 0){
ShowCommMes("文件打开失败",MesgType.MESG_TYPE_ERROR);
}
console.log("open file "+recheck_updata_rtvinfo);
file_info = JSON.parse(recheck_updata_rtvinfo);
if(file_info.length != 8)
{
ShowCommMes("文件打开失败",MesgType.MESG_TYPE_ERROR)
}
recheck_oper.firmware_crc = 0;
for(var i = 0; i < 4 ; i++)
{
recheck_oper.firmware_crc += (file_info[i] & 0x0FF) << (i*8)
}
recheck_oper.firmware_size = 0;
for(var i = 0; i < 4 ; i++)
{
recheck_oper.firmware_size += (file_info[i+4] & 0x0FF) << (i*8)
}
ShowCommMes(epro1_oper.update_firmware + " 文件大小: "+recheck_oper.firmware_size +" CRC " + recheck_oper.firmware_crc);
rtv = await ReCheck_JumpLoader();
if(rtv != 0)
{
return;
}
rtv = await ReCheck_CleanProgram();
if(rtv != 0)
{
return;
}
await TransSleep(100);
ShowCommMes("开始编程");
var write_len = 0;
var count = 0;
var regaddr = recheck_app_addr;
var file_size = recheck_oper.firmware_size;
var write_data ;
while(count < file_size)
{
if((count+128) < file_size)
{
write_len = 128;
}else{
write_len = file_size - count;
}
recheck_excuedcmd = 0;
recheck_qthandle.ReadFirmWare(count, write_len);
var rtv = await ReCheck_WaitCmdExcu(0xFFFE,10000);
if(rtv != 0){
ShowCommMes("读取文件数据失败",MesgType.MESG_TYPE_ERROR);
return ;
}
write_data = JSON.parse(recheck_updata_rtvinfo);
rtv = await ReCheck_WriteFlash_Program(regaddr,write_data);
if(rtv != 0)
{
ShowCommMes("地址: "+regaddr.toString(16)+" 写入长度 "+ write_len +" 失败",MesgType.MESG_TYPE_ERROR);
return;
}else{
ShowCommMes("地址: "+regaddr.toString(16)+" 写入长度 "+ write_len +" 成功",MesgType.MESG_TYPE_INFO);
}
count += write_len;
regaddr+= write_len;
}
ShowCommMes("程序加载完毕。。",MesgType.MESG_TYPE_INFO);
await ReCheck_CheckRunApp();
}
/*********************************************************************/