Files
python_tools/web/layui/epro_cmd.js

1321 lines
34 KiB
JavaScript
Raw Normal View History

2024-01-14 22:38:04 +08:00
var epro1_oper = {
cmd:0,
comm_port:"",
comm_baud:"",
comm_parity:-1,
comm_stopbit:-1,
vbus_mod:1,
uid:"581900230A00801",
pwd:"20191029",
delayfire:100,
amend_v:0,
bus_voltage:0,
sorftenhance:1,
commaddr:21,
flash_r_bgaddr:15872,//0x3E00,
flash_r_len:8,
flash_r_data:"",
flash_w_addr:15872,//0x3E00,
flash_w_data:"",
sys_states:"0000",
firmware:"",
auset_addr_fac:400,
readrate_class:0,
cycle_bgaddr:21,
cycle_endaddr:421,
cycle_group_count:50,
cycle_bgdelay:0,
cycle_addr:21,
cycle_stepdelay:50,
cycle_bguid:"581900230A00801",
cycle_rundelay:10,
cycle_runcount:1,
cycle_test:0,
fire_delay_excue:150,
update_firmware:"",
};
var ep1_qthandle = null;
var eep1_excuedcmd;
var ep1_excued_rtv;
var ep1_cmd_excue_busy = 0
var ep1_recive_buf = [];
var ep1_bus_switch = 0;
var ep1_bus_heartbeat = 1;
var ep1_updata_rtvinfo = "";
var ep1_log_flag = 0;
function Ep1_Start_Comm()
{
console.log("Ep1_Start_Comm ");
if( typeof(ep1_qthandle) != "undefined" && ep1_qthandle != null )
{
ep1_qthandle.SearchCommport();
console.log("SearchCommport ");
}
}
function Ep1_Open_CommPort(main_serial)
{
epro1_oper.comm_port =main_serial.comm_port;
epro1_oper.comm_baud =main_serial.comm_baud;
epro1_oper.comm_parity =main_serial.comm_parity;
epro1_oper.comm_stopbit = main_serial.comm_stopbit;
Main_Close_CommPort_Select();
var json_str = JSON.stringify(epro1_oper);
console.log(json_str);
if( typeof(ep1_qthandle) != "undefined" && ep1_qthandle != null )
{
ep1_qthandle.OpenCommPort(json_str);
}
}
function GetEp1_InputInfo()
{
epro1_oper.uid = $("#ep1_uid").val();
epro1_oper.pwd = $("#ep1_pwd").val();
epro1_oper.delayfire = parseInt($("#ep1_delayfire").val(),10);
epro1_oper.commaddr = parseInt($("#ep1_commaddr").val(),10);
epro1_oper.flash_r_bgaddr = parseInt($("#ep1_flash_r_bgaddr").val(),16);
epro1_oper.flash_r_len = parseInt($("#ep1_flash_r_len").val(),10);
epro1_oper.flash_r_data = $("#ep1_flash_w_data").val();
epro1_oper.flash_addr = parseInt($("#ep1_flash_w_addr").val(),16);
epro1_oper.flash_w_data = $("#ep1_flash_w_data").val();
epro1_oper.auset_addr_fac = parseInt($("#ep1_auset_addr_fac").val(),10);
epro1_oper.cycle_bgaddr = parseInt($("#ep1_cycle_bgaddr").val(),10);
epro1_oper.cycle_endaddr = parseInt($("#ep1_cycle_endaddr").val(),10);
epro1_oper.cycle_group_count = parseInt($("#ep1_cycle_group_count").val(),10);
epro1_oper.cycle_bgdelay = parseInt($("#ep1_cycle_bgdelay").val(),10);
epro1_oper.cycle_stepdelay = parseInt($("#ep1_cycle_stepdelay").val(),10);
epro1_oper.cycle_bguid = $("#ep1_cycle_bguid").val();
epro1_oper.cycle_rundelay = parseInt($("#ep1_cycle_rundelay").val(),10);
epro1_oper.cycle_runcount = parseInt($("#ep1_cycle_runcount").val(),10);
epro1_oper.fire_delay_excue = parseInt($("#ep1_fire_delay_excue").val(),10);
epro1_oper.readrate_class = parseInt($("#ep1_readrate_class").val(),10);
epro1_oper.update_firmware = $("#ep1_update_firmware").val()
}
async function Ep1_cmd(cmd)
{
if(ep1_cmd_excue_busy > 0)
{
ShowCommMes("正在执行命令",MesgType.MESG_TYPE_INFO);
return;
}
ep1_cmd_excue_busy = 1;
epro1_oper.cmd = cmd;
GetEp1_InputInfo();
await Ep1_ExcueOperCmd();
ep1_cmd_excue_busy = 0;
}
function Show_Def()
{
$("#ep1_uid").val(epro1_oper.uid);
$("#ep1_pwd").val(epro1_oper.pwd);
if(epro1_oper.delayfire > 0 && epro1_oper.delayfire < 30000 )
{
$("#ep1_delayfire").val(epro1_oper.delayfire);
}else{
$("#ep1_delayfire").val('');
}
$("#ep1_commaddr").val(epro1_oper.commaddr);
$("#ep1_flash_r_bgaddr").val(Int2HexStr(epro1_oper.flash_r_bgaddr,"",0));
$("#ep1_flash_r_len").val(epro1_oper.flash_r_len);
$("#ep1_flash_r_data").val(epro1_oper.flash_r_data);
$("#ep1_flash_w_addr").val(Int2HexStr(epro1_oper.flash_w_addr,"",0));
$("#ep1_flash_w_data").val(epro1_oper.flash_w_data);
$("#ep1_auset_addr_fac").val(epro1_oper.auset_addr_fac);
$("#ep1_run_cfg_value").val(epro1_oper.run_cfg_value);
$("#ep1_cycle_bgaddr").val(epro1_oper.cycle_bgaddr);
$("#ep1_cycle_endaddr").val(epro1_oper.cycle_endaddr);
$("#ep1_cycle_group_count").val(epro1_oper.cycle_group_count);
$("#ep1_cycle_bgdelay").val(epro1_oper.cycle_bgdelay);
$("#ep1_cycle_stepdelay").val(epro1_oper.cycle_stepdelay);
$("#ep1_cycle_bguid").val(epro1_oper.cycle_bguid);
$("#ep1_cycle_rundelay").val(epro1_oper.cycle_rundelay);
$("#ep1_cycle_runcount").val(epro1_oper.cycle_runcount);
$("#ep1_sys_amend").val(epro1_oper.amend_v);
$("#ep1_sys_states").val(epro1_oper.sys_states);
$("#ep1_firmware").val(epro1_oper.firmware);
$("#ep1_bus_voltage").val(epro1_oper.bus_voltage);
$("#ep1_readrate_class").val(epro1_oper.readrate_class);
$("#ep1_update_firmware").val(epro1_oper.update_firmware);
}
function Ep1_Init()
{
var form = layui.form;
form.render();
form.on('switch', function(data){
var id = data.elem.id;
if(id == "mes_save_log")
{
if(this.checked)
{
ep1_log_flag = 1;
}
else{
ep1_log_flag = 0;
}
layer.tips('日志记录 '+ (this.checked ? 'true' : 'false'), data.othis)
}
});
//if(typeof(qt) != "undefined" && qt != null )
if(typeof(qchannel) != "undefined" && qchannel != null )
{
if(ep1_qthandle != null && typeof(ep1_qthandle) != "undefined")
{
console.log("Ep1_Inited OK ---");
}
else
{
ep1_qthandle = qchannel.objects.ep1_qthandle;
if((typeof(ep1_qthandle) != "undefined") && (ep1_qthandle != null) )
{
console.log("Ep1_Init OK ---");
ep1_qthandle.ShowCommMes.connect(function(mesg,type){
ShowCommMes(mesg,type);
});
ep1_qthandle.ShowCommport.connect(function(jsoninfo){
Main_ShowCommport(jsoninfo);
});
ep1_qthandle.EP1Comm_Recive.connect(function(jsoninfo){
EP1Comm_Recive(jsoninfo);
});
ep1_qthandle.FirmWateUpdate_Return.connect(function(jsoninfo){
ep1_excuedcmd = 0xFFFE;//获取固件更新返回
ep1_updata_rtvinfo = jsoninfo;
});
}
}
}
Show_Def();
//console.log(Int2HexStr(65536,"0x",0));
}
function Ep1_HeartBeat()
{
var bus_volate = ep1_recive_buf[5] + (ep1_recive_buf[6] << 8);
bus_volate = bus_volate / 10;
bus_volate = bus_volate.toFixed(1);
var bus_current = ep1_recive_buf[7] + (ep1_recive_buf[8] << 8)+(ep1_recive_buf[9] << 16)+(ep1_recive_buf[10] << 24);
bus_current = bus_current/1000;
bus_current = bus_current.toFixed(2);
var mes = "总线电压 "+bus_volate+"V 总线电流 "+bus_current+"mA"
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
function EP1Comm_Recive(jsoninfo)
{
var frame = JSON.parse(jsoninfo);
ep1_recive_buf = frame;
ep1_excuedcmd = frame[4];
var frame_str = "Rx: "+ Bytes2Str(frame) ;
if(ep1_excuedcmd == 0xFE)
{
ShowCommMes(frame_str,MesgType.MESG_TYPE_INFO);
Ep1_HeartBeat();
}else{
ep1_excued_rtv = frame[7];
ShowCommMes(frame_str,MesgType.MESG_TYPE_INFO,ep1_log_flag);
BTInfoCount(1);
if(ep1_excued_rtv != 0)
{
BTErrorCount(1);
}
}
}
function Ep1_CmdData(addr,func,cmd,param,read_len)
{
return Epro_CmdData(addr,func,cmd,param,read_len);
}
var Ep1_Cmd_Head = "EST";
function Ep1_SendCmd(cmd_buf)
{
var buf = Str2Bytes(Ep1_Cmd_Head);
buf[3] = 0; //数据长度
buf[4] = epro1_oper.cmd;
for(var index = 0; index < cmd_buf.length;index++)
{
buf[5+index] = cmd_buf[index];
}
buf[3] = buf.length;
var json_str = JSON.stringify(buf);
console.log(json_str);
if( typeof(ep1_qthandle) != "undefined" && ep1_qthandle != null )
{
ep1_qthandle.Ep1_SendData(json_str);
}
var mes = "Tx:" + Bytes2Str(buf);
ShowCommMes(mes,MesgType.MESG_TYPE_INFO,ep1_log_flag);
}
function Ep1_Beep(count)
{
var param = [0,0,count];
epro1_oper.cmd = 0xFE;
Ep1_SendCmd(param);
}
async function Ep1_SwitchBus()
{
var mes_ = ""
var param = [0,0,0];
if(ep1_bus_switch == 0)
{
param[2] = 1;
ep1_bus_switch = 1;
mes_ = "开总线";
}else{
param[2] = 0;
ep1_bus_switch = 0;
mes_ = "关总线";
}
ep1_excuedcmd = 0;
Ep1_SendCmd(param);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
ShowCommMes(mes_,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_SwitchHeartBeat()
{
var mes_ = ""
var param = [0,0,0];
if(ep1_bus_heartbeat == 0)
{
param[2] = 1;
ep1_bus_heartbeat = 1;
mes_ = "开心跳";
}else{
param[2] = 0;
ep1_bus_heartbeat = 0;
mes_ = "关心跳";
}
ep1_excuedcmd = 0;
Ep1_SendCmd(param);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
ShowCommMes(mes_,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
//同步非阻塞延时
async function Ep1_WaitCmdExcu( cmd, time_out)
{
if(time_out == 0)
return 0;
time_out = parseInt ( (time_out+19)/20);
ep1_excued_rtv = 0;
while((time_out > 0) && (ep1_excued_rtv < 1))
{
if(ep1_excuedcmd == cmd)
{
break;
}
await TransSleep(20);
time_out--;
}
if(ep1_excued_rtv != 0)
{
ShowCommMes("命令执行失败",MesgType.MESG_TYPE_ERROR,ep1_log_flag);
return 2;
}
if(time_out > 0 )
{
return 0;
}
else
{
ShowCommMes("EP1 通信超时 oper_cmd "+cmd,MesgType.MESG_TYPE_ERROR,ep1_log_flag);
return 1;
}
}
async function Ep1_ReadCmdByAddr(cmd,read_len)
{
var param = [];
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,8,cmd,param,read_len+4);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
var read_buf = [];
if(rtv == 0)
{
read_buf = ArrayCopy(ep1_recive_buf,read_buf,11,read_len);
//read_buf = [0x35, 0x38, 0x31, 0x39, 0x30, 0x30, 0x32, 0x33];
}
return read_buf;
}
async function Ep1_WriteFlash_Program(regaddr,programdata)
{
var cmd_buf = [];
regaddr >>= 2; //地址除以4
cmd_buf[0] = regaddr & 0xFF;
cmd_buf[1] = (regaddr >> 8) & 0xFF;
cmd_buf[2] = programdata.length;
cmd_buf[3] = 0;
for(var index = 0; index < programdata.length;index++)
{
cmd_buf[4+index] = programdata[index];
}
cmd_buf = Ep1_CmdData(epro1_oper.comaddr,63,0,cmd_buf,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
return rtv;
}
async function Ep1_WriteFlash(eraseType)
{
var regexp = /(,|;|0x|0X)/g;
var w_data = epro1_oper.flash_w_data.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;
}
w_data = HexStr2Bytes(w_data_temp);
if(w_data.length < 1)
{
return;
}
epro1_oper.flash_w_data = w_data;
var cmd_buf = [];
var regaddr = epro1_oper.flash_r_bgaddr;
regaddr >>= 2; //地址除以4
cmd_buf[0] = regaddr & 0xFF;
cmd_buf[1] = (regaddr >> 8) & 0xFF;
cmd_buf[2] = w_data.length;
cmd_buf[3] = eraseType;
for(var index = 0; index < w_data.length;index++)
{
cmd_buf[4+index] = w_data[index];
}
cmd_buf = Ep1_CmdData(epro1_oper.commaddr,63,0,cmd_buf,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
var mes = "地址 "+epro1_oper.commaddr+" 向Flash地址" + epro1_oper.flash_r_bgaddr+" 写数据成功 "+epro1_oper.flash_w_data;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ReadFlashCmd()
{
var cmd_buf = [];
var regaddr = epro1_oper.flash_r_bgaddr;
regaddr >>= 2; //地址除以4
cmd_buf[0] = regaddr & 0xFF;
cmd_buf[1] = (regaddr >> 8) & 0xFF;
cmd_buf[2] = epro1_oper.flash_r_len;
cmd_buf = Ep1_CmdData(epro1_oper.commaddr,62,0,cmd_buf,epro1_oper.flash_r_len+6);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
var read_buf = [];
if(rtv == 0)
{
read_buf = ArrayCopy(ep1_recive_buf,read_buf,13,epro1_oper.flash_r_len);
epro1_oper.flash_r_data = Bytes2Str(read_buf);
var mes = "地址 "+epro1_oper.commaddr+" 读取Flash地址 "+ epro1_oper.flash_r_bgaddr+" 数据 " + epro1_oper.flash_r_data;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_flash_r_data").val(epro1_oper.flash_r_data);
//read_buf = [0x35, 0x38, 0x31, 0x39, 0x30, 0x30, 0x32, 0x33];
}
return read_buf;
}
async function Ep1_FastCfgCmd()
{
var uid_arr = Str2Bytes(epro1_oper.uid);
var feature = PrapareUIDFeatrue2(uid_arr);
var temp_buf = [];
temp_buf[0] = epro1_oper.delayfire & 0xFF;
temp_buf[1] = (epro1_oper.delayfire >> 8) & 0xFF;
ArrayAppend(temp_buf,feature,feature.length,2);
cmd_buf = Ep1_CmdData(epro1_oper.commaddr,19,0,feature,5);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
var states_buf = [];
ArrayCopy(ep1_recive_buf,states_buf,10,2);
var delay_ = (ep1_recive_buf[9] & 0xFF) << 8;
delay_ += (ep1_recive_buf[8] & 0xFF)
if(delay_ < 5 || delay_ > 30005)
delay_ = "未设置";
else
{
delay_ -= 5;
epro1_oper.delayfire = delay_;
$("#ep1_delayfire").val(delay_);
}
epro1_oper.sys_states = Bytes2Str(states_buf);
$("#ep1_sys_states").val(epro1_oper.sys_states);
var mes = "地址 "+ epro1_oper.commaddr+" 状态值 "+ epro1_oper.sys_states+" 延时:" + delay_;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_CheckSelfCmd(addr,checktype)
{
var param = [];
var cmd = 0;
switch(checktype)
{
case 0: cmd = 16 ; break;//标准自检
case 1: cmd = 19 ;break;//工厂半成品检
case 3: cmd = 22 ;break;//起爆开关检测
}
var cmd_buf = Ep1_CmdData(addr,8,cmd,param,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
return rtv;
}
async function Ep1_ReadFirmwareCmd()
{
var read_buf = await Ep1_ReadCmdByAddr(4,4);
if(read_buf.length > 1)
{
epro1_oper.firmware = Bytes2Str(read_buf);
var mes = "地址 "+ epro1_oper.commaddr+" 固件版本 "+ epro1_oper.firmware;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_firmware").val(epro1_oper.firmware);
return 0;
}
return 1;
}
async function Ep1_ReadSysStatesCmd()
{
var states_buf = await Ep1_ReadCmdByAddr(3,4);
if(states_buf.length > 1)
{
epro1_oper.sys_states = Bytes2Str(states_buf);
$("#ep1_sys_states").val(epro1_oper.sys_states);
var mes = "地址 "+ epro1_oper.commaddr+" 状态值 "+ epro1_oper.sys_states;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
return 0;
}
return 1;
}
async function Ep1_VerifiPwdCmd(addr,pwd)
{
var pwd_buf = Str2Bytes(epro1_oper.pwd);
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,4,0,pwd_buf,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
var mes = "地址 "+ epro1_oper.commaddr+" 密码验证成功"
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_SetPWDFlag()
{
var param = [];
var read_len = 0;
if((epro1_oper.commaddr& 0x03FF) != 0)
read_len = 2;
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,8,24,param,read_len);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("密码标志置位成功",MesgType.MESG_TYPE_INFO);
}
return rtv ;
}
async function Ep1_ClkAmend(bgaddr,endaddr)
{
var param = [];
param[0] = bgaddr&0xFF;
param[1] = (bgaddr >> 8)&0xFF;
param[2] = endaddr&0xFF;
param[3] = (endaddr >> 8) &0xFF;
var cmd_buf = Ep1_CmdData(0,8,12,param,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
return rtv;
}
/*
* type 巡检类型 0 起爆巡检 1 在线巡检
*/
async function Ep1_Inspect(bgaddr,endaddr,type)
{
var param = [];
var cmd;
param[0] = bgaddr&0xFF;
param[1] = (bgaddr >> 8)&0xFF;
param[2] = endaddr&0xFF;
param[3] = (endaddr >> 8) &0xFF;
if(type > 0)
{
cmd = 29;
}else{
cmd = 15;
}
var rtd = {
rtv : 1,
ok_addr:[],
ng_addr:[],
};
var cmd_buf = Ep1_CmdData(0,8,cmd,param,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
rtd.rtv = rtv;
if(rtv != 0)
return rtd;
var ok_addr_buf = [];
var ng_addr_buf = [];
var index = 8;
var inspect_addr = bgaddr;
var ok_index = 0;
var ng_index = 0;
while(inspect_addr < endaddr)
{
var data = ep1_recive_buf[index];//?待定
index++;
for(var i = 0; i < 8 ;i++)
{
if(inspect_addr >= endaddr)
{
break;
}
if((data & 0x01) > 0)
{
ok_addr_buf[ok_index++] = inspect_addr;
}else{
ng_addr_buf[ng_index++] = inspect_addr;
}
inspect_addr++;
data >>= 1;
}
}
rtd.ok_addr = ok_addr_buf;
rtd.ng_addr = ng_addr_buf;
return rtd;
}
async function Ep1_DoCmd(addr,cmd)
{
var param = [];
var cmd_buf = Ep1_CmdData(addr,8,cmd,param,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
return rtv;
}
async function Ep1_Charge()
{
var rtv = await Ep1_DoCmd(0,10);
if(rtv == 0){
ShowCommMes("执行充电成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ChipReset()
{
var rtv = await Ep1_DoCmd(0,0xFD);
if(rtv == 0){
ShowCommMes("芯片复位执行成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_DisCharge()
{
var rtv = await Ep1_DoCmd(0,11);
if(rtv == 0){
ShowCommMes("执行放电成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_OnLineCheck()
{
var param = [];
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,9,0,param,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("模块在线",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ClkAmend_Task()
{
var bgaddr = epro1_oper.cycle_bgaddr;
while(bgaddr < epro1_oper.cycle_endaddr)
{
await Ep1_ClkAmend(bgaddr,bgaddr+epro1_oper.cycle_group_count);
bgaddr+= epro1_oper.cycle_group_count;
await TransSleep(1000);
}
}
async function Ep1_Inspect_Task(type)
{
var bgaddr = epro1_oper.cycle_bgaddr;
var endaddr_ = 0;
while(bgaddr < epro1_oper.cycle_endaddr)
{
endaddr_ = bgaddr+epro1_oper.cycle_group_count;
if(endaddr_ > epro1_oper.cycle_endaddr )
{
endaddr_ = epro1_oper.cycle_endaddr;
}
var rtd = await Ep1_Inspect(bgaddr,endaddr_,type);
bgaddr+= epro1_oper.cycle_group_count;
await TransSleep(1000);
var mes = "巡检成功: ";
for(var index = 0; index < rtd.ok_addr.length;index++)
{
mes += rtd.ok_addr[index]+" ";
}
if(rtd.ok_addr.length > 0)
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
var mes = "巡检失败: ";
for(var index = 0; index < rtd.ng_addr.length;index++)
{
mes += rtd.ng_addr[index]+" ";
}
if(rtd.ng_addr.length > 0)
ShowCommMes(mes,MesgType.MESG_TYPE_ERROR);
}
}
async function Ep1_Sleep()
{
var rtv = await Ep1_DoCmd(epro1_oper.commaddr,14);
if(rtv == 0){
ShowCommMes("执行休眠成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_AWake()
{
var param = [];
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,9,0,param,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("执行唤醒成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_Blast()
{
var rtv = await Ep1_DoCmd(0,13);
if(rtv == 0){
ShowCommMes("执行起爆成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ResetPWDFlag()
{
var param = [];
var read_len = 0;
if((epro1_oper.commaddr& 0x03FF) != 0)
read_len = 2;
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,8,25,param,read_len);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("重置密码成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_RunBootLoader()
{
var rtv = await Ep1_DoCmd(epro1_oper.commaddr,0xFE);
if(rtv == 0){
ShowCommMes("执行跳转成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_RestAddr()
{
param[0] = epro1_oper.commaddr & 0xFF;
param[1] = (epro1_oper.commaddr >> 8) & 0xFF;
var rtv = await Ep1_WriteRunCfgCmd(1,8,2,param);
if(rtv == 0)
{
ShowCommMes("地址 "+ epro1_oper.commaddr+" 延时设置成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ReadUID()
{
var read_buf = await Ep1_ReadCmdByAddr(1,15);
if(read_buf.length > 1){
epro1_oper.uid = String.fromCharCode.apply(null,read_buf.slice(0,15));
var mes = "地址 "+epro1_oper.commaddr +" UID"+ epro1_oper.uid;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_uid").val(epro1_oper.uid);
return 0;
}
return 1;
}
async function Ep1_WriteUID()
{
var uid_arr = Str2Bytes(epro1_oper.uid);
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,1,0,uid_arr,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
ShowCommMes(epro1_oper.commaddr + " UID 写入成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_VerifiUidFeature()
{
var uid_arr = Str2Bytes(epro1_oper.uid);
var feature = PrapareUIDFeatrue2(uid_arr);
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,17,0,feature,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
ShowCommMes(epro1_oper.commaddr + " UID 特征码验证成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ReadPWD()
{
var param = Str2Bytes(epro1_oper.uid);
param[param.length]= 0x02;
var cmd_buf = Ep1_CmdData(0,15,0,param,12);
cmd_buf[2] = 0x08;
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
var read_buf = [] ;
ArrayCopy(ep1_recive_buf,read_buf,11,8);
epro1_oper.pwd = String.fromCharCode.apply(null,read_buf.slice(0,8));
var mes = "地址 "+epro1_oper.commaddr +" PWD"+ epro1_oper.pwd;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_pwd").val(epro1_oper.pwd);
}
return rtv;
}
async function Ep1_WritePWD()
{
var pwd_arr = Str2Bytes(epro1_oper.pwd);
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,2,0,pwd_arr,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes(epro1_oper.commaddr + " 密码 写入成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_SearchTask()
{
var param = [];
param[0] = epro1_oper.auset_addr_fac & 0x0FF;
param[1] = (epro1_oper.auset_addr_fac >> 8) & 0x0FF;
var cmd_buf = Ep1_CmdData(0,8,28,param,0)
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("设置自动分配地址因子成功 " + epro1_oper.auset_addr_fac ,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_SetReadClass()
{
var param = [];
param[0] = epro1_oper.readrate_class & 0x0FF;
var cmd_buf = Ep1_CmdData(0,8,27,param,0)
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("设置通讯档位成功 " ,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ReadDelay()
{
var data = await Ep1_ReadCmdByAddr(8,2);
if(data.length > 1){
{
var delay_ = data[1];
delay_ <<= 8;
delay_ |= data[0];
var mes ="";
if(delay_ < 5)
{
mes = "地址:"+ epro1_oper.commaddr +" 未设置";
epro1_oper.delayfire = 0;
}else{
delay_ -= 5;
mes = "地址:"+ epro1_oper.commaddr +" 延时为 "+delay_;
$("#ep1_delayfire").val(delay_);
epro1_oper.delayfire = delay_;
}
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
return 0;
}
return 1;
}
async function Ep1_WriteDelay()
{
var param = [];
param[0] = epro1_oper.delayfire & 0xFF;
param[1] = (epro1_oper.delayfire >> 8) & 0xFF;
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,5,0,param,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("地址 "+epro1_oper.commaddr + " 延时设置成功" ,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_WriteEnhanceTime()
{
var param = [];
param[0] = epro1_oper.delayfire & 0xFF;
param[1] = (epro1_oper.delayfire >> 8) & 0xFF;
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,18,0,param,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("地址 "+epro1_oper.commaddr + " 抗震延时设置成功" ,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ReadAddr()
{
var param = Str2Bytes(epro1_oper.uid);
param[param.length]= 0x07;
var cmd_buf = Ep1_CmdData(0,15,0,param,6);
cmd_buf[2] = 0x08;
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0)
{
var read_buf = [];
ArrayCopy(ep1_recive_buf,read_buf,11,2);
epro1_oper.commaddr = (read_buf[1] << 8) + (read_buf[0] & 0xFF) ;
epro1_oper.commaddr &= 0x3FF
epro1_oper.pwd = String.fromCharCode.apply(null,read_buf.slice(0,8));
var mes = "UID "+epro1_oper.uid +" 地址 "+ epro1_oper.commaddr;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_commaddr").val(epro1_oper.commaddr);
}
return rtv;
}
async function Ep1_WriteAddr()
{
var param = Str2Bytes(epro1_oper.uid);
param[param.length]= epro1_oper.commaddr & 0xFF;
param[param.length]= (epro1_oper.commaddr >> 8) & 0xFF;
var cmd_buf = Ep1_CmdData(0,7,0,param,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
var mes = "UID "+epro1_oper.uid +" 设置地址 "+ epro1_oper.commaddr +"成功";
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_BlastSetAddr()
{
var param = [];
param[0]= epro1_oper.commaddr & 0xFF;
param[1]= (epro1_oper.commaddr >> 8) & 0xFF;
var cmd_buf = Ep1_CmdData(1,7,0,param,2);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
var mes ="广播设置地址 "+ epro1_oper.commaddr +"成功";
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_FireDelayExcue()
{
var param = [];
param[0]= epro1_oper.fire_delay_excue & 0xFF;
param[1]= (epro1_oper.fire_delay_excue >> 8) & 0xFF;
var cmd_buf = Ep1_CmdData(0,8,26,param,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("延迟起爆成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_ReadAmend()
{
var data = await Ep1_ReadCmdByAddr(21,2);
if(data.length > 1)
{
var amend = (data[1] << 8) | data[0] ;
if((amend & 0x8000) > 0)
{
var temp = (~0)& (~0xFFFF);
temp |= amend;
amend = 0-temp;
}
mes = "地址:"+ epro1_oper.commaddr +" 校准值 "+amend;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_sys_amend").val(amend);
return 0;
}
return 1;
}
async function Ep1_ReadBusV()
{
var data = await Ep1_ReadCmdByAddr(23,2);
if(data.length > 1)
{
var bus_v = (data[1] << 8) | data[0] ;
epro1_oper.bus_voltage = (bus_v / 4096)*3.3/0.43*3.43;
epro1_oper.bus_voltage = epro1_oper.bus_voltage.toFixed(1);
mes = "地址:"+ epro1_oper.commaddr +" 电压值 "+epro1_oper.bus_voltage;
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
$("#ep1_bus_voltage").val(epro1_oper.bus_voltage);
return 0;
}
return 1;
}
async function Ep1_LoadFirmwareFile()
{
if( typeof(ep1_qthandle) != "undefined" && ep1_qthandle != null )
{
ep1_qthandle.GetFirmWare();
ep1_excuedcmd = 0;
var rtv = await Ep1_WaitCmdExcu(0xFFFE,10000000);
ShowCommMes("选择固件文件",MesgType.MESG_TYPE_INFO);
if(rtv == 0){
epro1_oper.update_firmware = ep1_updata_rtvinfo;
$("#ep1_update_firmware").val(epro1_oper.update_firmware);
}
}
}
async function Ep1_JumpLoader()
{
var rtv = await Ep1_DoCmd(0,0xFE);
if(rtv == 0){
ShowCommMes("跳转运行加载程序设置成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_CleanProgram()
{
var rtv = await Ep1_DoCmd(0,0xFC);
if(rtv == 0){
ShowCommMes("跳转运行加载程序设置成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_RunApp()
{
var file_info = [0,0,0,0,0,0];
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,8,0xFD,file_info,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("运行APP配置成功",MesgType.MESG_TYPE_INFO);
}
return rtv;
}
async function Ep1_UpdateEpro()
{
var file_size = 0;
var file_info = [];
var check_sum = 0;
if( typeof(ep1_qthandle) != "undefined" && ep1_qthandle != null )
{
ep1_excuedcmd = 0;
ep1_qthandle.OpenFirmWare(epro1_oper.update_firmware);
var rtv = await Ep1_WaitCmdExcu(0xFFFE,10000);
if(rtv != 0){
ShowCommMes("文件打开失败",MesgType.MESG_TYPE_ERROR);
}
console.log("open file "+ep1_updata_rtvinfo);
file_info = JSON.parse(ep1_updata_rtvinfo);
if(file_info.length != 6)
{
ShowCommMes("文件打开失败",MesgType.MESG_TYPE_ERROR);
}
file_size = file_info[4] | (file_info[5]<<8);
ShowCommMes(epro1_oper.update_firmware + " 文件大小: "+file_size +" file_info " + file_info);
}
rtv = await Ep1_JumpLoader();
if(rtv != 0)
{
return;
}
ShowCommMes("等待从机复位",MesgType.MESG_TYPE_INFO);
await TransSleep(2000);
rtv = await Ep1_Charge();
if(rtv != 0)
{
return;
}
await TransSleep(5000+epro1_oper.delayfire);
rtv = await Ep1_CleanProgram();
if(rtv != 0)
{
return;
}
await TransSleep(2000);
ShowCommMes("开始编程");
var write_len = 0;
var count = 0;
var regaddr = 0x400;
var write_data ;
while(count < file_size)
{
if((count+16) < file_size)
{
write_len = 16;
}else{
write_len = file_size - count;
}
if( typeof(ep1_qthandle) != "undefined" && ep1_qthandle != null )
{
ep1_excuedcmd = 0;
ep1_qthandle.ReadFirmWare(count, write_len);
var rtv = await Ep1_WaitCmdExcu(0xFFFE,10000);
if(rtv != 0){
ShowCommMes("读取文件数据失败",MesgType.MESG_TYPE_ERROR);
return ;
}
write_data = JSON.parse(ep1_updata_rtvinfo);
}
rtv = await Ep1_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;
}
await TransSleep(500);
ShowCommMes("校验码检测",MesgType.MESG_TYPE_INFO);
var cmd_buf = Ep1_CmdData(epro1_oper.commaddr,8,0xFD,file_info,0);
ep1_excuedcmd = 0;
Ep1_SendCmd(cmd_buf);
var rtv = await Ep1_WaitCmdExcu(epro1_oper.cmd,1000);
if(rtv == 0){
ShowCommMes("校验成功",MesgType.MESG_TYPE_INFO);
}
}
async function Ep1_ExcueOperCmd()
{
var once_excue = 0;
if(epro1_oper.cycle_test > 0)
{
epro1_oper.commaddr = epro1_oper.cycle_bgaddr;
epro1_oper.uid = epro1_oper.cycle_bguid;
epro1_oper.delayfire = epro1_oper.cycle_bgdelay;
epro1_oper.cycle_addr = epro1_oper.cycle_bgaddr;
}else{
once_excue = 1;
}
while((epro1_oper.cycle_test > 0 && epro1_oper.cycle_runcount > 0) || (once_excue > 0))
{
epro1_oper.cycle_runcount--;
once_excue = 0;
switch(epro1_oper.cmd )
{
case 1 : await Ep1_Charge();break;
case 2 : await Ep1_DisCharge();break;
case 3 : await Ep1_OnLineCheck();break;
case 4 : await Ep1_Blast();break;
case 5 : await Ep1_ClkAmend_Task();break;
case 6 : await Ep1_AWake();break;
case 7 : await Ep1_CheckSelfCmd(0,0);break;
case 8 : await Ep1_CheckSelfCmd(0,1);break;
case 9 : await Ep1_CheckSelfCmd(0,3);break;
case 10: await Ep1_Sleep();break;
case 11: await Ep1_SwitchBus();break;
case 12: await Ep1_SwitchHeartBeat();break;
case 13: await Ep1_Inspect_Task(1);break;
case 14: await Ep1_Inspect_Task(0);break;
case 15: await Ep1_ResetPWDFlag();break;
case 16: await Ep1_FastCfgCmd(); break;
case 17: await Ep1_ReadUID();break;
case 18: await Ep1_WriteUID();break;
case 19: await Ep1_VerifiUidFeature();break;
case 20: await Ep1_ReadPWD();break;
case 21: await Ep1_WritePWD();break;
case 22: await Ep1_VerifiPwdCmd();break;
case 23: await Ep1_SetPWDFlag();break;
case 24: await Ep1_ReadDelay();break;
case 25: await Ep1_WriteDelay();break;
case 26: await Ep1_WriteEnhanceTime();break;
case 27: await Ep1_ReadAddr();break;
case 28: await Ep1_WriteAddr();break;
case 29: await Ep1_BlastSetAddr();break;
case 30: await Ep1_FireDelayExcue();break;
case 31: await Ep1_SearchTask(); break;
case 32: await Ep1_SetReadClass();break;
case 33: await Ep1_ReadSysStatesCmd();break;
case 34: await Ep1_ReadFirmwareCmd();break;
case 35: await Ep1_ReadAmend();break;
case 36: await Ep1_ReadBusV();break;
case 37: await Ep1_ReadFlashCmd();break;
case 38: await Ep1_WriteFlash(0);break;
case 39: await Ep1_WriteFlash(1);break;
case 40: await Ep1_JumpLoader();break;
case 41: await Ep1_CleanProgram();break;
case 42: await Ep1_UpdateEpro();break;
case 43: await Ep1_RunApp();break;
case 44: epro1_oper.cycle_runcount = 0;Ep1_LoadFirmwareFile();break;
default : return;
}
if(epro1_oper.cycle_test > 0)
{
if(epro1_oper.cycle_rundelay > 0)
{
await TransSleep(epro1_oper.cycle_rundelay);
}
Ep1_CycleParamUpdate();
}
}
if(epro1_oper.cycle_test > 0)
{
var btnobj = $("#ep1_Cycletest");
epro1_oper.cycle_test = 0;
btnobj.removeClass("layui-btn-warm");
}
}
function Ep1_CycleParamUpdate()
{
if(epro1_oper.cycle_addr < epro1_oper.cycle_endaddr)
{
epro1_oper.cycle_addr++;
}else{
epro1_oper.cycle_addr = epro1_oper.cycle_bgaddr;
}
epro1_oper.commaddr = epro1_oper.cycle_addr;
epro1_oper.delayfire = (epro1_oper.commaddr - epro1_oper.cycle_bgaddr)*epro1_oper.cycle_stepdelay + epro1_oper.cycle_bgdelay;
var flow_str = epro1_oper.cycle_bguid.slice(11,15);
var uidhead = epro1_oper.cycle_bguid.slice(0,11);
var flow_num = parseInt(flow_str,10);
flow_num = flow_num+epro1_oper.commaddr - epro1_oper.cycle_bgaddr;
epro1_oper.uid = uidhead + IntFormat(4,flow_num);
}
function Ep1_CycleTestBtn()
{
var btnobj = $("#ep1_Cycletest");
if(epro1_oper.cycle_test > 0)
{
epro1_oper.cycle_test = 0;
btnobj.removeClass("layui-btn-warm");
}else{
epro1_oper.cycle_test = 1;
btnobj.addClass("layui-btn-warm");
}
}