1264 lines
34 KiB
JavaScript
1264 lines
34 KiB
JavaScript
var eproj_oper = {
|
||
cmd: 0,
|
||
comm_port: "",
|
||
comm_baud: "",
|
||
comm_parity: -1,
|
||
comm_stopbit: -1,
|
||
uid: "581900230A00801",
|
||
pwd: "85 AC AD AA",
|
||
delayfire: -1,
|
||
check_voltage: 25,
|
||
h_voltage: 85,
|
||
m_voltage: 75,
|
||
commaddr: 0,
|
||
boom_endaddr: 420,
|
||
boom_bgaddr: 21,
|
||
uidscan_count: 400,
|
||
uidscan_netbeg: 21,
|
||
amend_netbeg:21,
|
||
amend_count:400,
|
||
otp_r_bgaddr: 0, //0x3C00,
|
||
otp_r_len: 8,
|
||
otp_w_addr: 0, //0x3C00,
|
||
otp_w_data: "",
|
||
sys_states: "",
|
||
firmware: "",
|
||
inspecttype: 16,
|
||
run_cfg_value: "",
|
||
cycle_bgaddr: 0,
|
||
cycle_endaddr: 500,
|
||
cycle_group_count: 100,
|
||
cycle_bgdelay: 0,
|
||
cycle_stepdelay: 50,
|
||
cycle_bguid: "581900230A00801",
|
||
cycle_rundelay: 10,
|
||
cycle_runcount: 1,
|
||
cycle_test: 0,
|
||
};
|
||
var epj_qthandle = null;
|
||
var epj_excuedcmd;
|
||
var epj_excued_rtv;
|
||
var epj_cmd_excue_busy = 0
|
||
var epj_recive_buf = [];
|
||
var epj_bus_heartbeat = 1;
|
||
var epj_log_flag;
|
||
var epj_rec_plugin = null;
|
||
var epj_dac_voltage = [4.8, 5.3, 5.7, 6.1, 6.6, 7.0, 7.4, 7.9, 8.3, 8.8, 9.2, 9.6, 10.1, 10.5, 11.0, 11.4, 11.8, 12.3,
|
||
12.7, 13.1, 13.6, 14.0, 14.5, 14.9, 15.3, 15.8, 16.2, 16.6, 17.1, 17.5, 18.0, 18.4
|
||
];
|
||
var epj_wotp_cmd = 23;
|
||
|
||
function Epj_Start_Comm() {
|
||
console.log("Epj_Start_Comm ");
|
||
if (typeof(epj_qthandle) != "undefined" && epj_qthandle != null) {
|
||
epj_qthandle.SearchCommport();
|
||
console.log("SearchCommport ");
|
||
}
|
||
}
|
||
|
||
function Epj_Open_CommPort(main_serial) {
|
||
eproj_oper.comm_port = main_serial.comm_port;
|
||
eproj_oper.comm_baud = main_serial.comm_baud;
|
||
eproj_oper.comm_parity = main_serial.comm_parity;
|
||
eproj_oper.comm_stopbit = main_serial.comm_stopbit;
|
||
|
||
Main_Close_CommPort_Select();
|
||
var json_str = JSON.stringify(eproj_oper);
|
||
console.log(json_str);
|
||
if (typeof(epj_qthandle) != "undefined" && epj_qthandle != null) {
|
||
epj_qthandle.OpenCommPort(json_str);
|
||
}
|
||
}
|
||
async function epj_cmd(cmd) {
|
||
if (epj_cmd_excue_busy > 0) {
|
||
ShowCommMes("正在执行命令", MesgType.MESG_TYPE_INFO);
|
||
return;
|
||
}
|
||
epj_cmd_excue_busy = 1;
|
||
eproj_oper.cmd = cmd;
|
||
eproj_oper.uid = $("#epj_uid").val();
|
||
eproj_oper.pwd = $("#epj_pwd").val();
|
||
eproj_oper.delayfire = parseInt($("#epj_delayfire").val(), 10);
|
||
eproj_oper.commaddr = parseInt($("#epj_commaddr").val(), 10);
|
||
eproj_oper.otp_r_bgaddr = parseInt($("#epj_otp_r_bgaddr").val(), 10);
|
||
eproj_oper.otp_r_len = parseInt($("#epj_otp_r_len").val(), 10);
|
||
eproj_oper.otp_w_addr = parseInt($("#epj_otp_w_addr").val(), 10);
|
||
eproj_oper.otp_w_data = $("#epj_otp_w_data").val();
|
||
eproj_oper.auset_addr_fac = parseInt($("#epj_auset_addr_fac").val(), 10);
|
||
eproj_oper.run_cfg_value = $("#epj_run_cfg_value").val();
|
||
eproj_oper.cycle_bgaddr = parseInt($("#epj_cycle_bgaddr").val(), 10);
|
||
eproj_oper.cycle_endaddr = parseInt($("#epj_cycle_endaddr").val(), 10);
|
||
eproj_oper.cycle_group_count = parseInt($("#epj_cycle_group_count").val(), 10);
|
||
eproj_oper.cycle_bgdelay = parseInt($("#epj_cycle_bgdelay").val(), 10);
|
||
eproj_oper.cycle_stepdelay = parseInt($("#epj_cycle_stepdelay").val(), 10);
|
||
eproj_oper.cycle_bguid = $("#epj_cycle_bguid").val();
|
||
eproj_oper.cycle_rundelay = parseInt($("#epj_cycle_rundelay").val(), 10);
|
||
eproj_oper.cycle_runcount = parseInt($("#epj_cycle_runcount").val(), 10);
|
||
eproj_oper.h_voltage = parseInt($("#epj_h_voltage").val(), 10);
|
||
eproj_oper.m_voltage = parseInt($("#epj_m_voltage").val(), 10);
|
||
eproj_oper.uidscan_netbeg = parseInt($("#epj_uidscan_netbeg").val(), 10);
|
||
eproj_oper.uidscan_count = parseInt($("#epj_uidscan_count").val(), 10);
|
||
eproj_oper.boom_bgaddr = parseInt($("#epj_boom_bgaddr").val(), 10);
|
||
eproj_oper.boom_endaddr = parseInt($("#epj_boom_endaddr").val(), 10);
|
||
eproj_oper.check_voltage = parseInt($("#epj_check_voltage").val(), 10);
|
||
eproj_oper.amend_count = parseInt($("#epj_amend_count").val(), 10);
|
||
eproj_oper.amend_netbeg = parseInt($("#epj_amend_netbeg").val(), 10);
|
||
//eproj_oper.inspecttype = parseInt($("#epj_inspecttype").val(), 16);
|
||
await Epj_ExcueOperCmd();
|
||
epj_cmd_excue_busy = 0;
|
||
|
||
}
|
||
|
||
function EPj_ShowDef() {
|
||
$("#epj_uid").val(eproj_oper.uid);
|
||
$("#epj_pwd").val(eproj_oper.pwd);
|
||
if (eproj_oper.delayfire >= 0 && eproj_oper.delayfire < 30000) {
|
||
$("#epj_delayfire").val(eproj_oper.delayfire);
|
||
} else {
|
||
$("#epj_delayfire").val('');
|
||
}
|
||
|
||
$("#epj_commaddr").val(eproj_oper.commaddr);
|
||
$("#epj_otp_r_bgaddr").val(eproj_oper.otp_r_bgaddr);
|
||
$("#epj_otp_r_len").val(eproj_oper.otp_r_len);
|
||
$("#epj_otp_w_addr").val(eproj_oper.otp_w_addr);
|
||
$("#epj_otp_w_data").val(eproj_oper.otp_w_data);
|
||
$("#epj_auset_addr_fac").val(eproj_oper.auset_addr_fac);
|
||
$("#epj_run_cfg_value").val(eproj_oper.run_cfg_value);
|
||
$("#epj_cycle_bgaddr").val(eproj_oper.cycle_bgaddr);
|
||
$("#epj_cycle_endaddr").val(eproj_oper.cycle_endaddr);
|
||
|
||
$("#epj_cycle_group_count").val(eproj_oper.cycle_group_count);
|
||
$("#epj_cycle_bgdelay").val(eproj_oper.cycle_bgdelay);
|
||
$("#epj_cycle_stepdelay").val(eproj_oper.cycle_stepdelay);
|
||
$("#epj_cycle_bguid").val(eproj_oper.cycle_bguid);
|
||
$("#epj_cycle_rundelay").val(eproj_oper.cycle_rundelay);
|
||
$("#epj_cycle_runcount").val(eproj_oper.cycle_runcount);
|
||
|
||
$("#epj_sys_amend").val(eproj_oper.amend_v);
|
||
$("#epj_sys_states").val(eproj_oper.sys_states);
|
||
$("#epj_firmware").val(eproj_oper.firmware);
|
||
|
||
$("#epj_h_voltage").val(eproj_oper.h_voltage);
|
||
$("#epj_m_voltage").val(eproj_oper.m_voltage);
|
||
|
||
$("#epj_uidscan_netbeg").val(eproj_oper.uidscan_netbeg);
|
||
$("#epj_uidscan_count").val(eproj_oper.uidscan_count);
|
||
|
||
$("#epj_boom_bgaddr").val(eproj_oper.boom_bgaddr);
|
||
$("#epj_boom_endaddr").val(eproj_oper.boom_endaddr);
|
||
|
||
$("#epj_check_voltage").val(eproj_oper.check_voltage);
|
||
$("#epj_amend_count").val(eproj_oper.amend_count);
|
||
$("#epj_amend_netbeg").val(eproj_oper.amend_netbeg);
|
||
//$("#epj_inspecttype").val(Bytes2Str(eproj_oper.inspecttype));
|
||
}
|
||
|
||
function Epj_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 ? ' 启动' : ' 关闭'), data.othis);
|
||
epj_log_flag = 0;
|
||
if (this.checked)
|
||
epj_log_flag = 1;
|
||
}
|
||
});
|
||
form.on('checkbox', function(data) {
|
||
var value = data.value;
|
||
if (value == "epj_cycle_test") {
|
||
layer.tips('循环测试 ' + (this.checked ? '启动' : '关闭'), data.this)
|
||
}
|
||
|
||
});
|
||
$("#epj_check_vol_btn").mouseover(function() {
|
||
var dac = parseInt($("#epj_check_voltage").val());
|
||
if (dac > 31) {
|
||
dac = 31;
|
||
} else if (dac >= 0 && dac <= 31) {
|
||
dac = dac;
|
||
} else {
|
||
dac = 0;
|
||
}
|
||
$("#epj_check_voltage").val(dac);
|
||
layer.tips('检测电压 ' + epj_dac_voltage[dac], this);
|
||
});
|
||
var dropdown = layui.dropdown;
|
||
dropdown.render({
|
||
elem: '#epj_inspecttype',
|
||
data: [
|
||
{ title: '充满',id: 0x80 },
|
||
{title: '对码' ,id: 0x40},
|
||
{title: '起爆使能',id: 0x20 },
|
||
{ title: '校准' ,id: 0x02},
|
||
{ title: '在线' ,id: 0x10},
|
||
],
|
||
click: function(obj){
|
||
// layer.tips('点击了:'+ obj.title, this.elem, {tips: [1, '#5FB878']})
|
||
$('#epj_inspecttype').text(obj.title);
|
||
eproj_oper.inspecttype = obj.id;
|
||
}
|
||
});
|
||
|
||
|
||
if (typeof(qchannel) != "undefined" && qchannel != null) {
|
||
if(epj_qthandle != null && typeof(epj_qthandle) != "undefined")
|
||
{
|
||
console.log("Ep1_Inited OK ---");
|
||
}else{
|
||
epj_qthandle = qchannel.objects.epj_qthandle;
|
||
if ((typeof(epj_qthandle) != "undefined") && (epj_qthandle != null)) {
|
||
console.log("Epj_Init OK ---");
|
||
epj_qthandle.ShowCommMes.connect(function(mesg, type) {
|
||
ShowCommMes(mesg, type);
|
||
|
||
});
|
||
epj_qthandle.ShowCommport.connect(function(jsoninfo) {
|
||
Main_ShowCommport(jsoninfo);
|
||
});
|
||
epj_qthandle.EPJComm_Recive.connect(function(jsoninfo) {
|
||
EPJComm_Recive(jsoninfo);
|
||
});
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
EPj_ShowDef();
|
||
PrapareUIDFeatrue(Str2Bytes(eproj_oper.uid));
|
||
//console.log(Int2HexStr(65536,"0x",0));
|
||
}
|
||
|
||
function Epj_HeartBeat() {
|
||
|
||
var bus_volate = epj_recive_buf[5] + (epj_recive_buf[6] << 8);
|
||
bus_volate = bus_volate / 10;
|
||
bus_volate = bus_volate.toFixed(1);
|
||
|
||
|
||
var bus_current = epj_recive_buf[7] + (epj_recive_buf[8] << 8) + (epj_recive_buf[9] << 16) + (epj_recive_buf[10] <<
|
||
24);
|
||
bus_current = bus_current / 1000;
|
||
bus_current = bus_current.toFixed(2);
|
||
|
||
var mbus_volate = epj_recive_buf[11] + (epj_recive_buf[12] << 8);
|
||
mbus_volate = mbus_volate / 10;
|
||
mbus_volate = mbus_volate.toFixed(1);
|
||
var mes = "总线电压 " + bus_volate + "V 中电平电压 " + mbus_volate + "V 总线电流 " + bus_current + "mA"
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
|
||
function EPJComm_Recive(jsoninfo) {
|
||
var frame = JSON.parse(jsoninfo);
|
||
epj_recive_buf = frame;
|
||
epj_excuedcmd = frame[4];
|
||
if(epj_rec_plugin != null)
|
||
{
|
||
eval(plugin_func+"(epj_recive_buf);");
|
||
}
|
||
var frame_str = "Rx: " + Bytes2Str(frame);
|
||
if (epj_excuedcmd == 0xFE) {
|
||
ShowCommMes(frame_str, MesgType.MESG_TYPE_INFO);
|
||
Epj_HeartBeat();
|
||
} else {
|
||
epj_excued_rtv = frame[5];
|
||
ShowCommMes(frame_str, MesgType.MESG_TYPE_INFO, ep1_log_flag);
|
||
BTInfoCount(1);
|
||
if (epj_excued_rtv != 0) {
|
||
BTErrorCount(1);
|
||
}
|
||
}
|
||
}
|
||
|
||
var Epj_Cmd_Head = "ESJ";
|
||
|
||
function Epj_SendCmd(cmd_buf) {
|
||
|
||
var buf = Str2Bytes(Epj_Cmd_Head);
|
||
buf[3] = 0; //数据长度
|
||
buf[4] = eproj_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(epj_qthandle) != "undefined" && epj_qthandle != null) {
|
||
epj_qthandle.Epj_SendData(json_str);
|
||
}
|
||
var mes = "Tx:" + Bytes2Str(buf);
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
//同步非阻塞延时
|
||
async function Epj_WaitCmdExcu(cmd, time_out) {
|
||
if (time_out == 0)
|
||
return 0;
|
||
time_out = parseInt((time_out + 19) / 20);
|
||
epj_excued_rtv = 0;
|
||
while ((time_out > 0) && (epj_excued_rtv < 1)) {
|
||
if (epj_excuedcmd == cmd) {
|
||
break;
|
||
}
|
||
await TransSleep(20);
|
||
time_out--;
|
||
}
|
||
if (epj_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 Epj_WriteOTPCmd(regaddr, w_len, param) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = regaddr & 0xFF;
|
||
cmd_buf[1] = w_len;
|
||
for (var index = 0; index < param.length; index++) {
|
||
cmd_buf[2 + index] = param[index];
|
||
}
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, w_len*125+1000);
|
||
return rtv;
|
||
|
||
}
|
||
async function Epj_ReadOTPCmd(comaddr, regaddr, r_len) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = comaddr & 0xFF;
|
||
cmd_buf[1] = (comaddr >> 8) & 0xFF;
|
||
cmd_buf[2] = regaddr & 0xFF;
|
||
cmd_buf[3] = r_len;
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
var read_buf = [];
|
||
if (rtv == 0) {
|
||
len = epj_recive_buf[3] - 6;
|
||
if (len != r_len)
|
||
return read_buf;
|
||
read_buf = ArrayCopy(epj_recive_buf, read_buf, 6, len);
|
||
|
||
//read_buf = [0x35, 0x38, 0x31, 0x39, 0x30, 0x30, 0x32, 0x33];
|
||
}
|
||
return read_buf;
|
||
}
|
||
|
||
async function Epj_PowerSet(power_sw) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = power_sw;
|
||
cmd_buf[1] = eproj_oper.h_voltage & 0xFF;
|
||
cmd_buf[2] = (eproj_oper.h_voltage >> 8) & 0xFF;
|
||
cmd_buf[3] = eproj_oper.m_voltage & 0xFF;
|
||
cmd_buf[4] = (eproj_oper.m_voltage >> 8) & 0xFF;
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 5000);
|
||
var read_buf = [];
|
||
if (rtv == 0) {
|
||
var mes_ = "设置高电平电压 " + eproj_oper.h_voltage + " 中电平电压 " + eproj_oper.m_voltage;
|
||
ShowCommMes(mes_, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return read_buf;
|
||
}
|
||
|
||
|
||
async function Epj_SwitchHeartBeat() {
|
||
var mes_ = ""
|
||
var param = [0];
|
||
if (epj_bus_heartbeat == 0) {
|
||
param[0] = 1;
|
||
epj_bus_heartbeat = 1;
|
||
mes_ = "开心跳";
|
||
} else {
|
||
|
||
param[0] = 0;
|
||
epj_bus_heartbeat = 0;
|
||
mes_ = "关心跳";
|
||
}
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(param);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes(mes_, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Epj_ReadChipCod(addr) {
|
||
var param = [];
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = addr & 0xFF;
|
||
cmd_buf[1] = (addr >> 8) & 0xFF;
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
|
||
ArrayCopy(epj_recive_buf, param, 7, 2);
|
||
eproj_oper.firmware = Bytes2Str(param);
|
||
var mes = "地址 " + addr + " 芯片代码 " + eproj_oper.firmware;
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
$("#epj_firmware").val(eproj_oper.firmware);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Epj_ReadSysStatesCmd(addr) {
|
||
var param = [];
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = addr & 0xFF;
|
||
cmd_buf[1] = (addr >> 8) & 0xFF;
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ArrayCopy(epj_recive_buf, param, 6, 1);
|
||
eproj_oper.sys_states = Bytes2Str(param);
|
||
var mes = "地址 " + addr + " 状态码 " + eproj_oper.sys_states;
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
$("#epj_sys_states").val(eproj_oper.sys_states);
|
||
}
|
||
return rtv;
|
||
}
|
||
|
||
|
||
|
||
async function Epj_ClkAmend(delaytime) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = delaytime & 0xFF;
|
||
cmd_buf[1] = (delaytime >> 8) & 0xFF;
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
return rtv;
|
||
}
|
||
/*
|
||
* type 巡检类型 0 起爆巡检 1 在线巡检
|
||
*/
|
||
function Epj_InspectAnsy(databuf) {
|
||
var ok_addr_buf = [];
|
||
var index = 0;
|
||
var ok_index = 0;
|
||
while (index < databuf.length) {
|
||
var data = databuf[index]; //?待定
|
||
index++;
|
||
for (var i = 0; i < 8; i++) {
|
||
if ((data & 0x80) > 0) {
|
||
ok_addr_buf[ok_index++] = 1;
|
||
} else {
|
||
ok_addr_buf[ok_index++] = 0;
|
||
}
|
||
data <<= 1;
|
||
}
|
||
}
|
||
return ok_addr_buf;
|
||
}
|
||
|
||
async function Epj_Charge() {
|
||
var cmd_buf = [];
|
||
var bgaddr = eproj_oper.cycle_bgaddr;
|
||
var endaddr = eproj_oper.cycle_endaddr;
|
||
var group = eproj_oper.cycle_group_count;
|
||
while (endaddr > bgaddr) {
|
||
endaddr -= group;
|
||
if(endaddr < 0)
|
||
endaddr = 0;
|
||
cmd_buf[0] = (endaddr & 0x0FF);
|
||
cmd_buf[1] = (endaddr >> 8 & 0x0FF);
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 2000);
|
||
if (rtv != 0) {
|
||
return;
|
||
}
|
||
await TransSleep(eproj_oper.cycle_rundelay);
|
||
}
|
||
ShowCommMes("执行充电成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
async function Epj_EnOTPWrite() {
|
||
var cmd_buf = [];
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes("OTP写使能成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Epj_DisCharge() {
|
||
var cmd_buf = [];
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes("执行放电成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Epj_EnBoom() {
|
||
var cmd_buf = [];
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes("执行起爆使能成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
}
|
||
async function Epj_Reset() {
|
||
var cmd_buf = [];
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes("芯片复位执行成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Epj_Boom() {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = 1;
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1500);
|
||
if (rtv == 0) {
|
||
ShowCommMes("起爆成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Epj_CheckSelfCmd(voltage) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = voltage;
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1500);
|
||
if (rtv == 0) {
|
||
ShowCommMes("检测DAC设置成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
|
||
async function Epj_BoomInspect(bgaddr, endaddr) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = 2;
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1500);
|
||
if (rtv != 0) {
|
||
ShowCommMes("巡检起爆失败", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
var databuf = [];
|
||
ArrayCopy(epj_recive_buf, databuf, 6, databuf.length - 6);
|
||
var ok_buf = Epj_InspectAnsy(databuf);
|
||
var ok_mes = "";
|
||
var ng_mes = "";
|
||
endaddr -= 2;
|
||
bgaddr -= 1;
|
||
for (var i = bgaddr; i < endaddr; i++) {
|
||
if (ok_buf[i] > 0) {
|
||
ok_mes += (i+2) + " ";
|
||
} else {
|
||
ng_mes += (i+2) + " ";
|
||
}
|
||
}
|
||
if (ok_mes.length > 1) {
|
||
ok_mes = "起爆成功: " + ok_mes;
|
||
ShowCommMes(ok_mes, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
if (ng_mes.length > 1) {
|
||
ng_mes = "起爆失败: " + ng_mes;
|
||
ShowCommMes(ng_mes, MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
|
||
}
|
||
async function Epj_Inspect_Task(type,netbgn,count) {
|
||
|
||
var cmd_buf=[];
|
||
var maxcount = count+netbgn+1;
|
||
cmd_buf[0] = type;
|
||
cmd_buf[1] = (maxcount & 0x0FF);
|
||
cmd_buf[2] = ((maxcount >> 8) & 0x0FF);
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1500);
|
||
if(rtv != 0)
|
||
{
|
||
ShowCommMes("巡检命令执行失败", MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
var databuf = [];
|
||
ArrayCopy(epj_recive_buf, databuf, 6, databuf.length - 6);
|
||
var ok_buf = Epj_InspectAnsy(databuf);
|
||
var ok_mes = "";
|
||
var ng_mes = "";
|
||
for (var i = netbgn; i < ok_buf.length; i++) {
|
||
if (ok_buf[i] > 0) {
|
||
ok_mes += i + " ";
|
||
} else {
|
||
ng_mes += i + " ";
|
||
}
|
||
}
|
||
if (ok_mes.length > 1) {
|
||
ok_mes = "巡检成功: " + ok_mes;
|
||
ShowCommMes(ok_mes, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
if (ng_mes.length > 1) {
|
||
ng_mes = "巡检失败: " + ng_mes;
|
||
ShowCommMes(ng_mes, MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
|
||
|
||
async function Epj_ReadUID() {
|
||
var cmd_buf = await Epj_ReadOTPCmd(eproj_oper.commaddr, 3, 8);
|
||
if (cmd_buf.length != 8) {
|
||
ShowCommMes("读UID失败", MesgType.MESG_TYPE_ERROR);
|
||
} else {
|
||
|
||
var rtv = UidCode_JQ2YM(cmd_buf);
|
||
if (!rtv.rtv) {
|
||
ShowCommMes("读UID失败", MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
eproj_oper.uid = rtv.uid;
|
||
var mes = "地址 " + eproj_oper.commaddr + " UID:" + eproj_oper.uid;
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
$("#epj_uid").val(eproj_oper.uid);
|
||
}
|
||
}
|
||
async function Epj_WriteUID() {
|
||
var cmd_buf = Str2Bytes(eproj_oper.uid);
|
||
cmd_buf = UidCode_YM2JQ(cmd_buf);
|
||
//var rtv = UidCode_JQ2YM(cmd_buf);
|
||
eproj_oper.cmd = epj_wotp_cmd;
|
||
var rtv = await Epj_WriteOTPCmd(3, 8, cmd_buf)
|
||
if (rtv == 0) {
|
||
ShowCommMes("写UID成功", MesgType.MESG_TYPE_INFO);
|
||
} else {
|
||
ShowCommMes("写UID失败", MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
async function Epj_ReadPWD() {
|
||
cmd_buf = await Epj_ReadOTPCmd(eproj_oper.commaddr, 11, 4);
|
||
if (cmd_buf.length != 4) {
|
||
ShowCommMes("读PWD失败", MesgType.MESG_TYPE_ERROR);
|
||
} else {
|
||
eproj_oper.pwd = Bytes2Str(cmd_buf);
|
||
var mes = "地址 " + eproj_oper.commaddr + " PWD:" + eproj_oper.pwd;
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
$("#epj_pwd").val(eproj_oper.pwd);
|
||
}
|
||
}
|
||
async function Epj_WritePWD() {
|
||
var cmd_buf;
|
||
if (eproj_oper.pwd.length < 4) {
|
||
cmd_buf = Str2Bytes(eproj_oper.uid);
|
||
cmd_buf = Epj_Uid2Pwd(cmd_buf);
|
||
} else {
|
||
|
||
cmd_buf = HexString2ByteArray(eproj_oper.pwd);
|
||
if (cmd_buf.length != 4) {
|
||
ShowCommMes("密码数据错误", MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
}
|
||
eproj_oper.cmd = epj_wotp_cmd;
|
||
var rtv = await Epj_WriteOTPCmd(11, 4, cmd_buf)
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes("写密码成功", MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("写密码失败", MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
|
||
}
|
||
async function Epj_VerifiPwdCmd(type,infodata)
|
||
{
|
||
var cmd_buf = [];
|
||
if(type == 1)
|
||
{
|
||
cmd_buf = Str2Bytes(infodata);
|
||
cmd_buf = Epj_Uid2Pwd(cmd_buf);
|
||
}else {
|
||
cmd_buf = HexString2ByteArray(infodata);
|
||
if(cmd_buf.length != 4)
|
||
{
|
||
ShowCommMes("密码数据错误", MesgType.MESG_TYPE_ERROR);
|
||
return;
|
||
}
|
||
}
|
||
epj_excuedcmd = 0;
|
||
Epj_SendCmd(cmd_buf);
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if(rtv == 0)
|
||
{
|
||
ShowCommMes("密码对比执行成功", MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
ShowCommMes("密码对比执行失败", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
return rtv;
|
||
}
|
||
async function Epj_ScanUID(bgaddr, count) {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = bgaddr & 0xFF;
|
||
cmd_buf[1] = (bgaddr >> 8) & 0xFF;
|
||
cmd_buf[2] = count & 0xFF;
|
||
cmd_buf[3] = (count >> 8) & 0xFF;
|
||
Epj_SendCmd(cmd_buf);
|
||
var commaddr = 0;
|
||
while (true) {
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 2000);
|
||
if (rtv != 0) {
|
||
ShowCommMes("扫描结束", MesgType.MESG_TYPE_INFO);
|
||
return;
|
||
}
|
||
rtv = epj_recive_buf[6];
|
||
if (rtv == 1) {
|
||
ShowCommMes("扫描结束", MesgType.MESG_TYPE_INFO);
|
||
return;
|
||
}
|
||
var param = [];
|
||
var param2 = [];
|
||
commaddr = (epj_recive_buf[8] << 8) | epj_recive_buf[7];
|
||
ArrayCopy(epj_recive_buf, param, 9, 8);
|
||
|
||
for (var i = 0; i < param.length; i++) {
|
||
param2[i] = param[param.length - 1 - i];
|
||
}
|
||
rtv = UidCode_JQ2YM(param2);
|
||
var mes = "地址: " + commaddr;
|
||
if (!rtv.rtv) {
|
||
mes += " 解析失败";
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_ERROR);
|
||
} else {
|
||
mes += " UID " + rtv.uid;
|
||
eproj_oper.uid = rtv.uid;
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
async function Epj_WritOTPTask() {
|
||
var w_data = HexString2ByteArray(eproj_oper.otp_w_data);
|
||
await Epj_WriteOTPCmd(eproj_oper.commaddr, eproj_oper.otp_w_addr, w_data.length, w_data);
|
||
|
||
}
|
||
|
||
async function Epj_ReadDelay() {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = eproj_oper.commaddr & 0x0FF;
|
||
cmd_buf[1] = (eproj_oper.commaddr >> 8) & 0x0FF;
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
var delay_ = epj_recive_buf[7];
|
||
delay_ <<= 8;
|
||
delay_ |= epj_recive_buf[6];
|
||
mes = "地址:" + eproj_oper.commaddr + " 延时为 " + delay_;
|
||
$("#epj_delayfire").val(delay_);
|
||
eproj_oper.delayfire = delay_;
|
||
ShowCommMes(mes, MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Epj_WriteDelay() {
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = eproj_oper.commaddr & 0x0FF;
|
||
cmd_buf[1] = (eproj_oper.commaddr >> 8) & 0x0FF;
|
||
cmd_buf[2] = eproj_oper.delayfire & 0x0FF;
|
||
cmd_buf[3] = (eproj_oper.delayfire >> 8) & 0x0FF;
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
ShowCommMes("地址 " + eproj_oper.commaddr + " 延时设置成功", MesgType.MESG_TYPE_INFO);
|
||
}
|
||
}
|
||
async function Epj_ReadFirmwareCmd(addr)
|
||
{
|
||
var cmd_buf = [];
|
||
cmd_buf[0] = addr & 0x0FF;
|
||
cmd_buf[1] = (addr >> 8) & 0x0FF;
|
||
Epj_SendCmd(cmd_buf);
|
||
epj_excuedcmd = 0;
|
||
var rtv = await Epj_WaitCmdExcu(eproj_oper.cmd, 1000);
|
||
if (rtv == 0) {
|
||
var param = [];
|
||
param[0] = epj_recive_buf[6];
|
||
param[1] = epj_recive_buf[7];
|
||
eproj_oper.firmware = Bytes2Str(param);
|
||
$("#epj_firmware").val(eproj_oper.firmware);
|
||
ShowCommMes("地址 " + eproj_oper.commaddr + " 芯片ID "+ eproj_oper.firmware, MesgType.MESG_TYPE_INFO);
|
||
}else{
|
||
|
||
ShowCommMes("地址 " + eproj_oper.commaddr + " 读芯片ID失败 " , MesgType.MESG_TYPE_ERROR);
|
||
}
|
||
}
|
||
function Epj_Beep(delay_h,delay_m,count)
|
||
{
|
||
var cmd_buf = [delay_h&0x0FF,(delay_h>>8)&0x0FF,delay_m&0x0FF,(delay_m>>8)&0x0FF,count&0x0FF,(count>>8)&0x0FF];
|
||
Epj_SendCmd(cmd_buf);
|
||
|
||
}
|
||
async function Epj_ExcueOperCmd() {
|
||
switch (eproj_oper.cmd) {
|
||
case 1:
|
||
await Epj_Charge();
|
||
break;
|
||
case 2:
|
||
await Epj_DisCharge();
|
||
break;
|
||
case 3:
|
||
await Epj_EnBoom();
|
||
break;
|
||
case 4:
|
||
await Epj_Reset();
|
||
break;
|
||
case 5:
|
||
await Epj_Boom();
|
||
break;
|
||
case 6:
|
||
await Epj_CheckSelfCmd(eproj_oper.check_voltage);
|
||
break;
|
||
case 7:
|
||
await Epj_SwitchHeartBeat();
|
||
break;
|
||
case 8:
|
||
await Epj_BoomInspect(eproj_oper.boom_bgaddr, eproj_oper.boom_endaddr);
|
||
break;
|
||
case 9:
|
||
await Epj_PowerSet(1);
|
||
break;
|
||
case 10:
|
||
await Epj_PowerSet(0);
|
||
break;
|
||
case 11:
|
||
eproj_oper.cmd = 21;
|
||
await Epj_ReadUID();
|
||
break;
|
||
case 12:
|
||
await Epj_WriteUID();
|
||
break;
|
||
case 13:
|
||
eproj_oper.cmd = 21;
|
||
await Epj_ReadPWD();
|
||
break;
|
||
case 14:
|
||
await Epj_WritePWD();
|
||
break;
|
||
case 15:
|
||
await Epj_VerifiPwdCmd(1,eproj_oper.uid);
|
||
break;
|
||
case 16:
|
||
await Epj_VerifiPwdCmd(2,eproj_oper.pwd);
|
||
break;
|
||
case 17:
|
||
await Epj_ScanUID(eproj_oper.commaddr, 1);
|
||
break;
|
||
case 18:
|
||
await Epj_ClkAmend(eproj_oper.delayfire);
|
||
break;
|
||
case 19:
|
||
await Epj_ReadDelay();
|
||
break;
|
||
case 20:
|
||
await Epj_WriteDelay();
|
||
break;
|
||
case 21:
|
||
await Epj_ReadOTPCmd(eproj_oper.commaddr, eproj_oper.otp_r_bgaddr, eproj_oper.otp_r_len);
|
||
break;
|
||
case 22:
|
||
await Epj_EnOTPWrite();
|
||
break;
|
||
case 23:
|
||
await Epj_WritOTPTask();
|
||
break;
|
||
case 24:
|
||
await Epj_ReadSysStatesCmd(eproj_oper.commaddr);
|
||
break;
|
||
case 25:
|
||
await Epj_ReadFirmwareCmd(eproj_oper.commaddr);
|
||
break;
|
||
case 26:
|
||
await Epj_Inspect_Task(eproj_oper.inspecttype,eproj_oper.amend_netbeg,eproj_oper.amend_count);
|
||
break;
|
||
case 27:
|
||
await Epj_ScanUID(eproj_oper.uidscan_netbeg, eproj_oper.uidscan_count);
|
||
break;
|
||
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
//JQuid 转 YM uid
|
||
function UidCode_JQ2YM(u8ArrayJQUidCode) {
|
||
var i = 0;
|
||
var u16Year = 0;
|
||
var u16Month = 0;
|
||
var u8Day = 0;
|
||
var u16Date = 0;
|
||
var ucArrayYMUidCode = [];
|
||
if (u8ArrayJQUidCode[7] != Epj_CalcCrc8(u8ArrayJQUidCode, 7))
|
||
return false;
|
||
|
||
ucArrayYMUidCode[0] = parseInt(u8ArrayJQUidCode[0] / 10) + 0x30;
|
||
ucArrayYMUidCode[1] = u8ArrayJQUidCode[1] % 10 + 0x30;
|
||
ucArrayYMUidCode[4] = u8ArrayJQUidCode[1]; //特征码
|
||
if(ucArrayYMUidCode[4] == 0 )
|
||
{
|
||
ucArrayYMUidCode[4] = 0x30;
|
||
}
|
||
u16Date = u8ArrayJQUidCode[2];
|
||
u16Date = u16Date << 8 | u8ArrayJQUidCode[3];
|
||
|
||
u16Year = (u16Date >> 9) & 0x7F;
|
||
u16Month = (u16Date >> 5) & 0x0F;
|
||
u8Day = u16Date & 0x1F;
|
||
|
||
ucArrayYMUidCode[2] = parseInt(u16Year / 10) + 0x30;
|
||
ucArrayYMUidCode[3] = u16Year % 10 + 0x30;
|
||
|
||
ucArrayYMUidCode[5] = parseInt(u16Month / 10) + 0x30;
|
||
ucArrayYMUidCode[6] = u16Month % 10 + 0x30;
|
||
|
||
ucArrayYMUidCode[7] = parseInt(u8Day / 10) + 0x30;
|
||
ucArrayYMUidCode[8] = u8Day % 10 + 0x30;
|
||
|
||
var stSerialCode = 0;
|
||
stSerialCode |= (u8ArrayJQUidCode[4] << 8) & 0x00FF00;
|
||
stSerialCode |= (u8ArrayJQUidCode[5] << 16) & 0xFF0000;
|
||
stSerialCode |= (u8ArrayJQUidCode[6] << 24) & 0xFF000000;
|
||
|
||
stSerialCode = UINT32_ENDIAN_CHANGE(stSerialCode);
|
||
|
||
ucArrayYMUidCode[9] = (stSerialCode >> 17) & 0x7F;
|
||
if(ucArrayYMUidCode[9] == 0)
|
||
{
|
||
ucArrayYMUidCode[9] = 0x30;
|
||
}
|
||
stSerialCode = stSerialCode & 0x1FFFF;
|
||
|
||
for (i = 14; i >= 10; i--) {
|
||
ucArrayYMUidCode[i] = (stSerialCode % 10 + 0x30);
|
||
stSerialCode = parseInt(stSerialCode / 10);
|
||
|
||
}
|
||
|
||
var rtv = {
|
||
uid: "",
|
||
rtv: false,
|
||
|
||
}
|
||
if (!YMUid_Valid_check(ucArrayYMUidCode))
|
||
return rtv;
|
||
rtv.uid = String.fromCharCode.apply(null, ucArrayYMUidCode);
|
||
rtv.rtv = true;
|
||
return rtv;
|
||
}
|
||
|
||
|
||
|
||
function UidCode_JQ2YM_NoBackwardSequence(u8ArrayJQUidCode)
|
||
{
|
||
var i=0;
|
||
var ucYear = 0;
|
||
var ucMonth = 0;
|
||
var ucDay = 0;
|
||
var ulNumber =0;
|
||
var ucTeZhengMa = 0;
|
||
var usBoxCode = 0;
|
||
var ucIndexCode = 0;
|
||
var len = 16;
|
||
var ucArrayYMUidCode = [];
|
||
var result = {
|
||
|
||
uid:"",
|
||
rtv:false,
|
||
|
||
};
|
||
if(u8ArrayJQUidCode[7] != Epj_CalcCrc8(u8ArrayJQUidCode,7))
|
||
{
|
||
return result;
|
||
}
|
||
var temp_array = [];
|
||
temp_array[0] = u8ArrayJQUidCode[0];
|
||
temp_array[1] = u8ArrayJQUidCode[1];
|
||
temp_array = Bytes2ChartArray(temp_array);
|
||
|
||
for(var index_ = 0; index_ < 4; index_++)
|
||
{
|
||
ucArrayYMUidCode[index_] = parseInt(temp_array[index_].charCodeAt(0),10);
|
||
}
|
||
|
||
ucArrayYMUidCode[4] = ucArrayYMUidCode[2];
|
||
ucArrayYMUidCode[5] = ucArrayYMUidCode[3];
|
||
|
||
|
||
ucYear = u8ArrayJQUidCode[2]>>1;
|
||
ucArrayYMUidCode[2] = parseInt(ucYear/10)+0x30;
|
||
ucArrayYMUidCode[3] = parseInt(ucYear%10)+0x30;
|
||
|
||
ucMonth = ((u8ArrayJQUidCode[2]&0x01)<<3)|((u8ArrayJQUidCode[3]>>5));
|
||
ucArrayYMUidCode[6] = parseInt(ucMonth/10)+0x30;
|
||
ucArrayYMUidCode[7] = parseInt(ucMonth%10)+0x30;
|
||
|
||
ucDay = (u8ArrayJQUidCode[3]&0x1F);
|
||
ucArrayYMUidCode[8] = parseInt(ucDay/10)+0x30;
|
||
ucArrayYMUidCode[9] = parseInt(ucDay%10)+0x30;
|
||
|
||
ulNumber = u8ArrayJQUidCode[4];
|
||
ulNumber <<= 8;
|
||
ulNumber |= u8ArrayJQUidCode[5];
|
||
ulNumber <<= 8;
|
||
ulNumber |= u8ArrayJQUidCode[6];
|
||
|
||
ucTeZhengMa = parseInt(ulNumber/100000);
|
||
ucArrayYMUidCode[10] = ucTeZhengMa;
|
||
|
||
ulNumber = parseInt(ulNumber%100000);
|
||
usBoxCode = parseInt( ulNumber/100);
|
||
ucArrayYMUidCode[11] = parseInt(usBoxCode/100) + 0x30;
|
||
usBoxCode%=100;
|
||
ucArrayYMUidCode[12] = parseInt(usBoxCode/10)+0x30;
|
||
ucArrayYMUidCode[13] =parseInt( usBoxCode%10) + 0x30;
|
||
|
||
ucIndexCode = parseInt(ulNumber%100);
|
||
ucArrayYMUidCode[14] =parseInt(ucIndexCode/10)+0x30;
|
||
ucArrayYMUidCode[15] =parseInt(ucIndexCode%10) + 0x30;
|
||
|
||
if(!YMUid_Valid_check_2(ucArrayYMUidCode))
|
||
{
|
||
return result;
|
||
}
|
||
ucArrayYMUidCode = String.fromCharCode.apply(null, ucArrayYMUidCode);
|
||
result.rtv = true;
|
||
result.uid = ucArrayYMUidCode;
|
||
return result;
|
||
}
|
||
|
||
|
||
//AD23000628A00004
|
||
//hex AD 00 2E DC 63 2E A4 9B
|
||
function UidCode_YM2JQ_2(ucArrayYMUidCode)
|
||
{
|
||
|
||
var i=0;
|
||
var usYear = 0;
|
||
var usMonth = 0;
|
||
var usDay = 0;
|
||
var ulNumber =0;
|
||
var usBoxCode = 0;
|
||
var ucIndexCode = 0;
|
||
var dataLen = 0;
|
||
var u8ArrayJQUidCode = [];
|
||
if(!YMUid_Valid_check_2(ucArrayYMUidCode))
|
||
return u8ArrayJQUidCode;
|
||
|
||
//string2hex((char *)pstYMUID->ucArrayYMUidCode,6,(char *)pstJQUID->u8ArrayJQUidCode,&dataLen); //0xAD 0x23 0x58
|
||
var str_temp = String.fromCharCode.apply(null,ucArrayYMUidCode.slice(0,6));
|
||
var data_buf = HexStr2Bytes(str_temp);
|
||
//0xAD 0x58
|
||
u8ArrayJQUidCode[0] = data_buf[0];
|
||
u8ArrayJQUidCode[1] = data_buf[2];
|
||
|
||
//转换 年 月 日
|
||
usYear = (ucArrayYMUidCode[2]-0x30)*10 + (ucArrayYMUidCode[3]-0x30);
|
||
usMonth = (ucArrayYMUidCode[6]-0x30)*10 + (ucArrayYMUidCode[7]-0x30);
|
||
usDay = (ucArrayYMUidCode[8]-0x30)*10 + (ucArrayYMUidCode[9]-0x30);
|
||
|
||
usYear = usYear<<9|usMonth<<5|usDay;
|
||
|
||
u8ArrayJQUidCode[2] = (usYear&0xFF00)>>8;
|
||
u8ArrayJQUidCode[3] = (usYear&0xFF);
|
||
|
||
|
||
|
||
ulNumber = ucArrayYMUidCode[10]*100000;
|
||
usBoxCode = (ucArrayYMUidCode[11]-0x30)*100+ (ucArrayYMUidCode[12]-0x30)*10+(ucArrayYMUidCode[13]-0x30);
|
||
ucIndexCode = (ucArrayYMUidCode[14]-0x30)*10+(ucArrayYMUidCode[15]-0x30);
|
||
|
||
ulNumber += usBoxCode*100+ucIndexCode;
|
||
|
||
u8ArrayJQUidCode[4] = (ulNumber&0xFF0000)>>16;
|
||
u8ArrayJQUidCode[5] = (ulNumber&0xFF00)>>8;
|
||
u8ArrayJQUidCode[6] = (ulNumber&0xFF);
|
||
|
||
|
||
u8ArrayJQUidCode[7] = Epj_CalcCrc8(u8ArrayJQUidCode,7);
|
||
|
||
return u8ArrayJQUidCode;
|
||
}
|
||
|
||
|
||
|
||
|
||
function UidCode_YM2JQ(ucArrayYMUidCode) {
|
||
var i = 0;
|
||
var u16Year = 0;
|
||
var u16Month = 0;
|
||
var u8Day = 0;
|
||
var u16Date = 0;
|
||
|
||
if (!YMUid_Valid_check(ucArrayYMUidCode))
|
||
return false;
|
||
var u8ArrayJQUidCode = [];
|
||
|
||
|
||
u8ArrayJQUidCode[0] = (ucArrayYMUidCode[0] - 0x30) * 10 + (ucArrayYMUidCode[1] - 0x30); //企业代码
|
||
u8ArrayJQUidCode[1] = ucArrayYMUidCode[4]; //特征码
|
||
|
||
u16Year = (ucArrayYMUidCode[2] - 0x30) * 10 + (ucArrayYMUidCode[3] - 0x30);
|
||
u16Month = (ucArrayYMUidCode[5] - 0x30) * 10 + (ucArrayYMUidCode[6] - 0x30);
|
||
u8Day = (ucArrayYMUidCode[7] - 0x30) * 10 + (ucArrayYMUidCode[8] - 0x30);
|
||
u16Date = (u16Year & 0x7F) << 9 | (u16Month & 0x0F) << 5 | (u8Day & 0x1F);
|
||
u8ArrayJQUidCode[2] = (u16Date & 0xFF00) >> 8;
|
||
u8ArrayJQUidCode[3] = (u16Date & 0x00FF);
|
||
|
||
var stSerialCode = 0;
|
||
for (i = 10; i < 15; i++) {
|
||
stSerialCode = stSerialCode * 10 + (ucArrayYMUidCode[i] - 0x30);
|
||
}
|
||
|
||
stSerialCode |= ucArrayYMUidCode[9] << 17;
|
||
stSerialCode = UINT32_ENDIAN_CHANGE(stSerialCode);;
|
||
u8ArrayJQUidCode[4] = (stSerialCode >> 8) & 0x0FF;
|
||
u8ArrayJQUidCode[5] = (stSerialCode >> 16) & 0x0FF;
|
||
u8ArrayJQUidCode[6] = (stSerialCode >> 24) & 0x0FF;
|
||
u8ArrayJQUidCode[7] = Epj_CalcCrc8(u8ArrayJQUidCode, 7);
|
||
|
||
return u8ArrayJQUidCode;
|
||
}
|
||
|
||
function Epj_CalcCrc8(Ptr, num) {
|
||
var i, j, crc = 0;
|
||
|
||
for (j = 0; j < num; j++) {
|
||
crc &= 0x0FF;
|
||
crc ^= Ptr[j];
|
||
for (i = 0; i < 8; i++) {
|
||
if ((crc & 0x01) != 0) {
|
||
crc >>= 1;
|
||
crc ^= 0x8c;
|
||
} else {
|
||
crc >>= 1;
|
||
}
|
||
}
|
||
}
|
||
return crc;
|
||
}
|
||
|
||
function YMUid_Valid_check(u8ArrayYMUid) {
|
||
var i = 0;
|
||
var u8ValidDataCounter = 0;
|
||
|
||
for (i = 0; i < 15; i++) {
|
||
|
||
if (u8ArrayYMUid[i] >= 48 && u8ArrayYMUid[i] <= 57) {
|
||
u8ValidDataCounter++;
|
||
continue;
|
||
}
|
||
if (u8ArrayYMUid[i] >= 65 && u8ArrayYMUid[i] <= 90) {
|
||
u8ValidDataCounter++;
|
||
continue;
|
||
}
|
||
if (u8ArrayYMUid[i] >= 97 && u8ArrayYMUid[i] <= 122) {
|
||
u8ValidDataCounter++;
|
||
continue;
|
||
}
|
||
}
|
||
|
||
if (u8ValidDataCounter < 7)
|
||
return false;
|
||
return true;
|
||
}
|
||
|
||
function YMUid_Valid_check_2(u8ArrayYMUid)
|
||
{
|
||
var i=0;
|
||
var u8ValidDataCounter = 0;
|
||
for(i=0;i<16;i++)
|
||
{
|
||
if(u8ArrayYMUid[i] >= 48 && u8ArrayYMUid[i] <= 57)
|
||
{
|
||
u8ValidDataCounter++;
|
||
continue;
|
||
}
|
||
if(u8ArrayYMUid[i] >= 65 && u8ArrayYMUid[i] <= 90)
|
||
{
|
||
u8ValidDataCounter++;
|
||
continue;
|
||
}
|
||
if(u8ArrayYMUid[i] >= 97 && u8ArrayYMUid[i] <= 122)
|
||
{
|
||
u8ValidDataCounter++;
|
||
continue;
|
||
}
|
||
}
|
||
|
||
if(u8ValidDataCounter < 7)
|
||
return false;
|
||
return true;
|
||
}
|
||
|
||
|
||
function Epj_GetSpecialCodeIndex(specialcode) {
|
||
if (specialcode >= 0x30 && specialcode <= 0x39) {
|
||
return specialcode - 0x30;
|
||
} else if (specialcode >= 65 && specialcode <= 90) {
|
||
return specialcode - 65+10;
|
||
} else if (specialcode >= 97 && specialcode <= 122) {
|
||
return specialcode - 97+36;
|
||
}
|
||
}
|
||
|
||
function UINT32_ENDIAN_CHANGE(val) {
|
||
|
||
var temp_val = ((val & 0x000000ff) << 24);
|
||
temp_val |= ((val & 0x0000ff00) << 8);
|
||
temp_val |= ((val & 0x00ff0000) >> 8);
|
||
temp_val |= ((val & 0xff000000) >>24) & 0x0FF;
|
||
return temp_val;
|
||
}
|
||
|
||
function Epj_GetiDateInfo(uidarray, index) {
|
||
var month = (uidarray[index] - 48) * 10 + (uidarray[index + 1] - 48);
|
||
var day = (uidarray[index + 2] - 48) * 10 + (uidarray[index + 3] - 48);
|
||
return ((month << 5) | day);
|
||
}
|
||
|
||
function Epj_Uid2Pwd(uidarray) {
|
||
var pwdbuf = [];
|
||
if (uidarray.length != 15) {
|
||
return pwdbuf;
|
||
}
|
||
var ssp = uidarray[9];
|
||
var flownum = 0;
|
||
var index = 10;
|
||
while (index < 15) {
|
||
flownum *= 10;
|
||
flownum += ((uidarray[index] - 48) & 0x0FF);
|
||
index++;
|
||
}
|
||
code = ((Epj_GetiDateInfo(uidarray, 5) & 0x01FF) << 23);
|
||
code = code | ((Epj_GetSpecialCodeIndex(ssp) & 0x03F) << 17);
|
||
code |= (flownum & 0x01FFFF);
|
||
for (index = 0; index < 4; index++) {
|
||
pwdbuf[index] = code & 0x0FF;
|
||
code >>= 8;
|
||
}
|
||
return pwdbuf;
|
||
}
|