Files
python_tools/web/layui/BTcomm.js

501 lines
14 KiB
JavaScript
Raw Normal View History

2024-01-14 22:38:04 +08:00
var BT_OPER_ID = 1;
var BT_OPER_SENDDATAS = 2;
var BT_OPEN_CMD = 1;
var BT_CHHOICE_CMD = 2;
var BT_BEEP_CMD = 3;
var BT_MES_AUTO_CLEAN = 5000;
2024-01-14 22:38:04 +08:00
var bt_mes_count = 0;
var BTBtnTask_Busy = 0;
var BTMesgBox;
var BTMesgBoxCountLabel;
var BTMesgBoxErrorCountLable;
var BTMesScrollFlag = 1;
var BTChoiceDiaID = -1;
var BTRWRegDiaID = -1;
var es_qthandle = null;
var MesgType = {
MESG_TYPE_OK : 0,
MESG_TYPE_WARING : 1,
MESG_TYPE_ERROR : 2,
MESG_TYPE_INFO : 3,
MESG_TYPE_BEATH : 4,
};
var Error_count = 0;
var Info_count = 0;
var BtOper_Json={
uid:"123456789",
pwd:"12345678",
setdelay:10,
commaddr:21,
recovertime:20000,
opercmd:1,
amendv:-1,
waitack:true,
waittimeout:1000,
beguid:"123456789",
state_str:"",
state_v:[],
cfir_v:0,//起爆电容电压
bus_v:0,//总线电压
bus_c:0,//总线电流
bat_v:0,//电池电压
busmode:2,//总线模式
heartbeat:1,//心跳包
inspect_buf:[],//巡检结果数组
firmware:"",//固件版本号
begaddr:21,//循环操作的起始地址
begdelay:50,//循环设置延时的起始值
delaysetp:50,//延时设置步进值
groupcount:1,//单次循环个数
rundelay:1000, //循环延时
amendcount:400,
inspectcount:400,
cycletimes:50,
netcount:400,
cmdbuf:[],
setparam:[],
cycletest:0,
};
function BTErrorCount(count)
{
Error_count += count;
var obj = $("#btmeserrorcount")[0];
obj.innerHTML = "错误:"+Error_count;
}
function BTInfoCount(count)
{
var obj = $("#btmescount")[0];
Info_count += count;
obj.innerHTML = "条目:"+Info_count;
}
function BTChoice(json_info)
{
var content ='';
console.log(json_info);
json_info = eval("("+json_info+")");;
if(json_info ==null || json_info == undefined)
{
ShowCommMes("没有获取到设备信息");
return;
}
json_info = json_info.btinfo_list;
content += '<div style="padding: 5px; line-height: 25px; background-color: #393D49; color:#cdd4d3; ">';
content += '<ul class="layui-nav layui-nav-tree layui-inline" lay-filter="demo" style="margin-right: 10px;">'
for(var i = 0; i < json_info.length;i++)
{
content += ' <li class="layui-nav-item"><a href="javascript:;" rel="external nofollow" style = "color: #10a9f3; font-size: medium" onclick="BtItem(';
content += i+')" >';
content += json_info[i];
content += '</a></li>';
}
content += '</ul></div>';
if(BTChoiceDiaID > 0)
{
layer.close(BTChoiceDiaID);
}
BTChoiceDiaID = layer.open({
type: 1,
content:content,
title: "选择蓝牙设备",
shade:0.6,
moveType: 1,
btnAlign: 'c',
maxHeight:450,
maxWidth:400,
minWidth:350,
});
}
function BtRWRegDia()
{
var content = '<div style="padding: 5px; line-height: 25px; background-color: #393D49; color:#cdd4d3; ">';
content += '<div class="layui-row" style="height: 1.8rem ; line-height: 1.8rem; padding-top: 2px;"> ';
content += '<div class="layui-col-xs4"><div class="grid-demo grid-demo-bg1" style="text-align: left;">寄存器地址:</div></div> ';
content += '<div class="layui-col-xs4"><div class="grid-demo grid-demo-bg1" style="text-align: left;">寄存器长度:</div></div>';
content += '<div class="layui-col-xs4"><div class="grid-demo grid-demo-bg1" style="text-align: left;">通信地址</div></div>';
content += '</div>';
content += '<div class="layui-row" style="height: 1.8rem ; line-height: 1.8rem; padding-top: 2px;">';
content += '<div class="layui-col-xs4" style="padding-left:2px"><input type="text" name="title" lay-verify="title" autocomplete="off" value="3E00" class="layui-input" style="height: 1.8rem; line-height: 1.8rem;"></div> ';
content += '<div class="layui-col-xs4" style="padding-left:2px"><input type="text" name="title" lay-verify="title" autocomplete="off" value="4" class="layui-input" style="height: 1.8rem; line-height: 1.8rem;"></div>';
content += '<div class="layui-col-xs4"style="padding-left:2px"><input type="text" name="title" lay-verify="title" autocomplete="off" value="1" class="layui-input" style="height: 1.8rem; line-height: 1.8rem;"></div>';
content += '</div>';
content += '<div class="layui-row" style="height: 1.8rem ; line-height: 1.8rem; padding-top: 2px; padding-bottom:2px">';
content += '<div class="layui-col-xs4" ><button type="button" class="layui-btn layui-btn-normal " style="height: 1.8rem; line-height: 1.8rem; padding: 0 0.8rem;margin-left:5px; margin-right:5px;">读寄存器</button></div> ';
content += '<div class="layui-col-xs4" "><button type="button" class="layui-btn layui-btn-normal " style="height: 1.8rem; line-height: 1.8rem; padding: 0 0.8rem;width: 90%;">擦写寄存器</button></div>';
content += '<div class="layui-col-xs4" > <button type="button" class="layui-btn layui-btn-normal " style="height: 1.8rem; line-height: 1.8rem; padding: 0 0.8rem;width: 90%;">写寄存器</button></div>';
content += '</div>';
content += '<div style="height: 20rem; border: 1px solid #000000; overflow:scroll; background-color:#eeeeee; color:#000000" id = "btregmesarea" onclick="RegAreaStopScroll()">1234 </div>'
//content += '<div class="layui-row" style="height: 1.8rem ; line-height: 1.8rem; padding-top: 2px;">';
//content += '<div class="layui-col-xs10"><div class="grid-demo grid-demo-bg1" style="text-align: left;"></div></div> ';
//content += '<div class="layui-col-xs2 "><button type="button" class="layui-btn layui-btn-normal " style="height: 1.8rem; line-height: 1.8rem; padding: 0 0.8rem;width: 90%;">返回</button></div>';
//content += '</div>';
content += '</div>';
if(BTRWRegDiaID > 0)
{
layer.close(BTRWRegDiaID);
}
BTRWRegDiaID = layer.open({
type: 1,
content:content,
title: "读写寄存器",
shade:0.6,
moveType: 1,
btnAlign: 'c',
maxHeight:550,
minWidth:350,
});
}
function StopScroll()
{
if( BTMesScrollFlag < 1)
{
BTMesScrollFlag = 1;
}else{
BTMesScrollFlag = 0;
}
}
//显示普通信息
function ShowCommMes(commmes , mestype, logflag)
{
var log_time = getDateTime();
commmes = log_time+" "+commmes;
var para=document.createElement("p");
var node=document.createTextNode(commmes);
para.appendChild(node);
bt_mes_count++;
if(bt_mes_count > BT_MES_AUTO_CLEAN)
{
BTMesgBox.innerHTML = "";
bt_mes_count = 0;
return ;
}
if(mestype == undefined || mestype == null)
para.style = "color: #0b71af; font-size: 18px; word-wrap: break-word; word-break: break-all; overflow: hidden;";
else{
var style_str = "color: ";
switch(mestype)
{
case MesgType.MESG_TYPE_INFO: style_str += "#0b71af ;";break;
case MesgType.MESG_TYPE_ERROR: style_str += "#e60619 ;";break;
case MesgType.MESG_TYPE_OK: style_str += "#138422 ;";break;
default:style_str += "#0b71af ;";break;
}
style_str += " font-size: 18px; word-wrap: break-word; word-break: break-all; overflow: hidden;"
para.style = style_str ;
}
BTMesgBox.appendChild(para);
if(BTMesScrollFlag > 0)
{
BTMesgBox.scrollTop = BTMesgBox.scrollHeight;
}
if(!(logflag == undefined || logflag == null))
{
if((es_qthandle != null) && (es_qthandle != undefined)&& (logflag > 0))
{
if(mestype == MesgType.MESG_TYPE_ERROR)
{
es_qthandle.WriteLogMes(1,commmes);
}else{
es_qthandle.WriteLogMes(0,commmes);
}
}
}
}
function ShowJsonMes(commmes)
{
var mes = JSON.parse(commmes);
mes = String.fromCharCode.apply(null,mes);
console.log("ShowJsonMes ");
ShowCommMes(mes,MesgType.MESG_TYPE_INFO);
}
//选择蓝牙设备回调函数
function BtItem(index)
{
var data = {
"oper_id" : BT_OPER_ID,
"oper_cmd" : BT_CHHOICE_CMD,
"choice_index" :index
};
//关闭设备选择对话框
layer.close(BTChoiceDiaID);
BtTranstoAndroid(BT_OPER_ID,data);
}
function BtBeep()
{
var data = {
"oper_id" : BT_OPER_ID,
"oper_cmd" : BT_BEEP_CMD,
};
BtTranstoAndroid(BT_OPER_ID,data);
}
function BtMesClean()
{
BTMesgBox.innerHTML = "";
var obj = $("#btmeserrorcount")[0];
obj.innerHTML = "错误0";
obj = $("#btmescount")[0];
obj.innerHTML = "条目0";
Error_count = 0;
Info_count = 0;
bt_mes_count = 0;
}
function BtTranstoAndroid(opr_id,data)
{
var json_str = JSON.stringify(data);
console.log(json_str);
if( typeof(window.EproCmd) != "undefined" && window.EproCmd != null )
{
window.EproCmd.JstoAndroid(opr_id,json_str);
}else if( typeof(es_qthandle) != "undefined" && es_qthandle != null )
{
es_qthandle.JS2QtCmd_Str(opr_id,json_str);
}
}
function BtSwitch()
{
ShowCommMes("点击");
var data = {
"oper_id" : BT_OPER_ID,
"oper_cmd" : BT_OPEN_CMD
};
BtTranstoAndroid(BT_OPER_ID,data)
}
function ShowRWRegDia()
{
BtRWRegDia();
}
function BTCommInit()
{
BTMesgBox = $("#btmesarea")[0];
BTMesgBoxCountLabel = $("#btmescount")[0];
BTMesgBoxErrorCountLable = $("#btmeserrorcount")[0];
console.log("BTCommInit Begin ---");
if(typeof(qchannel) != "undefined" && qchannel != null )
{
es_qthandle = qchannel.objects.es_qthandle;
eshot_qthandle = es_qthandle;
if(es_qthandle != null)
{
console.log("BTCommInit OK ---");
console.log(es_qthandle);
}else{
console.log("BTCommInit ERROR ---");
}
/*
if((typeof(qthandle) != "undefined") && (qthandle != null) )
{
console.log(" QWebChannel qthandle");
qthandle.ShowCommMes.connect(function(mesg,type){
ShowCommMes(mesg,type);
});
qthandle.BTChoice.connect(function(jsoninfo){
console.log("qthandle BTChoice");
BTChoice(jsoninfo);
});
qthandle.BtRecFrame.connect(function(jsoninfo){
console.log("qthandle BtRecFrame");
BtRecFrame(jsoninfo);
});
}*/
if((typeof(eshot_qthandle) != "undefined") && (eshot_qthandle != null) )
{
eshot_qthandle.ShowCommMes.connect(function(mesg,type){
ShowCommMes(mesg,type);
});
eshot_qthandle.LoadJsPlugin.connect(function(file_name,pluginfun){
console.log("eshot_qthandle.LoadJsPlugin ---");
logJsPlugin(file_name,pluginfun);
});
}
}
}
async function BtCmdBtn(cmd)
{
if(BTBtnTask_Busy > 0)
{
ShowCommMes("继续上一个任务。。。",MesgType.MESG_TYPE_WARING);
return ;
}
BTBtnTask_Busy = 1;
if(cmd == 0xFFFF) //显示更多功能
{
BTBtnTask_Busy = 0;
return;
}else if(cmd > 0xFF)
{
var param = ((cmd >> 8) & 0x0FF) - 1;
cmd &= 0xFF;
BtOper_Json.setparam[0] = param;
}
BtOper_Json.opercmd = cmd;
BtGetInputInfo();
console.log("BtCmdBtn")
await SendCmd(true);
BTBtnTask_Busy = 0;
}
async function BtMoreFunBtn()
{
/*
if (typeof(eval(Local_More)) == "function") {
Local_More();
}*/
var html_str = loadPage("./load_test.html");
console.log(html_str);
}
function BtSendBytes(cmd_buf,logflag)
{
var json_cmd = JSON.stringify(cmd_buf);
if( typeof(window.EproCmd) != "undefined" && window.EproCmd != null )
{
window.EproCmd.JSBTSendBytes(json_cmd);
}else if( typeof(qthandle) != "undefined" && qthandle != null )
{
qthandle.JSBTSendBytes(json_cmd);
}
if(logflag)
{
var log_mes = Bytes2Str(cmd_buf);
log_mes = "Tx: "+ log_mes;
ShowCommMes(log_mes,MesgType.MESG_TYPE_INFO);
}
}
function BtRecFrame(fram_json)
{
console.log("BtRecFrame ########");
console.log(fram_json)
var frame = JSON.parse(fram_json);
EShotCmdRecv(frame);
}
function CycleTestBtn()
{
var btnobj = $("#BtCycletest");
if(BtOper_Json.cycletest > 0)
{
BtOper_Json.cycletest = 0;
btnobj.removeClass("layui-btn-warm");
}else{
BtOper_Json.cycletest = 1;
btnobj.addClass("layui-btn-warm");
}
}
function BtGetInputInfo()
{
BtOper_Json.uid = $("#bt_input_uid").val();
BtOper_Json.pwd = $("#bt_input_pwd").val();
BtOper_Json.commaddr = parseInt($("#bt_input_addr").val());
BtOper_Json.setdelay = parseInt($("#bt_input_delay").val());
BtOper_Json.recovertime =parseInt($("#bt_input_delay").val());
BtOper_Json.begaddr = parseInt( $("#bt_input_bgaddr").val());
BtOper_Json.beguid = $("#bt_input_bguid").val();
BtOper_Json.begdelay = parseInt($("#bt_input_bgdelay").val());
BtOper_Json.delaysetp = parseInt($("#bt_input_delaystep").val());
BtOper_Json.rundelay = parseInt($("#bt_input_rundelay").val());
BtOper_Json.amendcount = parseInt($("#bt_input_amendtotal").val());
BtOper_Json.inspectcount = parseInt($("#bt_input_inspecttotal").val());
BtOper_Json.groupcount = parseInt($("#bt_input_groupcount").val());
//BtOper_Json.netcount = parseInt($("#bt_input_netcount").val());
if(BtOper_Json.cycletest > 0)
BtOper_Json.cycletimes = parseInt($("#bt_input_cycletimes").val());
else
BtOper_Json.cycletimes = 1;
//console.log(BtOper_Json);
}
function ShowBtUID(uid)
{
$("#bt_input_uid").val(uid);
}
function ShowBtPWD(pwd)
{
$("#bt_input_pwd").val(pwd);
}
function ShowBtAddr(addr)
{
$("#bt_input_addr").val(addr);
}
function ShowBtDelay(delay)
{
$("#bt_input_delay").val(delay);
}
function ShowBtState(state_str)
{
$("#bt_input_sysstate").val(state_str);
}
function ShowBtAmendV(amendv)
{
$("#bt_input_amendv").val(amendv);
}
function ShowBtFirmware(firmware)
{
$("#bt_input_firmware").val(firmware);
}
function ShowBtBusV(busv)
{
$("#bt_input_busv").val(busv);
}
function SwitchBusMode(type)
{
var btnobj = $("#busmodebtn");
if(type == 1)
{
btnobj.text("关总线");
btnobj.removeClass("layui-btn-normal");
}else{
btnobj.text("开总线");
btnobj.addClass("layui-btn-normal");
}
}
function SwitchHartBeat(type)
{
var btnobj = $("#hartbeatbtn");
if(type == 1)
{
btnobj.text("关心跳");
btnobj.addClass("layui-btn-normal");
}else{
btnobj.text("开心跳");
btnobj.removeClass("layui-btn-normal");
}
}