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

461 lines
10 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

var HexBase = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
var EProCmdV = {
WRITE_UID_ : 0x01,
WRITE_PWD_ : 0x02,
READ_UID_ : 0x03,
READ_PWD_ : 0x04,
VERIFY_UID_ : 0x05,
VERIFY_PWD_ : 0x06,
READ_STATE_ : 0x07,
SET_DELAY_ : 0x08,
SET_DELAY_ALL_ : 0x09,
WRITE_ADDR_ : 0x0A,
CHARGE_ : 0x0B,
DISCHARGE_ : 0x0C,
AMEND_ : 0x0D,
READ_FIRWARE_ : 0x0E,
READ_ADDR_ : 0x0F,
BOOM_ : 0x10,
INSPECT_SLAVE_ : 0x11,
BASE_CHECK_ : 0x12,
SLAVE_ONLINE_ : 0x13,
ALL_SLEEP : 0x14,
READ_DELAY_ : 0x16,
BC_WRITE_ADDR_ : 0x17,
READ_AMEND_V_ : 0x18,
READ_S_BUS_C_ : 0x19,
READ_S_BUS_V_ : 0x1A,
SLAVE_BUS_CMD : 0x1B,
EQUEL_UID_FEA : 0x1C,
SET_PSWD_FLAG : 0x1D,
SET_SUPER_T_ : 0x1E,
MASTER_HARTBEAT_ : 0x20,
SET_BUS_MODE_ : 0x21,
BROADCAST_ADDR : 0xFF,
BUS_MODE_R_ : 0xFFFE,
BUS_MODE_B_ : 0xFFFD,
WAIT_ONLINE_ : 0xFFFC,
WAIT_RELEASE_ : 0xFFFB,
TRANS_DELAY_ : 0xFFFA,
S_A_ERROR_S : 0 , //从机应答错误状态
S_RA_WRITE_ID : 1 , //主机写入UUID param :15字节
S_RA_WRITE_PSW : 2 , //主机写入密码 param :8字节
S_RA_EQUAL_ID : 3 , //主机验证UUID param :13字节
S_RA_EQUAL_PSW : 4 , //主机验证密码 param :8字节
S_RA_SET_DELAY : 5 , //主机设置单发雷管的延时 param :2字节
S_RA_SET_ADDR : 7 , //设置从机的通讯地址 param :2字节 或 15+2广播通过UID设置地址
S_RA_OPER_CMD : 8 , //主机发送操作命令 param :1字节
S_RA_REQUEST_ACK : 9 , //主机发送的应答请求 param :0字节
S_RA_SET_BAUDRATE : 10 ,//设置通讯速率 param :2字节
S_R_SET_LOCAL : 11 ,//设置使用位置 param :8字节
S_R_SET_USETIME : 12 , //设置使用时间 param :2字节
S_R_HEARTBEAT : 13 ,//心跳包 param :0字节
S_R_FACTORY_SET : 14 ,//释放工厂模式 param :4字节
S_UID_REQUEST : 15 ,//利用UID进行访问只能用广播访问 param : {UID+(10bit地址+6bit功能码)+功能码参数}
S_UID_SEARCH : 16 ,//UID搜索功功能码
S_RA_EQUAL_UID_F : 17 ,//UID特征码验证
S_RA_SETSUPER_T : 18 ,//设置复位保存延时起爆时间
RA_REGISTER : 62 ,//读寄存器
WA_REGISTER : 63 ,//写4字节寄存器
S_CMD_READ_ID : 1 , //主机读取UUID
S_CMD_READ_PSW : 2 , //主机读取PSWD
S_CMD_READ_SYS_S : 3 , //主机读取系统状态
S_CMD_READ_VERSION : 4 , //主机读取系统版本
S_CMD_READ_LOCAL : 5 , //读取位置信息
S_CMD_READ_OPERTIME : 6 , //读取操作时间
S_CMD_READ_ADDR : 7 , //读取通讯地址
S_CMD_READ_DELAY : 8 , //主机读取延时设置
S_CMD_READ_SYS_F : 9 , //读取备份区的状态信息
S_CMD_CHARGE : 10 , //充电
S_CMD_DISCHARGE : 11 , //放电
S_CMD_CLK_CHECK : 12 , //时钟校准
S_CMD_BLAST : 13 , //起爆
S_CMD_SLEEP : 14 , //强制休眠,不在监听总线
S_CMD_INSPECT : 15 , //巡检
S_CMD_SYS_CHECK : 16 , //执行自检
//public final static byte CMD_SEARCH_UID : 17 //搜索UID
S_CMD_STOP_CHARGE : 18 , //停止充电
S_CMD_FAC_CHECK1 : 19 , //工厂自检
S_CMD_FAC_CHECK2 : 20 , //工厂自检
S_CND_READ_AMEND : 21 , //读校准值
S_CMD_FAC_CHECK3 : 22 , //工厂自检
S_CMD_READ_BUSV : 23 , //读总线电压
S_CMD_EQUEL_PWD : 24 , //密码验证置位
};
//十六进制字符串转字节数组
function HexStr2Bytes(str)
{
var pos = 0;
var len = str.length;
if(len %2 != 0)
{
return null;
}
len /= 2;
var hexA = new Array();
for(var i=0; i<len; i++)
{
var s = str.substr(pos, 2);
var v = parseInt(s, 16);
hexA.push(v);
pos += 2;
}
/*
len = hexA.length;
var index = 0;
while(index < (len-index-1))
{
pos = hexA[index];
hexA[index] = hexA[len-index - 1];
hexA[len-index - 1] = pos;
index++;
}*/
return hexA;
}
function HexString2ByteArray(src)
{
var regexp = /(,|;|0x|0X)/g;
var w_data = src.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);
return w_data;
}
function Str2Bytes(str)
{
var pos = 0;
var len = str.length;
if(len < 1)
{
return null;
}
var buf = new Array();
for(var i=0; i<len; i++)
{
var v = parseInt(str.charCodeAt(i), 10);
buf.push(v);
pos += 2;
}
return buf;
}
//字节数组转十六进制字符串
function Bytes2Str(arr)
{
var str = "";
for(var i=0; i<arr.length; i++)
{
str += HexBase[(arr[i] >> 4) & 0x0F];
str += HexBase[(arr[i]) & 0x0F];
if(i != arr.length )
str+= " ";
}
return str;
}
function Bytes2ChartArray(arr)
{
var str = [];
var index = 0;
for(var i=0; i<arr.length; i++)
{
str[index++]= HexBase[(arr[i] >> 4) & 0x0F];
str[index++]= HexBase[(arr[i]) & 0x0F];
}
return str;
}
function Byte2Hex(data)
{
var str = "";
str += HexBase[(data >> 4) & 0x0F];
str += HexBase[(data) & 0x0F];
return str;
}
function Bytes2ULong(arr)
{
var data_l = 0;
for(i = 0; i < arr.length; i++)
{
data_l += (arr[i] & 0xFF) << (8*i);
}
return data_l;
}
function Bytes2UShort(arr){
var data_s = Bytes2ULong(arr);
if((data_s & 0x8000) > 0)
{
data_s = (65536 - data_s)*-1;
}
return data_s;
}
function IntFormat(charcount,val)
{
var buf_ = new Array();
for(var count_ = 0 ; count_ < charcount; count_++)
{
buf_.push(val % 10);
val = parseInt(val / 10);
}
var str_ = "";
while(charcount > 0)
{
charcount--;
str_ += buf_[charcount];
}
return str_;
}
function ArrayCopy(src,dst,offset,len)
{
var len_
if(typeof(len) == "undefined" || len == null || len < 1)
{
if(src.length > offset)
len_ = src.length - offset;
else
return;
}else{
len_ = len;
}
if(offset < 0)
{
offset = 0;
}
var index = 0;
while(index < len_)
dst[index++] = src[offset++];
return dst;
}
function ArrayAppend(src,dst,offset,len)
{
var len_
if(typeof(len) == "undefined" || len == null || len < 1)
{
len_ = src.length;
}else{
len_ = len;
}
if(offset < 0)
{
offset = 0;
}
var index = 0;
while(index < len_)
dst[offset++] = src[index++];
return dst;
}
function Int2HexStr(intdata,spec,format)
{
var data = [];
var count = 0;
var hexdata = '';
var index = 0;
var index2 = 0;
var temp = '';
if((format == 0) && (intdata == 0))
{
return '0';
}
while(intdata > 0)
{
data[count++] = HexBase[intdata & 0x0F];
intdata >>= 4;
}
if((count %2) != 0)
{
data[count++] = '0';
}
index = 0;
while((count > 0) && ((count-1-index) >index))
{
temp = data[index];
data[index] = data[count-1-index];
data[count-1-index] = temp;
index++;
}
if(format > count){
index = 0;
if((format %2) > 0)
format++;
while(format > count)
{
if((index % 2) == 0)
{
hexdata += spec;
}
hexdata += '0';
format--;
index++;
}
}
index = 0;
while(index < count)
{
if((index % 2) == 0)
{
hexdata += spec;
}
hexdata += data[index++];
}
return hexdata;
}
function Crc8(buf)
{
var crc = 0;
var index = 0;
while(index < buf.length)
{
crc ^= buf[index++];
crc &= 0xFF;
}
return crc;
}
function PrapareUIDFeatrue(uidarray)
{
var index1 = 0;
var us_temp = 0;
var uidfeatrue = [];
var uid_f = uidarray[9];
//拷贝特征值
uidfeatrue[0] = 0;// uidarray[9];
//合并年月
uidfeatrue[1] = uidarray[3] - 0x30;
uidfeatrue[1] <<= 4;
if(uidarray[5] > 48)
{
uidfeatrue[1] += 0x0A;
}
uidfeatrue[1] += (uidarray[6] - 0x30 );
//特征码于日期调整
uidarray[9] = uidarray[8];
uidarray[8] = uidarray[7];
//将日期和流水号转为3字节int
us_temp = 0;
for(var index1 = 8; index1 < 15; index1++)
{
us_temp *= 10;
us_temp += (uidarray[index1] - 0x30 );
}
for(var index1 = 0; index1 < 3; index1++)
{
uidfeatrue[2+index1] = us_temp & 0xFF;
us_temp >>= 8;
}
for(var index = 0; index < 4;index++)
{
uidfeatrue[index] = uidfeatrue[index+1];
}
uidfeatrue[4] = uid_f;
return uidfeatrue;
// Mem_Copy(searchfeatrue,uidfeatrue,6);
// index1 = searchfeatrue[4];
// searchfeatrue[4] = searchfeatrue[2];
// searchfeatrue[2] = index1;
}
function PrapareUIDFeatrue2(uidarray)
{
var index1 = 0;
var us_temp = 0;
var uidfeatrue = [];
//拷贝特征值
uidfeatrue[0] = uidarray[9];
//合并年月
uidfeatrue[1] = uidarray[3] - 0x30;
uidfeatrue[1] <<= 4;
if(uidarray[5] > 48)
{
uidfeatrue[1] += 0x0A;
}
uidfeatrue[1] += (uidarray[6] - 0x30 );
//特征码于日期调整
uidarray[9] = uidarray[8];
uidarray[8] = uidarray[7];
//将日期和流水号转为3字节int
us_temp = 0;
for(var index1 = 8; index1 < 15; index1++)
{
us_temp *= 10;
us_temp += (uidarray[index1] - 0x30 );
}
for(var index = 0; index < 3;index++)
{
uidfeatrue[2+index] = us_temp & 0xFF;
us_temp >>= 8;
}
return uidfeatrue;
// Mem_Copy(searchfeatrue,uidfeatrue,6);
// index1 = searchfeatrue[4];
// searchfeatrue[4] = searchfeatrue[2];
// searchfeatrue[2] = index1;
}
function Epro_CmdData(addr,func,cmd,param,read_len)
{
var bufdata = [];
var index = 0;
addr <<= 6;
addr |= (func & 0x3F);
bufdata[index++] = addr & 0xFF;
bufdata[index++] = (addr>>8) & 0xFF;
if(func == 0x08 || func == 0x0A)
{
bufdata[index++] = cmd;
}
if(typeof(param) != "undefined" && param != null)
{
for(i = 0; i < param.length;i++)
{
bufdata[index++] = param[i];
}
}
var crc = Crc8(bufdata);
bufdata[index++] = crc;
var bufdata2 = [];
bufdata2[0] = index;
bufdata2[1] = read_len;
for(var i = 0; i < index ; i++)
{
bufdata2[i+2] = bufdata[i];
}
return bufdata2;
}