1357 lines
35 KiB
JavaScript
1357 lines
35 KiB
JavaScript
|
||
var epro2_oper = {
|
||
cmd:0,
|
||
ctr_cmd:0,
|
||
comm_port:"",
|
||
comm_baud:"",
|
||
comm_parity:-1,
|
||
comm_stopbit:-1,
|
||
vbus_mod:1,
|
||
//uid:"581900230A00801",
|
||
uid:"AD23581028A00001",
|
||
pwd:"1234",
|
||
delayfire:-1,
|
||
amend_v:0,
|
||
sorftenhance:1,
|
||
commaddr:21,
|
||
mtp_r_bgaddr:0,//0x3C00,
|
||
mtp_r_len:8,
|
||
mtp_w_addr:0,//0x3C00,
|
||
mtp_w_data:"",
|
||
sys_states:"",
|
||
ack_sp:9,
|
||
ack_cur:0,
|
||
firmware:"",
|
||
chg_class:0,
|
||
chg_group:0,
|
||
blast_delay:0,
|
||
auset_addr_fac:400,
|
||
run_cfg_value:"",
|
||
cycle_bgaddr:501,
|
||
cycle_endaddr:900,
|
||
cycle_group_count:50,
|
||
cycle_bgdelay:0,
|
||
cycle_stepdelay:50,
|
||
//cycle_bguid:"581900230A00801",
|
||
cycle_bguid:"AD23581028A00001",
|
||
cycle_rundelay:10,
|
||
cycle_runcount:1,
|
||
cycle_test:0,
|
||
ep2_high_voltage:85,
|
||
ep2_middle_voltage:50,
|
||
ep2_heartbeat_sw:1,
|
||
};
|
||
var ep2_qthandle = null;
|
||
var ep2_excuedcmd;
|
||
var ep2_excued_rtv;
|
||
var ep2_cmd_excue_busy = 0
|
||
var ep2_bus_cur = 0;
|
||
var ep2_recive_buf = [];
|
||
var EP2_CMM_RATE = 500;
|
||
var ep2_log_write_flag = 0;
|
||
function Ep2_Start_Comm()
|
||
{
|
||
console.log("Ep2_Start_Comm ");
|
||
if( typeof(ep2_qthandle) != "undefined" && ep2_qthandle != null )
|
||
{
|
||
ep2_qthandle.SearchCommport();
|
||
console.log("SearchCommport ");
|
||
}
|
||
}
|
||
function Ep2_Open_CommPort(main_serial)
|
||
{
|
||
epro2_oper.comm_port =main_serial.comm_port;
|
||
epro2_oper.comm_baud =main_serial.comm_baud;
|
||
epro2_oper.comm_parity =main_serial.comm_parity;
|
||
epro2_oper.comm_stopbit = main_serial.comm_stopbit;
|
||
|
||
Main_Close_CommPort_Select();
|
||
var json_str = JSON.stringify(epro2_oper);
|
||
console.log(json_str);
|
||
if( typeof(ep2_qthandle) != "undefined" && ep2_qthandle != null )
|
||
{
|
||
ep2_qthandle.OpenCommPort(json_str);
|
||
}
|
||
}
|
||
function ep2_getInput()
|
||
{
|
||
epro2_oper.uid = $("#ep2_uid").val();
|
||
epro2_oper.pwd = $("#ep2_pwd").val();
|
||
epro2_oper.delayfire = parseInt($("#ep2_delayfire").val(),10);
|
||
epro2_oper.commaddr = parseInt($("#ep2_commaddr").val(),10);
|
||
epro2_oper.mtp_r_bgaddr = parseInt($("#ep2_mtp_r_bgaddr").val(),16);
|
||
epro2_oper.mtp_r_len = parseInt($("#ep2_mtp_r_len").val(),10);
|
||
epro2_oper.mtp_w_addr = parseInt($("#ep2_mtp_w_addr").val(),16);
|
||
epro2_oper.mtp_w_data = $("#ep2_mtp_w_data").val();
|
||
epro2_oper.auset_addr_fac = parseInt($("#ep2_auset_addr_fac").val(),10);
|
||
epro2_oper.run_cfg_value = $("#ep2_run_cfg_value").val();
|
||
epro2_oper.cycle_bgaddr = parseInt($("#ep2_cycle_bgaddr").val(),10);
|
||
epro2_oper.cycle_endaddr = parseInt($("#ep2_cycle_endaddr").val(),10);
|
||
epro2_oper.cycle_group_count = parseInt($("#ep2_cycle_group_count").val(),10);
|
||
epro2_oper.cycle_bgdelay = parseInt($("#ep2_cycle_bgdelay").val(),10);
|
||
epro2_oper.cycle_stepdelay = parseInt($("#ep2_cycle_stepdelay").val(),10);
|
||
epro2_oper.sys_states = $("#ep2_sys_states").val();
|
||
epro2_oper.cycle_bguid = $("#ep2_cycle_bguid").val();
|
||
epro2_oper.cycle_rundelay = parseInt($("#ep2_cycle_rundelay").val(),10);
|
||
epro2_oper.cycle_runcount = parseInt($("#ep2_cycle_runcount").val(),10);
|
||
epro2_oper.ep2_high_voltage = parseInt($("#ep2_high_voltage").val(),10);
|
||
epro2_oper.ep2_middle_voltage = parseInt($("#ep2_middle_voltage").val(),10);
|
||
epro2_oper.chg_class = parseInt($("#ep2_chg_class").val(),10);
|
||
epro2_oper.chg_group = parseInt($("#ep2_chg_group").val(),10);
|
||
epro2_oper.blast_delay = parseInt($("#ep2_blast_delay").val(),10);
|
||
epro2_oper.ack_cur = parseInt($("#ep2_ack_cur").val(),10);
|
||
epro2_oper.ack_sp = parseInt($("#ep2_ack_sp").val(),10);
|
||
}
|
||
async function ep2_cmd(cmd)
|
||
{
|
||
if(ep2_cmd_excue_busy > 0)
|
||
{
|
||
ShowCommMes("正在执行命令",MesgType.MESG_TYPE_INFO);
|
||
return;
|
||
}
|
||
ep2_cmd_excue_busy = 1;
|
||
ep2_getInput();
|
||
epro2_oper.cmd = cmd;
|
||
await Ep2_ExcueOperCmd();
|
||
ep2_cmd_excue_busy = 0;
|
||
|
||
}
|
||
function Ep2_Show_Def()
|
||
{
|
||
$("#ep2_uid").val(epro2_oper.uid);
|
||
$("#ep2_pwd").val(epro2_oper.pwd);
|
||
if(epro2_oper.delayfire > 0 && epro2_oper.delayfire < 30000 )
|
||
{
|
||
$("#ep2_delayfire").val(epro2_oper.delayfire);
|
||
}else{
|
||
$("#ep2_delayfire").val('');
|
||
}
|
||
|
||
$("#ep2_commaddr").val(epro2_oper.commaddr);
|
||
$("#ep2_mtp_r_bgaddr").val(Int2HexStr(epro2_oper.mtp_r_bgaddr,"",0));
|
||
$("#ep2_mtp_r_len").val(epro2_oper.mtp_r_len);
|
||
$("#ep2_mtp_w_addr").val(Int2HexStr(epro2_oper.mtp_w_addr,"",0));
|
||
$("#ep2_mtp_w_data").val(epro2_oper.mtp_w_data);
|
||
$("#ep2_auset_addr_fac").val(epro2_oper.auset_addr_fac);
|
||
$("#ep2_run_cfg_value").val(epro2_oper.run_cfg_value);
|
||
$("#ep2_cycle_bgaddr").val(epro2_oper.cycle_bgaddr);
|
||
$("#ep2_cycle_endaddr").val(epro2_oper.cycle_endaddr);
|
||
|
||
$("#ep2_cycle_group_count").val(epro2_oper.cycle_group_count);
|
||
$("#ep2_cycle_bgdelay").val(epro2_oper.cycle_bgdelay);
|
||
$("#ep2_cycle_stepdelay").val(epro2_oper.cycle_stepdelay);
|
||
$("#ep2_cycle_bguid").val(epro2_oper.cycle_bguid);
|
||
$("#ep2_cycle_rundelay").val(epro2_oper.cycle_rundelay);
|
||
$("#ep2_cycle_runcount").val(epro2_oper.cycle_runcount);
|
||
|
||
$("#ep2_sys_amend").val(epro2_oper.amend_v);
|
||
$("#ep2_sys_states").val(epro2_oper.sys_states);
|
||
$("#ep2_firmware").val(epro2_oper.firmware);
|
||
|
||
$("#ep2_high_voltage").val(epro2_oper.ep2_high_voltage);
|
||
$("#ep2_middle_voltage").val(epro2_oper.ep2_middle_voltage);
|
||
$("#ep2_chg_group").val(epro2_oper.chg_group);
|
||
$("#ep2_chg_class").val(epro2_oper.chg_class);
|
||
$("#ep2_blast_delay").val(epro2_oper.blast_delay);
|
||
$("#ep2_ack_cur").val(epro2_oper.ack_cur);
|
||
$("#ep2_ack_sp").val(epro2_oper.ack_sp );
|
||
|
||
}
|
||
function Ep2_Init()
|
||
{
|
||
var form = layui.form;
|
||
form.render();
|
||
form.on('switch', function(data){
|
||
var id = data.elem.id;
|
||
if(id == "mes_save_log")
|
||
{
|
||
layer.tips('日志记录 '+ (this.checked ? 'true' : 'false'), data.othis);
|
||
if(this.checked )
|
||
{
|
||
ep2_log_write_flag = 1;
|
||
}else{
|
||
ep2_log_write_flag = 0;
|
||
}
|
||
}
|
||
// else if(id == "soft_enhace")
|
||
// {
|
||
// layer.tips('软件抗震 '+ (this.checked ? 'true' : 'false'), data.othis)
|
||
// }
|
||
else if(id == "ep2_cycle_test"){
|
||
layer.tips('启动循环测试 '+ (this.checked ? 'true' : 'false'), data.othis);
|
||
if(this.checked){
|
||
epro2_oper.cycle_test = 1;
|
||
}else{
|
||
epro2_oper.cycle_test = 0;
|
||
}
|
||
}
|
||
|
||
});
|
||
|
||
// form.on('radio', function(data){
|
||
// var value = data.value;
|
||
// if(value == "DMod" )
|
||
// {
|
||
// layer.tips('差分通讯', data.othis)
|
||
// }else if(value == "SMod")
|
||
// {
|
||
// layer.tips('单端通讯', data.othis)
|
||
// }
|
||
|
||
// });
|
||
|
||
|
||
|
||
if(typeof(qchannel) != "undefined" && qchannel != null )
|
||
{
|
||
if(ep2_qthandle != null && typeof(ep2_qthandle) != "undefined")
|
||
{
|
||
console.log("Ep2_Inited 1 OK ---");
|
||
}else{
|
||
ep2_qthandle = qchannel.objects.ep2_qthandle;
|
||
if((typeof(ep2_qthandle) != "undefined") && (ep2_qthandle != null) )
|
||
{
|
||
console.log("Ep2_Init OK ---");
|
||
ep2_qthandle.ShowCommMes.connect(function(mesg,type){
|
||
ShowCommMes(mesg,type);
|
||
|
||
});
|
||
ep2_qthandle.ShowCommport.connect(function(jsoninfo){
|
||
Main_ShowCommport(jsoninfo);
|
||
});
|
||
ep2_qthandle.EP2Comm_Recive.connect(function(jsoninfo){
|
||
EP2Comm_Recive(jsoninfo);
|
||
});
|
||
}
|
||
}
|
||
}
|
||
Ep2_Show_Def();
|
||
PrapareUIDFeatrue(Str2Bytes(epro2_oper.uid));
|
||
}
|
||
var ep2_heartbeat_head = Str2Bytes("HBT");
|
||
function EP2_HeartBeat(frame_buf)
|
||
{
|
||
if(frame_buf[6] != 0x02)
|
||
{
|
||
return;
|
||
}
|
||
var bus_volate = frame_buf[10] + (frame_buf[11] << 8);
|
||
bus_volate = bus_volate / 10;
|
||
bus_volate = bus_volate.toFixed(1);
|
||
var bus_mvolate = frame_buf[12] + (frame_buf[13] << 8);
|
||
bus_mvolate = bus_mvolate / 10;
|
||
bus_mvolate = bus_mvolate.toFixed(1);
|
||
var bus_v = frame_buf[14] + (frame_buf[15] << 8);
|
||
bus_v = bus_v / 10;
|
||
bus_v = bus_v.toFixed(1);
|
||
|
||
var bus_current = frame_buf[16] + (frame_buf[17] << 8)+(frame_buf[18] << 16)+(frame_buf[19] << 24);
|
||
bus_current = bus_current/1000;
|
||
bus_current = bus_current.toFixed(3);
|
||
var mes = "高电平电压 "+bus_volate+"V 中电平"+bus_mvolate+"V 总线输出 "+bus_v+"V 总线电流 "+bus_current+"mA"
|
||
ep2_bus_cur = bus_current;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO,ep2_log_write_flag);
|
||
}
|
||
function EP2Comm_Recive(jsoninfo)
|
||
{
|
||
var frame = JSON.parse(jsoninfo);
|
||
|
||
var frame_str = "Rx: "+ Bytes2Str(frame) ;
|
||
|
||
if(frame[6] == 0x02 && frame.length > 19)
|
||
{
|
||
EP2_HeartBeat(frame);
|
||
return;
|
||
}else{
|
||
ep2_recive_buf = frame;
|
||
ep2_excued_rtv = frame[9];
|
||
ep2_excuedcmd = frame[7] + (frame[8] << 8);
|
||
ShowCommMes(frame_str,MesgType.MESG_TYPE_INFO);
|
||
BTInfoCount(1);
|
||
if(ep2_excued_rtv != 0)
|
||
{
|
||
BTErrorCount(1);
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
function Ep2_CmdData(addr,func,param,read_len,wr_delay,rate)
|
||
{
|
||
var cmdbuf = [];
|
||
var w_len = param.length+2;//参数+包头
|
||
epro2_oper.ctr_cmd = 3;
|
||
cmdbuf[0] = read_len & 0xFF;
|
||
cmdbuf[1] = (read_len >> 8) & 0xFF;
|
||
cmdbuf[2] = w_len & 0xFF;
|
||
cmdbuf[3] = (w_len >> 8) & 0xFF;
|
||
cmdbuf[4] = rate & 0xFF;
|
||
cmdbuf[5] = (rate >> 8) & 0xFF;
|
||
cmdbuf[6] = wr_delay;
|
||
addr <<= 6;
|
||
addr &= 0xFFFC;
|
||
addr |= (func & 0x3F);
|
||
cmdbuf[7] = addr & 0xFF;
|
||
cmdbuf[8] = (addr >> 8) & 0xFF;
|
||
for(var index = 0; index < param.length; index++)
|
||
{
|
||
cmdbuf[9+index] = param[index];
|
||
}
|
||
return cmdbuf;
|
||
|
||
}
|
||
var Ep2_Cmd_Head = "Ew";
|
||
function Ep2_SendCmd(cmd_buf)
|
||
{
|
||
|
||
var buf = Str2Bytes(Ep2_Cmd_Head);
|
||
|
||
buf[2] = 0; //数据长度
|
||
buf[3] = 0; //数据长度
|
||
buf[4] = 0; //源地址
|
||
buf[5] = 0; //目标地址
|
||
buf[6] =epro2_oper.ctr_cmd;
|
||
buf[7] =epro2_oper.cmd & 0x0FF;
|
||
buf[8] =(epro2_oper.cmd >> 8) & 0xFF;
|
||
for(var index = 0; index < cmd_buf.length;index++)
|
||
{
|
||
buf[9+index] = cmd_buf[index];
|
||
}
|
||
var send_len = buf.length + 1;
|
||
buf[2] = send_len & 0x0FF;
|
||
buf[3] = (send_len >> 8) & 0x0FF;
|
||
buf[buf.length] = Epj_CalcCrc8(buf,buf.length);
|
||
var json_str = JSON.stringify(buf);
|
||
console.log(json_str);
|
||
if( typeof(ep2_qthandle) != "undefined" && ep2_qthandle != null )
|
||
{
|
||
ep2_qthandle.Ep2_SendData(json_str);
|
||
}
|
||
var mes = "Tx:" + Bytes2Str(buf);
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
}
|
||
//同步非阻塞延时
|
||
async function Ep2_WaitCmdExcu( cmd, time_out)
|
||
{
|
||
if(time_out == 0)
|
||
return 0;
|
||
time_out = parseInt ( (time_out+19)/20);
|
||
ep2_excued_rtv = 0;
|
||
while((time_out > 0) && (ep2_excued_rtv < 1))
|
||
{
|
||
if(ep2_excuedcmd == cmd)
|
||
{
|
||
break;
|
||
}
|
||
await TransSleep(20);
|
||
time_out--;
|
||
}
|
||
if(ep2_excued_rtv != 0)
|
||
{
|
||
ShowCommMes("命令执行失败",MesgType.MESG_TYPE_ERROR);
|
||
// epro2_oper.cycle_test = 0;//停止循环测试
|
||
//epro2_oper.cycle_runcount = 1;
|
||
return 2;
|
||
}
|
||
if(time_out > 0 )
|
||
{
|
||
|
||
return 0;
|
||
}
|
||
else
|
||
{
|
||
ShowCommMes("通信超时",MesgType.MESG_TYPE_ERROR);
|
||
//epro2_oper.cycle_test = 0;//停止循环测试
|
||
epro2_oper.cycle_runcount = 1;
|
||
return 1;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
async function Ep2_HeartBeat_SW()
|
||
{
|
||
var cmd_buf = [];
|
||
epro2_oper.ep2_heartbeat_sw ^= 0x01;
|
||
epro2_oper.ctr_cmd = 2;
|
||
cmd_buf[0] = epro2_oper.ep2_heartbeat_sw;
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
if(epro2_oper.ep2_heartbeat_sw > 0)
|
||
{
|
||
ShowCommMes("开启心跳",MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("关闭心跳",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
}
|
||
|
||
async function Ep2_BusSwitch(sw)
|
||
{
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = sw;
|
||
cmd_buf[1] = epro2_oper.ep2_high_voltage & 0x0FF;
|
||
cmd_buf[2] = (epro2_oper.ep2_high_voltage >> 8) & 0x0FF;
|
||
cmd_buf[3] = epro2_oper.ep2_middle_voltage & 0x0FF;
|
||
cmd_buf[4] = (epro2_oper.ep2_middle_voltage >> 8) & 0x0FF;
|
||
ep2_excuedcmd = 0;
|
||
epro2_oper.ctr_cmd = 1;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,5000);
|
||
if(rtv == 0)
|
||
{
|
||
if(sw > 0)
|
||
{
|
||
ShowCommMes("开启总线",MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("关闭总线",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
}
|
||
|
||
async function Ep2_WriteMTPCmd(comaddr,regaddr,w_len,param)
|
||
{
|
||
var cmd_buf = [];
|
||
epro2_oper.ctr_cmd = 3;
|
||
regaddr >>= 2; //地址除以4
|
||
cmd_buf[0] = regaddr & 0xFF;
|
||
cmd_buf[1] = w_len;
|
||
for(var index = 0; index < param.length;index++)
|
||
{
|
||
cmd_buf[2+index] = param[index];
|
||
}
|
||
cmd_buf = Ep2_CmdData(comaddr,63,cmd_buf,1,(w_len*2+4),EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
return rtv;
|
||
|
||
}
|
||
async function Ep2_ReadMTPCmd(comaddr,regaddr,r_len)
|
||
{
|
||
var cmd_buf = [];
|
||
regaddr >>= 2; //地址除以4
|
||
cmd_buf[0] = regaddr & 0xFF;
|
||
cmd_buf[1] = r_len;
|
||
cmd_buf = Ep2_CmdData(comaddr,62,cmd_buf,r_len+1,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
var read_buf = [];
|
||
if(rtv == 0)
|
||
{
|
||
read_buf = ArrayCopy(ep2_recive_buf,read_buf,10,r_len);
|
||
var mes = "地址 "+comaddr+ " MTP 数据" + Bytes2Str(read_buf) ;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return read_buf;
|
||
}
|
||
|
||
async function Ep2_SetAddrByUID()
|
||
{
|
||
var uid_arr = Str2Bytes(epro2_oper.uid);
|
||
//var feature = UidCode_YM2JQ(uid_arr);
|
||
var feature = UidCode_YM2JQ_2(uid_arr);
|
||
cmd_buf = Ep2_CmdData(epro2_oper.commaddr,21,feature,1,4,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var mes = "UID: "+epro2_oper.uid+ " 设置地址 "+ epro2_oper.commaddr +" 成功";
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
|
||
}else{
|
||
var mes = "UID: "+epro2_oper.uid+ " 设置地址失败";
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_ERROR);
|
||
|
||
}
|
||
|
||
}
|
||
|
||
async function Ep2_FastCfgCmd(uid,addr,delay)
|
||
{
|
||
var uid_arr = Str2Bytes(uid);
|
||
//var feature = UidCode_YM2JQ(uid_arr);
|
||
var feature = UidCode_YM2JQ_2(uid_arr);
|
||
var temp_buf = [];
|
||
temp_buf[0] = delay & 0xFF;
|
||
temp_buf[1] = (delay >> 8) & 0xFF;
|
||
ArrayAppend(feature,temp_buf,2,feature.length);
|
||
cmd_buf = Ep2_CmdData(addr,22,temp_buf,2,70,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
|
||
var delay_ = (ep2_recive_buf[11] & 0xFF) << 8;
|
||
delay_ += (ep2_recive_buf[10] & 0xFF);
|
||
|
||
epro2_oper.delayfire = delay_;
|
||
$("#ep2_delayfire").val(delay_);
|
||
|
||
var mes = "地址 "+ addr+" 延时:" + delay_;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Ep2_CheckSelfCmd(addr)
|
||
{
|
||
var param = [];
|
||
switch(epro2_oper.cmd)
|
||
{
|
||
case 4: param[0] = 0 ; break;
|
||
case 5: param[0] = 1 ;break;
|
||
case 6: param[0] = 2 ;break;
|
||
|
||
}
|
||
var cmd_buf = Ep2_CmdData(addr,32,param,0,4,EP2_CMM_RATE);
|
||
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
return rtv;
|
||
|
||
}
|
||
|
||
async function Ep2_ReadCapChgT()
|
||
{
|
||
var param = [];
|
||
param[0] = 8;
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,32,param,5,4,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var read_buf = [];
|
||
ArrayCopy(ep2_recive_buf,read_buf,10,4);
|
||
var capT = read_buf[3];
|
||
capT <<= 8;
|
||
capT += read_buf[2];
|
||
capT <<= 8;
|
||
capT += read_buf[1];
|
||
capT <<= 8;
|
||
capT += read_buf[0];
|
||
capT >>= 2;
|
||
var mes ;
|
||
mes = "地址 "+epro2_oper.commaddr +" 电容充电时间us "+ capT;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
return;
|
||
}
|
||
|
||
}
|
||
|
||
async function Ep2_ReadFirmwareCmd(addr)
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(addr,8,4,param,8);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
param = [];
|
||
if(rtv == 0)
|
||
{
|
||
|
||
ArrayCopy(ep2_recive_buf,param,11,4);
|
||
epro2_oper.firmware = Bytes2Str(param);
|
||
var mes = "地址 "+ addr+" 固件版本 "+ epro2_oper.firmware;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
$("#ep2_firmware").val(epro2_oper.firmware);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Ep2_ReadSysStatesCmd(addr)
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(addr,28,param,5,80,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var states_buf = [];
|
||
ArrayCopy(ep2_recive_buf,states_buf,10,4);
|
||
epro2_oper.sys_states = Bytes2Str(states_buf);
|
||
$("#ep2_sys_states").val(epro2_oper.sys_states);
|
||
var mes =" 状态值 "+ epro2_oper.sys_states;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
var mes ="地址 "+ addr +" 读状态失败 ";
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
return rtv;
|
||
}
|
||
|
||
|
||
|
||
|
||
async function Ep2_VerifiPwdCmd(addr,pwd)
|
||
{
|
||
var pwd_buf = Str2Bytes(pwd);
|
||
var cmd_buf = Ep2_CmdData(addr,24,pwd_buf,1,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
return rtv;
|
||
}
|
||
|
||
async function Ep2_ClkAmend()
|
||
{
|
||
var cycle = 1000;
|
||
var count = 600;
|
||
var w_len = 2;
|
||
var wr_delay = 8;
|
||
var addr = 0;
|
||
var func = 29;
|
||
var cmdbuf = [];
|
||
epro2_oper.ctr_cmd = 4;
|
||
cmdbuf[0] = w_len & 0xFF;
|
||
cmdbuf[1] = (w_len >> 8) & 0xFF;
|
||
cmdbuf[2] = cycle & 0xFF;
|
||
cmdbuf[3] = (cycle >> 8) & 0xFF;
|
||
cmdbuf[4] = count & 0xFF;
|
||
cmdbuf[5] = (count >> 8) & 0xFF;
|
||
cmdbuf[6] = EP2_CMM_RATE & 0xFF;
|
||
cmdbuf[7] = (EP2_CMM_RATE >> 8) & 0xFF;
|
||
cmdbuf[8] = wr_delay;
|
||
addr <<= 6;
|
||
addr &= 0xFFFC;
|
||
addr |= (func & 0x3F);
|
||
cmdbuf[9] = addr & 0xFF;
|
||
cmdbuf[10] = (addr >> 8) & 0xFF;
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmdbuf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,2000);
|
||
return rtv;
|
||
}
|
||
/*
|
||
* type 巡检类型 0 起爆巡检 1 在线巡检
|
||
*/
|
||
async function Ep2_Inspect(bgaddr,endaddr,state_arr)
|
||
{
|
||
var cmdbuf = [];
|
||
var cmd;
|
||
var wr_delay = 8;
|
||
var addr = 0;
|
||
var func = 30;
|
||
var w_len = 8;
|
||
var bitcount = endaddr - bgaddr;
|
||
|
||
epro2_oper.ctr_cmd = 5;
|
||
|
||
|
||
|
||
cmdbuf[0] = EP2_CMM_RATE & 0xFF;
|
||
cmdbuf[1] = (EP2_CMM_RATE >> 8) & 0xFF;
|
||
cmdbuf[2] = w_len;
|
||
cmdbuf[3] = wr_delay;
|
||
cmdbuf[4] = bitcount & 0xFF;
|
||
cmdbuf[5] = (bitcount >> 8) & 0xFF;
|
||
|
||
addr <<= 6;
|
||
addr &= 0xFFFC;
|
||
addr |= (func & 0x3F);
|
||
cmdbuf[6] = addr & 0xFF;
|
||
cmdbuf[7] = (addr >> 8) & 0xFF;
|
||
cmdbuf[8] = bgaddr&0xFF;
|
||
cmdbuf[9] = (bgaddr >> 8)&0xFF;
|
||
cmdbuf[10] = endaddr&0xFF;
|
||
cmdbuf[11] = (endaddr >> 8) &0xFF;
|
||
cmdbuf[12] = state_arr[0];
|
||
cmdbuf[13] = state_arr[1];
|
||
var rtd = {
|
||
rtv : 1,
|
||
ok_addr:[],
|
||
ng_addr:[],
|
||
};
|
||
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmdbuf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,3000);
|
||
|
||
|
||
rtd.rtv = rtv;
|
||
if(rtv != 0)
|
||
return rtd;
|
||
var ok_addr_buf = [];
|
||
var ng_addr_buf = [];
|
||
var index = 10;//返回数据获取
|
||
var inspect_addr = bgaddr;
|
||
var ok_index = 0;
|
||
var ng_index = 0;
|
||
while(inspect_addr < endaddr)
|
||
{
|
||
var data = ep2_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 Ep2_DoCmd(addr,cmd)
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(addr,8,cmd,param,0);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
return rtv;
|
||
}
|
||
async function Ep2_Charge()
|
||
{
|
||
var param = [];
|
||
param[0] = epro2_oper.chg_class;
|
||
param[1] = epro2_oper.chg_group;
|
||
var cmd_buf = Ep2_CmdData(0,26,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("执行充电成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Ep2_ChipReset()
|
||
{
|
||
var param = [];
|
||
param[0] =0x55;
|
||
param[1] = 0xAA;
|
||
param[2] = 0x66;
|
||
param[3] = 0x99;
|
||
var cmd_buf = Ep2_CmdData(0,61,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("执行充电成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
if(rtv == 0){
|
||
ShowCommMes("芯片复位执行成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
async function Ep2_EnMTPWrite(flag)
|
||
{
|
||
var param = [];
|
||
param[0] = flag;
|
||
var cmd_buf = Ep2_CmdData(0,40,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
if(flag == 1)
|
||
{
|
||
ShowCommMes("MTP写使能成功",MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("MTP写失能成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
}else{
|
||
ShowCommMes("失/使能操作失败",MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
async function Ep2_DisCharge()
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(0,27,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("执行放电成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Ep2_SaveFirInfo()
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(0,33,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("保存延时信息成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
|
||
|
||
var Ep2_Inspect_OK = [];
|
||
|
||
async function Ep2_Inspect_Task(type)
|
||
{
|
||
var bgaddr = epro2_oper.cycle_bgaddr;
|
||
var endaddr_ = 0;
|
||
var state_arr = [];
|
||
if(type == 0)
|
||
{
|
||
state_arr = HexString2ByteArray(epro2_oper.sys_states);
|
||
}
|
||
while(bgaddr < epro2_oper.cycle_endaddr)
|
||
{
|
||
endaddr_ = bgaddr+epro2_oper.cycle_group_count;
|
||
if(endaddr_ > epro2_oper.cycle_endaddr )
|
||
{
|
||
endaddr_ = epro2_oper.cycle_endaddr;
|
||
}
|
||
var rtd = await Ep2_Inspect(bgaddr,endaddr_,state_arr);
|
||
if(rtd.rtv != 0)
|
||
{
|
||
bgaddr+= epro2_oper.cycle_group_count;
|
||
continue;
|
||
}
|
||
bgaddr+= epro2_oper.cycle_group_count;
|
||
await TransSleep(1000);
|
||
var mes = "巡检成功: ";
|
||
for(var index = 0; index < rtd.ok_addr.length;index++)
|
||
{
|
||
Ep2_Inspect_OK[Ep2_Inspect_OK.length] = rtd.ok_addr[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 Ep2_Blast()
|
||
{
|
||
var param = [];
|
||
param[0] = epro2_oper.blast_delay;
|
||
var cmd_buf = Ep2_CmdData(0,25,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("执行起爆成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Ep2_CfgAck()
|
||
{
|
||
var param = [];
|
||
param[0] = epro2_oper.ack_sp;
|
||
param[1] = epro2_oper.ack_cur;
|
||
var cmd_buf = Ep2_CmdData(0,35,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("返码配置成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Ep2_RunBootLoader()
|
||
{
|
||
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;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("执行跳转成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Ep2_autoSetAddr(max_addr, addr_fac)
|
||
{
|
||
var param = [];
|
||
param[0] = max_addr & 0x0FF;
|
||
param[1] = (max_addr >> 8) & 0x0FF;
|
||
param[2] = addr_fac & 0x0FF;
|
||
param[3] = (addr_fac >> 8) & 0x0FF;
|
||
var cmd_buf = Ep2_CmdData(0,39,param,0,0,EP2_CMM_RATE)
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("设置自动分配地址因子成功 " + addr_fac + "最大地址 "+ max_addr ,MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Ep2_ReadUID()
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,41,param,9,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var read_buf = [];
|
||
ArrayCopy(ep2_recive_buf,read_buf,10,8);
|
||
//var result = UidCode_JQ2YM(read_buf);
|
||
var result = UidCode_JQ2YM_NoBackwardSequence(read_buf);
|
||
if(result.rtv)
|
||
{
|
||
epro2_oper.uid = result.uid;
|
||
var mes = "地址 "+epro2_oper.commaddr +" UID:"+ epro2_oper.uid;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
$("#ep2_uid").val(epro2_oper.uid);
|
||
return 0;
|
||
}else{
|
||
|
||
ShowCommMes("地址 "+epro2_oper.commaddr +" 读取UID失败 ",MesgType.MESG_TYPE_ERROR);
|
||
rtv = -1;
|
||
}
|
||
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Ep2_WriteUID()
|
||
{
|
||
var uid_arr = Str2Bytes(epro2_oper.uid);
|
||
//uid_arr = UidCode_YM2JQ(uid_arr);
|
||
uid_arr = UidCode_YM2JQ_2(uid_arr);
|
||
uid_arr[uid_arr.length]= Epj_CalcCrc8(uid_arr,uid_arr.length);
|
||
var rtv = await Ep2_WriteMTPCmd(epro2_oper.commaddr,0,uid_arr.length,uid_arr);
|
||
if(rtv != 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
rtv = await Ep2_WriteMTPCmd(epro2_oper.commaddr,0x80,uid_arr.length,uid_arr);
|
||
if(rtv != 0)
|
||
{
|
||
return;
|
||
}
|
||
|
||
ShowCommMes(epro2_oper.commaddr + " UID 写入成功",MesgType.MESG_TYPE_INFO);
|
||
|
||
|
||
}
|
||
|
||
async function Ep2_ReadPWD()
|
||
{
|
||
var read_buf = []
|
||
read_buf = await Ep2_ReadMTPCmd(epro2_oper.commaddr,0x10,5);
|
||
if(read_buf.length < 1)
|
||
{
|
||
return;
|
||
}
|
||
if(Epj_CalcCrc8(read_buf,4) != read_buf[4])
|
||
{
|
||
ShowCommMes("0x10 PWD存储错误",MesgType.MESG_TYPE_ERROR);
|
||
var mes = Bytes2Str(read_buf);
|
||
console.log("######## " + mes);
|
||
|
||
}else{
|
||
epro2_oper.pwd = String.fromCharCode.apply(null,read_buf.slice(0,4));
|
||
var mes = "地址 "+epro2_oper.commaddr +" 密码 :"+ epro2_oper.pwd;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
$("#ep2_pwd").val(epro2_oper.pwd);
|
||
}
|
||
}
|
||
|
||
async function Ep2_WritePWD()
|
||
{
|
||
|
||
//ArrayCopy(uid_arr,buf,8,8);
|
||
var pwd_arr = Str2Bytes(epro2_oper.pwd);
|
||
pwd_arr[pwd_arr.length]= Epj_CalcCrc8(pwd_arr,pwd_arr.length);
|
||
rtv = await Ep2_WriteMTPCmd(epro2_oper.commaddr,0x10,pwd_arr.length,pwd_arr);
|
||
if(rtv != 0)
|
||
{
|
||
ShowCommMes(epro2_oper.commaddr + " 密码写入失败 ",MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
|
||
rtv = await Ep2_WriteMTPCmd(epro2_oper.commaddr,0x90,pwd_arr.length,pwd_arr);
|
||
if(rtv != 0)
|
||
{
|
||
ShowCommMes(epro2_oper.commaddr + " 密码写入失败 ",MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
|
||
ShowCommMes(epro2_oper.commaddr + " 密码写入成功 ",MesgType.MESG_TYPE_INFO);
|
||
|
||
}
|
||
|
||
async function Ep2_VerfyPWD()
|
||
{
|
||
|
||
//ArrayCopy(uid_arr,buf,8,8);
|
||
var param = Str2Bytes(epro2_oper.pwd);
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,24,param,1,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("执行跳转成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
async function Ep2_UIDFeaOnline()
|
||
{
|
||
var uid_arr = Str2Bytes(epro2_oper.uid);
|
||
var param = PrapareUIDFeatrue(uid_arr);
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,17,0,param,5);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var states_buf = [];
|
||
ArrayCopy(ep2_recive_buf,states_buf,8,2);
|
||
var delay_ = (ep2_recive_buf[11] & 0xFF) << 8;
|
||
delay_ += (ep2_recive_buf[10] & 0xFF)
|
||
if(delay_ < 5 || delay_ > 30005)
|
||
delay_ = "未设置";
|
||
else
|
||
{
|
||
delay_ -= 5;
|
||
epro2_oper.delayfire = delay_;
|
||
$("#ep2_delayfire").val(delay_);
|
||
}
|
||
|
||
|
||
var mes = "地址 "+ epro2_oper.commaddr+" 状态值 "+ Bytes2Str(states_buf)+" 延时:" + delay_;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return rtv;
|
||
|
||
}
|
||
async function Ep2_WritMTPTask()
|
||
{
|
||
var regexp = /(,|;|0x|0X)/g;
|
||
var w_data = epro2_oper.mtp_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);
|
||
await Ep2_WriteMTPCmd(epro2_oper.commaddr,epro2_oper.mtp_w_addr,w_data.length,w_data);
|
||
|
||
}
|
||
async function Ep2_SearchTask()
|
||
{
|
||
var param = [];
|
||
param[0] = epro2_oper.auset_addr_fac & 0x0FF;
|
||
param[1] = (epro2_oper.auset_addr_fac >> 8) & 0x0FF;
|
||
var cmd_buf = Ep2_CmdData(0,8,30,param,0)
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
ShowCommMes("设置自动分配地址因子成功 " + epro2_oper.auset_addr_fac ,MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Ep2_ReadDelay()
|
||
{
|
||
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,34,param,3,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var read_buf = [];
|
||
ArrayCopy(ep2_recive_buf,read_buf,10,2);
|
||
var delay = read_buf[1];
|
||
delay <<= 8;
|
||
delay += read_buf[0];
|
||
var mes ;
|
||
if(delay < 5)
|
||
{
|
||
mes = "地址 "+epro2_oper.commaddr +" 延时未设置";
|
||
delay = 0;
|
||
}else{
|
||
delay -= 5;
|
||
mes = "地址 "+epro2_oper.commaddr +" 延时 "+ delay;
|
||
}
|
||
epro2_oper.delayfire = delay;
|
||
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
$("#ep2_delayfire").val(epro2_oper.delayfire);
|
||
return;
|
||
}else{
|
||
ShowCommMes("地址 "+epro2_oper.commaddr+" 读延时失败",MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
async function Ep2_UpdateAddr(newaddr)
|
||
{
|
||
var param = [];
|
||
param[0] = newaddr & 0xFF;
|
||
param[1] = (newaddr >> 8) & 0xFF;
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,36,param,0,0,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 更新成功",MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 更新成功",MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
async function Ep2_WriteDelay()
|
||
{
|
||
var param = [];
|
||
epro2_oper.delayfire += 5;
|
||
param[0] = epro2_oper.delayfire & 0xFF;
|
||
param[1] = (epro2_oper.delayfire >> 8) & 0xFF;
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,23,param,1,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 延时设置成功",MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 延时设置失败",MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
async function Ep2_ReadAmend()
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,37,param,5,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0)
|
||
{
|
||
var data = [];
|
||
ArrayCopy(ep2_recive_buf,data,10,4);
|
||
var amend = (data[3]<<24) | (data[2] << 16) | (data[1] << 8) | data[0] ;
|
||
mes = "地址:"+ epro2_oper.commaddr +" 校准值 "+amend;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
$("#ep2_sys_amend").val(amend);
|
||
}
|
||
}
|
||
async function Ep2_ReadRuncfg()
|
||
{
|
||
var param = [];
|
||
var cmd_buf = Ep2_CmdData(epro2_oper.commaddr,38,param,6,2,EP2_CMM_RATE);
|
||
ep2_excuedcmd = 0;
|
||
Ep2_SendCmd(cmd_buf);
|
||
var rtv = await Ep2_WaitCmdExcu(epro2_oper.cmd,1000);
|
||
if(rtv == 0){
|
||
var read_buf = []
|
||
ArrayCopy(ep2_recive_buf,read_buf,10,3);
|
||
var cfg_str = Bytes2Str(read_buf);
|
||
read_buf = [];
|
||
ArrayCopy(ep2_recive_buf,read_buf,13,2);
|
||
var ver_str = Bytes2Str(read_buf);
|
||
$("#ep2_run_cfg_value").val(cfg_str);
|
||
$("#ep2_firmware").val(ver_str);
|
||
var mes = "地址:"+ epro2_oper.commaddr +" 配置值为 "+ cfg_str + " 版本号 "+ver_str;
|
||
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
|
||
epro2_oper.run_cfg_value = cfg_str;
|
||
|
||
}else{
|
||
|
||
ShowCommMes("读配置信息失败 ",MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
|
||
}
|
||
|
||
async function Ep2_WriteRuncfg()
|
||
{
|
||
var regexp = /(,|;|0x|0X)/g;
|
||
var w_data = epro2_oper.run_cfg_value.replace(regexp," ");
|
||
var w_data_array = w_data.split(" ");
|
||
var w_data_temp = '' ;
|
||
for(var index = 0; (index < w_data_array.length) && (index < 3);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);
|
||
w_data[w_data.length]= Epj_CalcCrc8(w_data,w_data.length);
|
||
var rtv = await Ep2_WriteMTPCmd(epro2_oper.commaddr,0x1C,w_data.length,w_data);
|
||
if(rtv != 0)
|
||
{
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 配置写入失败",MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
|
||
rtv = await Ep2_WriteMTPCmd(epro2_oper.commaddr,0x9C,w_data.length,w_data);
|
||
if(rtv != 0)
|
||
{
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 配置写入失败",MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
ShowCommMes("地址 "+ epro2_oper.commaddr+" 配置写入成功",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
async function Ep2_ExcueOperCmd()
|
||
{
|
||
|
||
|
||
var once_excue = 0;
|
||
if(epro2_oper.cycle_test > 0)
|
||
{
|
||
epro2_oper.commaddr = epro2_oper.cycle_bgaddr;
|
||
epro2_oper.uid = epro2_oper.cycle_bguid;
|
||
epro2_oper.delayfire = epro2_oper.cycle_bgdelay;
|
||
epro2_oper.cycle_addr = epro2_oper.cycle_bgaddr;
|
||
}else{
|
||
once_excue = 1;
|
||
}
|
||
while((epro2_oper.cycle_test > 0 && epro2_oper.cycle_runcount > 0) || (once_excue > 0))
|
||
{
|
||
epro2_oper.cycle_runcount--;
|
||
once_excue = 0;
|
||
switch(epro2_oper.cmd)
|
||
{
|
||
case 1 : await Ep2_ChipReset();break;
|
||
case 2 : await Ep2_DisCharge();break;
|
||
case 3 : await Ep2_SaveFirInfo();break;
|
||
case 4 : await Ep2_CheckSelfCmd(0);break;
|
||
case 5 : await Ep2_CheckSelfCmd(0);break;
|
||
case 6 : await Ep2_CheckSelfCmd(0);break;
|
||
case 7 : await Ep2_ClkAmend();break;
|
||
case 9: await Ep2_Inspect_Task(0);break;
|
||
case 11 : await Ep2_ReadCapChgT();break;
|
||
case 13: await Ep2_HeartBeat_SW();break;
|
||
case 15: await Ep2_BusSwitch(1); break;
|
||
case 16: await Ep2_BusSwitch(0); break;
|
||
case 17: await Ep2_Charge(); break;
|
||
case 18: await Ep2_Blast();break;
|
||
case 19: await Ep2_ReadUID();break;
|
||
case 20: await Ep2_WriteUID();break;
|
||
case 21: await Ep2_ReadPWD();break;
|
||
case 22: await Ep2_WritePWD();break;
|
||
case 23: await Ep2_VerfyPWD();break;
|
||
case 24: await Ep2_SetAddrByUID();break;
|
||
case 25: await Ep2_FastCfgCmd(epro2_oper.uid,epro2_oper.commaddr,epro2_oper.delayfire); break;
|
||
case 26: await Ep2_ReadDelay();break;
|
||
case 27: await Ep2_WriteDelay();break;
|
||
case 28: await Ep2_ReadMTPCmd(epro2_oper.commaddr,epro2_oper.mtp_r_bgaddr,epro2_oper.mtp_r_len);break;
|
||
case 29: await Ep2_EnMTPWrite(1);break;
|
||
case 30: await Ep2_EnMTPWrite(0);break;
|
||
case 31: await Ep2_WritMTPTask();break;
|
||
case 32: await Ep2_ReadSysStatesCmd(epro2_oper.commaddr);break;
|
||
case 33: await Ep2_ReadAmend();break;
|
||
case 35: await Ep2_autoSetAddr(epro2_oper.cycle_endaddr,epro2_oper.auset_addr_fac);break;
|
||
case 36: await Ep2_ReadRuncfg();break;
|
||
case 37: await Ep2_WriteRuncfg();break;
|
||
case 38: await Ep2_CfgAck();break;
|
||
//case 37: await fac_bind();break;
|
||
// case 5 : await Ep2_CheckSelfCmd(0);break;
|
||
// case 6 : await Ep2_CheckSelfCmd(0);break;
|
||
// case 7 : await Ep2_ClkAmend_Task();break;
|
||
// case 8 :
|
||
// case 9 : await Ep2_Inspect_Task(1);break;
|
||
// case 10: await Ep2_Sleep();break;
|
||
// case 11: await Ep2_AWake();break;
|
||
// case 12:
|
||
// case 13: await Ep2_RunBootLoader();break;
|
||
// case 14:
|
||
|
||
|
||
// case 19: await Ep2_VerifiPwdCmd(epro2_oper.commaddr,epro2_oper.pwd);break;
|
||
// case 20: await Ep2_UIDFeaOnline(); break;
|
||
//
|
||
//
|
||
// case 23:
|
||
// case 24:
|
||
// case 25: await Ep2_ReadFirmwareCmd(epro2_oper.commaddr);break;
|
||
// case 26: await Ep2_SearchTask(); break;
|
||
// case 27:
|
||
// case 28: await Ep2_ChipReset();break;
|
||
// case 29:
|
||
// case 30:
|
||
// case 31:
|
||
// case 32:
|
||
// case 33:
|
||
// case 34: await Ep2_HeartBeat_SW();break;
|
||
|
||
default:return;
|
||
|
||
}
|
||
if(epro2_oper.cycle_test > 0)
|
||
{
|
||
if(epro2_oper.cycle_rundelay > 0)
|
||
{
|
||
await TransSleep(epro2_oper.cycle_rundelay);
|
||
}
|
||
Ep2_CycleParamUpdate();
|
||
|
||
}
|
||
}
|
||
|
||
if(epro2_oper.cycle_test > 0)
|
||
{
|
||
|
||
ShowCommMes("循环测试完成",MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
function Ep2_CycleParamUpdate()
|
||
{
|
||
if(epro2_oper.cycle_addr < epro2_oper.cycle_endaddr)
|
||
{
|
||
epro2_oper.cycle_addr++;
|
||
}else{
|
||
epro2_oper.cycle_addr = epro2_oper.cycle_bgaddr;
|
||
}
|
||
epro2_oper.commaddr = epro2_oper.cycle_addr;
|
||
epro2_oper.delayfire = (epro2_oper.commaddr - epro2_oper.cycle_bgaddr)*epro2_oper.cycle_stepdelay + epro2_oper.cycle_bgdelay;
|
||
var flow_str = epro2_oper.cycle_bguid.slice(12,16);
|
||
var uidhead = epro2_oper.cycle_bguid.slice(0,12);
|
||
var flow_num = parseInt(flow_str,10);
|
||
flow_num = flow_num+epro2_oper.commaddr - epro2_oper.cycle_bgaddr;
|
||
epro2_oper.uid = uidhead + IntFormat(4,flow_num);
|
||
}
|