var ew_code_update_init_flag = 0;
var EWB_CMD_CTR = 6;
function EwCodeUpdate()
{
if(ew_code_update_init_flag == 0)
{
ShowCommMes("程序更新脚本加载成功",MesgType.MESG_TYPE_INFO);
ew_code_update_init_flag =1;
var content_str = '
';
content_str += '
'
content_str += '';
content_str += '
';
content_str += '
'
content_str += '';
content_str += '
';
content_str += '
'
content_str += '';
content_str += '
';
content_str += '
'
content_str += '';
content_str += '
';
content_str += '
'
content_str += '';
content_str += '
';
content_str += '
'
content_str += '';
content_str += '
';
content_str +='
';
$("#Oper_View").append(content_str);
return;
}
}
async function EWB_AppSleep()
{
var param = [];
var cmd_buf = Ep2_CmdData(1,60,param,0,0,EP2_CMM_RATE);
ep2_excuedcmd = 0;
epro2_oper.cmd = 0xFF;
Ep2_SendCmd(cmd_buf);
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("执行休眠成功",MesgType.MESG_TYPE_INFO);
}
}
async function Ep2_ChipRunBoot()
{
var param = [];
param[0] =0x99;
param[1] = 0x66;
param[2] = 0xAA;
param[3] = 0x55;
var cmd_buf = Ep2_CmdData(0,61,param,0,0,EP2_CMM_RATE);
ep2_excuedcmd = 0;
epro2_oper.cmd = 0xFF;
Ep2_SendCmd(cmd_buf);
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("芯片复位执行成功",MesgType.MESG_TYPE_INFO);
}
}
async function EWB_Chg(sw)
{
var cmd_buf = [];
cmd_buf[0] = sw;
epro2_oper.ctr_cmd = EWB_CMD_CTR;
epro2_oper.cmd = 0x01;
Ep2_SendCmd(cmd_buf);
await TransSleep(200);
}
async function EWB_EraseCode()
{
var cmd_buf = [];
epro2_oper.ctr_cmd = EWB_CMD_CTR;
epro2_oper.cmd = 0x02;
Ep2_SendCmd(cmd_buf);
await TransSleep(200);
}
async function EWB_UpdateCode()
{
var cmd_buf = [];
var code_addr = 0x1000;
var code_size = 11*1024;
var err_close = 0;//1 写入出现错误终止 0 错误继续执行
var w_size = 0;
cmd_buf[0] = code_addr & 0x0FF;
cmd_buf[1] = (code_addr >> 8) & 0x0FF;
cmd_buf[2] = code_size & 0x0FF;
cmd_buf[3] = (code_size >> 8) & 0x0FF;
cmd_buf[4] = err_close;
//05334577249
epro2_oper.ctr_cmd = EWB_CMD_CTR;
epro2_oper.cmd = 0x06;
Ep2_SendCmd(cmd_buf);
var time_out = 0;
ep2_excued_rtv = 0;
ep2_excuedcmd = 0;
while(time_out < 100)
{
if(ep2_excuedcmd == 0x06)
{
time_out = 0;
if(ep2_excued_rtv == 0)
{
w_size = ep2_recive_buf[11]*256+ep2_recive_buf[10];
ShowCommMes("已经下载程序 "+w_size+" 字节",MesgType.MESG_TYPE_INFO);
}else{
ShowCommMes("已经下载程序 "+w_size+" 字节 下载异常",MesgType.MESG_TYPE_ERROR);
break;
}
ep2_excuedcmd = 0;
ep2_excued_rtv = 0;
}
if(w_size >= code_size)
{
break;
}
await TransSleep(10);
time_out++;
}
}
async function EWB_RunApp()
{
var cmd_buf = [];
epro2_oper.ctr_cmd = EWB_CMD_CTR;
epro2_oper.cmd = 0x05;
Ep2_SendCmd(cmd_buf);
await TransSleep(200);
}
async function EwCodeUpdateExcue()
{
//使能MTP
epro2_oper.commaddr = 1;
epro2_oper.cmd = 29;
await Ep2_EnMTPWrite(1);
await TransSleep(300);
//用户程序跳转到bootloader
await Ep2_ChipRunBoot();
//关闭总线
await Ep2_BusSwitch(0);
await TransSleep(5000);
//开总线
epro2_oper.ep2_heartbeat_sw = 0;
await Ep2_HeartBeat_SW();
await TransSleep(100);
await Ep2_BusSwitch(1);
await TransSleep(300);
//执行充电命令
EWB_Chg(1);
//等待充电
await TransSleep(5000);
EWB_Chg(1);
await TransSleep(5000);
//擦除用户Code区
EWB_EraseCode();
await TransSleep(1000);
//升级程序
await EWB_UpdateCode();
//跳转用户命令
await TransSleep(1000);
await EWB_RunApp();
}