658 lines
23 KiB
HTML
658 lines
23 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="en">
|
|||
|
|
|||
|
<head>
|
|||
|
<meta charset="UTF-8">
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
|
|||
|
<title>黑山变屏位图</title>
|
|||
|
<link rel="stylesheet" type="text/css" href="../css/mui_min.css" />
|
|||
|
<link rel="stylesheet" type="text/css" href="../css/font_awesome_min.css" />
|
|||
|
<link rel="stylesheet" href="../css/bootstrap_min.css">
|
|||
|
<link rel="stylesheet" type="text/css" href="../css/api.css" />
|
|||
|
<script type="text/javascript" src="../script/api.js"></script>
|
|||
|
<style>
|
|||
|
/* 唐庄变频位图 */
|
|||
|
|
|||
|
.tick {
|
|||
|
/* position: relative; */
|
|||
|
position: absolute;
|
|||
|
display: block;
|
|||
|
top: 10px;
|
|||
|
left: 83px;
|
|||
|
width: 30px;
|
|||
|
height: 30px;
|
|||
|
}
|
|||
|
|
|||
|
.bj {
|
|||
|
width: 1335px;
|
|||
|
height: 100%;
|
|||
|
background: rgb(3, 154, 219);
|
|||
|
background-size: 100%;
|
|||
|
}
|
|||
|
|
|||
|
.groove_dark {
|
|||
|
position: relative;
|
|||
|
background: rgb(31, 110, 160);
|
|||
|
height: 130px;
|
|||
|
border: 1px solid #fff;
|
|||
|
float: left;
|
|||
|
text-align: center;
|
|||
|
padding-top: 20px;
|
|||
|
}
|
|||
|
|
|||
|
.mui-btn {
|
|||
|
background-color: #31D295FF;
|
|||
|
width: 115px;
|
|||
|
height: 45px;
|
|||
|
margin-left: 50px;
|
|||
|
margin-top: 10px;
|
|||
|
border: none;
|
|||
|
border-radius: 5px;
|
|||
|
}
|
|||
|
|
|||
|
.mui-btn2 {
|
|||
|
background-color: rgb(250, 85, 85);
|
|||
|
width: 115px;
|
|||
|
height: 45px;
|
|||
|
margin-left: 36px;
|
|||
|
margin-top: 10px;
|
|||
|
border: none;
|
|||
|
border-radius: 5px;
|
|||
|
}
|
|||
|
|
|||
|
.mui-btn3 {
|
|||
|
background-color: rgb(240, 143, 46);
|
|||
|
width: 115px;
|
|||
|
height: 45px;
|
|||
|
margin-left: 36px;
|
|||
|
margin-top: 10px;
|
|||
|
border: none;
|
|||
|
border-radius: 5px;
|
|||
|
}
|
|||
|
|
|||
|
.row {
|
|||
|
width: 1230px;
|
|||
|
margin: 0 auto;
|
|||
|
padding-top: 10px;
|
|||
|
}
|
|||
|
|
|||
|
.cn_light {
|
|||
|
padding-top: 18px;
|
|||
|
color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.btn {
|
|||
|
background-color: rgb(134, 155, 182);
|
|||
|
color: #fff;
|
|||
|
width: 115px;
|
|||
|
height: 45px;
|
|||
|
border-radius: 5px;
|
|||
|
margin-top: 10px;
|
|||
|
float: right;
|
|||
|
margin-right: 60px;
|
|||
|
border: none;
|
|||
|
}
|
|||
|
|
|||
|
.text1 {
|
|||
|
display: inline-block;
|
|||
|
margin-top: 69px;
|
|||
|
margin-bottom: 33px;
|
|||
|
color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.text2 {
|
|||
|
display: inline-block;
|
|||
|
margin-top: 69px;
|
|||
|
margin-bottom: 33px;
|
|||
|
margin-left: 50px;
|
|||
|
color: #fff;
|
|||
|
}
|
|||
|
</style>
|
|||
|
</head>
|
|||
|
|
|||
|
<body class="bj">
|
|||
|
<div class="" id="content1">
|
|||
|
<div class="row" id="row">
|
|||
|
<div class="col-sm-4 col-xs-3 col-md-2 groove_dark" id="1" onclick="choose()">
|
|||
|
<input id="v1" type="hidden" value="0">
|
|||
|
<!-- 蒙版 -->
|
|||
|
<div class="masking" id="masking1" style="display: none;"></div>
|
|||
|
<!-- 对钩 -->
|
|||
|
<div class="tick" id="tickAc1" style="display: none;">
|
|||
|
<img src="../icon/tickActive.png" style="width: 100%;height: 100%;">
|
|||
|
</div>
|
|||
|
<div class="tick" id="tickun1">
|
|||
|
<img src="../icon/tick.png" style="width: 100%;height: 100%;">
|
|||
|
</div>
|
|||
|
<p id="n" class="cn_light">综合配线屏</p>
|
|||
|
<p id="s" class="cn_light">当前状态:未知</p>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<button class="mui-btn mui-btn-success mui-btn-loading" onclick="chooseall()">全选</button>
|
|||
|
<button class="mui-btn2 mui-btn-success mui-btn-loading" onclick="protection()">布防</button>
|
|||
|
<span class="text1">点击后除选择的为布防,其余的改为撤防</span>
|
|||
|
<span class="text2">点击之后除选择的为撤防,其余的为布防</span>
|
|||
|
<button class="mui-btn3 mui-btn-success mui-btn-loading" onclick="removal()">撤防</button>
|
|||
|
<button class="mui-btn3 mui-btn-success mui-btn-loading" onclick="back()" style="width:50px;height:50px;">
|
|||
|
<img src="../image/back.png" style="width:100%;height:100%;">
|
|||
|
</button>
|
|||
|
</body>
|
|||
|
<script type="text/javascript" src="../script/mui.min.js"></script>
|
|||
|
<script type="text/javascript" src="../script/jquery-1.8.3.js"></script>
|
|||
|
<script type="text/javascript" src="../script/command.js"></script>
|
|||
|
<script type="text/javascript" src="../script/common.js"></script>
|
|||
|
<script type="text/javascript" src="../script/crc.js"></script>
|
|||
|
<script type="text/javascript" src="../script/cache.js"></script>
|
|||
|
|
|||
|
<script type="text/javascript">
|
|||
|
var SocketServerClient = null;
|
|||
|
var db = null;
|
|||
|
var socketManager = null;
|
|||
|
var ipadd = '';
|
|||
|
var port = 0;
|
|||
|
|
|||
|
//全选第一次初始化判断,目的只执行一次
|
|||
|
var cfflag = true;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
apiready = function() {
|
|||
|
db = api.require('db');
|
|||
|
socketManager = api.require('socketManager');
|
|||
|
initSB();
|
|||
|
jian();
|
|||
|
ipconfig();
|
|||
|
};
|
|||
|
|
|||
|
function initSB() {
|
|||
|
select(db, 'SELECT * FROM Sb WHERE Slt = ' + 1, function(ret, err) {
|
|||
|
if (ret.status && ret.data.length > 0) {
|
|||
|
//需要根据设备图片,对设备名称进行完善
|
|||
|
var arr = ret.data;
|
|||
|
var html = "";
|
|||
|
for (var index = 0; index < arr.length; index++) {
|
|||
|
html += '<div class="col-sm-4 col-xs-3 col-md-2 groove_dark" id="' + arr[index].Code + '" onclick="choose()">';
|
|||
|
html += ' <input id="v' + arr[index].Code + '" type="hidden" value="0"> ';
|
|||
|
html += ' <!-- 蒙版 --> ';
|
|||
|
html += ' <div class="masking" id="masking' + arr[index].Code + '" style="display: none;"></div> ';
|
|||
|
html += ' <!-- 对钩 --> ';
|
|||
|
html += ' <div class="tick" id="tickAc' + arr[index].Code + '" style="display: none;"> ';
|
|||
|
html += ' <img src="../icon/tickActive.png" style="width: 100%;height: 100%;"> ';
|
|||
|
html += ' </div> ';
|
|||
|
html += ' <div class="tick" id="tickun' + arr[index].Code + '"> ';
|
|||
|
html += ' <img src="../icon/tick.png" style="width: 100%;height: 100%;"> ';
|
|||
|
html += ' </div> ';
|
|||
|
html += ' <p id="n' + arr[index].Code + '" class="cn_light">' + arr[index].Name + '</p> ';
|
|||
|
if (arr[index].Status == "0") {
|
|||
|
html += ' <p id="s' + arr[index].Code + '" class="cn_light">当前状态:未知</p> ';
|
|||
|
} else if (arr[index].Status == "1") {
|
|||
|
html += ' <p id="s' + arr[index].Code + '" class="cn_light">当前状态:升<i class="fa fa-arrow-up" style="color: red;" aria-hidden="true"></i></p> ';
|
|||
|
} else if (arr[index].Status == "2") {
|
|||
|
html += ' <p id="s' + arr[index].Code + '" class="cn_light">当前状态:降<i class="fa fa-arrow-down" style="color: green;" aria-hidden="true"></i></p> ';
|
|||
|
}
|
|||
|
html += '</div> ';
|
|||
|
}
|
|||
|
$("#row").html(html);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
//返回
|
|||
|
function back() {
|
|||
|
openHtml('frame0', 'frame0.html');
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function ipconfig() {
|
|||
|
//查询ip数据库
|
|||
|
select(db, 'SELECT * FROM Ipconfig;', function(ret, err) {
|
|||
|
var iparray = ret.data;
|
|||
|
if (iparray != '' && iparray != null) {
|
|||
|
ipadd = iparray[0].ipadd;
|
|||
|
port = iparray[0].port;
|
|||
|
} else {
|
|||
|
alert("未初始化配置,请先用管理员账号登录进行初始化配置")
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
//监听
|
|||
|
function jian() {
|
|||
|
api.addEventListener({
|
|||
|
name: 'myEvent'
|
|||
|
}, function(ret, err) {
|
|||
|
if (ret.value.state == 'no') {
|
|||
|
abc();
|
|||
|
}
|
|||
|
}); //放的位置无限制,写在apiready最开始即可
|
|||
|
}
|
|||
|
|
|||
|
function abc() {
|
|||
|
window.location.reload(); //刷新页面
|
|||
|
}
|
|||
|
|
|||
|
function openHtml(name, url, params) {
|
|||
|
api.openWin({
|
|||
|
name: name,
|
|||
|
reload: true,
|
|||
|
url: url,
|
|||
|
pageParam: params
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
//全选
|
|||
|
function chooseall() {
|
|||
|
if (cfflag) {
|
|||
|
$('#row>div').each(function() {
|
|||
|
$(this).css("background", "rgb(31, 110, 160)")
|
|||
|
$(this).children("div:eq(0)").css('display', 'none');
|
|||
|
$(this).children("div:eq(1)").css('display', 'none');
|
|||
|
$(this).children("div:eq(2)").css('display', 'block');
|
|||
|
});
|
|||
|
cfflag = false;
|
|||
|
}
|
|||
|
|
|||
|
$('#row>div').each(function() {
|
|||
|
//未选中
|
|||
|
if ($(this).children('div:eq(1)').css('display') == 'none') {
|
|||
|
$(this).css("background", "#07b32c")
|
|||
|
$(this).children("div:eq(0)").css('display', 'block');
|
|||
|
$(this).children("div:eq(1)").css('display', 'block');
|
|||
|
$(this).children("div:eq(2)").css('display', 'none');
|
|||
|
} else {
|
|||
|
$(this).css("background", "rgb(31, 110, 160)")
|
|||
|
$(this).children("div:eq(0)").css('display', 'none');
|
|||
|
$(this).children("div:eq(1)").css('display', 'none');
|
|||
|
$(this).children("div:eq(2)").css('display', 'block');
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//单独选择
|
|||
|
function choose() {
|
|||
|
cfflag = true;
|
|||
|
|
|||
|
var flag = $(event.currentTarget).children("div:eq(2)").css("display");
|
|||
|
if (flag == 'none') {
|
|||
|
$(event.currentTarget).css("background", "rgb(31, 110, 160)")
|
|||
|
$(event.currentTarget).children("div:eq(0)").css('display', 'none');
|
|||
|
$(event.currentTarget).children("div:eq(1)").css('display', 'none');
|
|||
|
$(event.currentTarget).children("div:eq(2)").css('display', 'block');
|
|||
|
} else {
|
|||
|
$(event.currentTarget).css("background", "#07b32c")
|
|||
|
$(event.currentTarget).children("div:eq(0)").css('display', 'block');
|
|||
|
$(event.currentTarget).children("div:eq(1)").css('display', 'block');
|
|||
|
$(event.currentTarget).children("div:eq(2)").css('display', 'none');
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
var bytes = new Array();
|
|||
|
//字符串转byte数组
|
|||
|
function stringToByte(str) {
|
|||
|
|
|||
|
var len, c;
|
|||
|
bytes.length = 0;
|
|||
|
len = str.length / 2;
|
|||
|
for (var i = 0; i < len; i++) {
|
|||
|
c = str.charCodeAt(i);
|
|||
|
var num1, num2, num3;
|
|||
|
num1 = str.charCodeAt(2 * i);
|
|||
|
num2 = str.charCodeAt(2 * i + 1);
|
|||
|
if ((num1 >= 65) & (num1 <= 70)) {
|
|||
|
|
|||
|
num1 = num1 - 65 + 10
|
|||
|
} else if ((num1 >= 48) & (num1 <= 57)) {
|
|||
|
num1 = num1 - 48
|
|||
|
}
|
|||
|
if ((num2 >= 65) & (num2 <= 70)) {
|
|||
|
|
|||
|
num2 = num2 - 65 + 10
|
|||
|
} else if ((num2 >= 48) & (num2 <= 57)) {
|
|||
|
num2 = num2 - 48
|
|||
|
}
|
|||
|
num3 = num1 * 16 + num2;
|
|||
|
bytes.push(num3);
|
|||
|
}
|
|||
|
return bytes;
|
|||
|
}
|
|||
|
|
|||
|
//字符串转base64
|
|||
|
function encode(str) {
|
|||
|
// 对字符串进行编码
|
|||
|
var encode = encodeURI(str);
|
|||
|
// 对编码的字符串转化base64
|
|||
|
var base64 = btoa(encode);
|
|||
|
return base64;
|
|||
|
}
|
|||
|
|
|||
|
//解码
|
|||
|
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
|||
|
|
|||
|
function base64_decode(input) {
|
|||
|
var output = new Array();
|
|||
|
var chr1, chr2, chr3;
|
|||
|
var enc1, enc2, enc3, enc4;
|
|||
|
var i = 0;
|
|||
|
|
|||
|
var orig_input = input;
|
|||
|
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|||
|
if (orig_input != input)
|
|||
|
alert("Warning! Characters outside Base64 range in input string ignored.");
|
|||
|
if (input.length % 4) {
|
|||
|
alert("Error: Input length is not a multiple of 4 bytes.");
|
|||
|
return "";
|
|||
|
}
|
|||
|
|
|||
|
var j = 0;
|
|||
|
while (i < input.length) {
|
|||
|
|
|||
|
enc1 = keyStr.indexOf(input.charAt(i++));
|
|||
|
enc2 = keyStr.indexOf(input.charAt(i++));
|
|||
|
enc3 = keyStr.indexOf(input.charAt(i++));
|
|||
|
enc4 = keyStr.indexOf(input.charAt(i++));
|
|||
|
|
|||
|
chr1 = (enc1 << 2) | (enc2 >> 4);
|
|||
|
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
|||
|
chr3 = ((enc3 & 3) << 6) | enc4;
|
|||
|
|
|||
|
output[j++] = chr1;
|
|||
|
if (enc3 != 64)
|
|||
|
output[j++] = chr2;
|
|||
|
if (enc4 != 64)
|
|||
|
output[j++] = chr3;
|
|||
|
|
|||
|
}
|
|||
|
return output;
|
|||
|
}
|
|||
|
|
|||
|
var hD = '0123456789ABCDEF';
|
|||
|
|
|||
|
function dec2hex(d) {
|
|||
|
var h = hD.substr(d & 15, 1);
|
|||
|
while (d > 15) {
|
|||
|
d >>= 4;
|
|||
|
h = hD.substr(d & 15, 1) + h;
|
|||
|
}
|
|||
|
return h;
|
|||
|
}
|
|||
|
|
|||
|
const replaceStr1 = (str, index, char) => {
|
|||
|
const strAry = str.split('');
|
|||
|
strAry[index] = char;
|
|||
|
return strAry.join('');
|
|||
|
}
|
|||
|
|
|||
|
//修改状态表数据库
|
|||
|
function updatastate(ide, str) {
|
|||
|
select(db, 'SELECT * FROM Sb WHERE Slt="1" and Code ="' + ide + '"', function(ret, err) {
|
|||
|
//如果查到
|
|||
|
if (ret.data.length > 0) {
|
|||
|
//插入数据库
|
|||
|
execute(db, "update Sb set Status = '" + str + "' where Slt = '1' and Code = '" + ret.data[0].Code + "'", function(ret, err) {})
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
* 显示loading遮罩层
|
|||
|
*/
|
|||
|
function loading() {
|
|||
|
var mask_bg = document.createElement("div");
|
|||
|
mask_bg.id = "mask_bg";
|
|||
|
mask_bg.style.position = "absolute";
|
|||
|
mask_bg.style.top = "0px";
|
|||
|
mask_bg.style.left = "0px";
|
|||
|
mask_bg.style.width = "100%";
|
|||
|
mask_bg.style.height = "130%";
|
|||
|
mask_bg.style.backgroundColor = "#777";
|
|||
|
mask_bg.style.opacity = 0.6;
|
|||
|
mask_bg.style.zIndex = 10001;
|
|||
|
document.body.appendChild(mask_bg);
|
|||
|
var mask_msg = document.createElement("div");
|
|||
|
mask_msg.style.position = "absolute";
|
|||
|
mask_msg.style.top = "45%";
|
|||
|
mask_msg.style.left = "40%";
|
|||
|
mask_msg.style.backgroundColor = "white";
|
|||
|
mask_msg.style.border = "#336699 1px solid";
|
|||
|
mask_msg.style.textAlign = "center";
|
|||
|
mask_msg.style.fontSize = "1.1em";
|
|||
|
mask_msg.style.fontWeight = "bold";
|
|||
|
mask_msg.style.padding = "0.5em 3em 0.5em 3em";
|
|||
|
mask_msg.style.zIndex = 10002;
|
|||
|
mask_msg.innerText = "正在执行,请稍后...";
|
|||
|
mask_bg.appendChild(mask_msg);
|
|||
|
}
|
|||
|
/*
|
|||
|
* 关闭遮罩层
|
|||
|
*/
|
|||
|
function loaded() {
|
|||
|
var mask_bg = document.getElementById("mask_bg");
|
|||
|
if (mask_bg != null) {
|
|||
|
mask_bg.parentNode.removeChild(mask_bg);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//布防
|
|||
|
function protection() {
|
|||
|
loading();
|
|||
|
var str2 = '11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111';
|
|||
|
//根据选择替换字符
|
|||
|
$('#row>div').each(function(index) {
|
|||
|
var temp = $(this).attr("id");
|
|||
|
//未选中
|
|||
|
if ($(this).children('div:eq(1)').css('display') == 'none') {
|
|||
|
$("#s" + temp).html("当前状态:升" + "<i class='fa fa-arrow-up' style='color: red;' aria-hidden='true'></i>");
|
|||
|
updatastate(temp, 1);
|
|||
|
} else {
|
|||
|
str2 = replaceStr1(str2, index, '0')
|
|||
|
$("#s" + temp).html("当前状态:降" + "<i class='fa fa-arrow-down' style='color: green;' aria-hidden='true'></i>");
|
|||
|
updatastate(temp, 2);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
console.log(str2)
|
|||
|
|
|||
|
//sendStr为要发送的数据
|
|||
|
var sendStr = bin_to_hex(str2).slice(0, 2) + " " +
|
|||
|
bin_to_hex(str2).slice(2, 4) + ' ' +
|
|||
|
bin_to_hex(str2).slice(4, 6) + ' ' +
|
|||
|
bin_to_hex(str2).slice(6, 8) + ' ' +
|
|||
|
bin_to_hex(str2).slice(8, 10) + ' ' +
|
|||
|
bin_to_hex(str2).slice(10, 12) + ' ' +
|
|||
|
bin_to_hex(str2).slice(12, 14) + ' ' +
|
|||
|
bin_to_hex(str2).slice(14, 16) + ' ' +
|
|||
|
bin_to_hex(str2).slice(16, 18) + ' ' +
|
|||
|
bin_to_hex(str2).slice(18, 20) + ' ' +
|
|||
|
bin_to_hex(str2).slice(20, 22) + ' ' +
|
|||
|
bin_to_hex(str2).slice(22, 24) + ' ' +
|
|||
|
bin_to_hex(str2).slice(24, 26) + ' ' +
|
|||
|
bin_to_hex(str2).slice(16, 18) + ' ' +
|
|||
|
bin_to_hex(str2).slice(28, 30) + ' ' +
|
|||
|
bin_to_hex(str2).slice(30, 32);
|
|||
|
//需要效验的数据
|
|||
|
var intended = '00 17 03 00 01 ' + sendStr + ' 01 00 00 00 ';
|
|||
|
//组装数据
|
|||
|
var sendmess = 'FE FE FE 7C 00 17 03 00 01 ' + sendStr + '01 00 00 00' + CRCdata(intended) + ' 16';
|
|||
|
var v4 = sendmess.replace(/\s*/g, "");
|
|||
|
createTcp(socketManager, ipadd, port, function(ret, err) {
|
|||
|
if (ret.state == 102) {
|
|||
|
var sid1 = ret.sid;
|
|||
|
var Cr1 = '00 17 03 00 01 ' + sendStr + ' 01 00 00 00 ';
|
|||
|
var v1 = 'FE FE FE 7C 00 17 03 00 01 ' + sendStr + ' 01 00 00 00 ' + CRCdata(intended) + ' 16';
|
|||
|
var v4 = v1.replace(/\s*/g, "").toUpperCase();
|
|||
|
stringToByte(v4);
|
|||
|
var v5 = window.btoa(String.fromCharCode(...new Uint8Array(bytes)))
|
|||
|
witeTcp(socketManager, sid1, v5, function(ret, err) {})
|
|||
|
}
|
|||
|
if (ret.state == 103) {
|
|||
|
var sid1 = ret.sid;
|
|||
|
var output = base64_decode(ret.data).toString();
|
|||
|
var m = output.split(",");
|
|||
|
var v22 = ''
|
|||
|
for (var u = 0; u <= m.length; u++) {
|
|||
|
if (m[u] != undefined) {
|
|||
|
var v20 = Number(m[u])
|
|||
|
var v21 = v20.toString(16).toUpperCase()
|
|||
|
v22 += v21
|
|||
|
}
|
|||
|
}
|
|||
|
close(socketManager, sid1, function(ret, err) {});
|
|||
|
loaded();
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
//撤防
|
|||
|
function removal() {
|
|||
|
loading();
|
|||
|
var str2 = '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|||
|
//根据选择替换字符
|
|||
|
$('#row>div').each(function(index) {
|
|||
|
var temp = $(this).attr("id");
|
|||
|
//未选中
|
|||
|
if ($(this).children('div:eq(1)').css('display') == 'none') {
|
|||
|
|
|||
|
$("#s" + temp).html("当前状态:降" + "<i class='fa fa-arrow-down' style='color: green;' aria-hidden='true'></i>");
|
|||
|
updatastate(temp, 2);
|
|||
|
} else {
|
|||
|
str2 = replaceStr1(str2, index, '1')
|
|||
|
$("#s" + temp).html("当前状态:升" + "<i class='fa fa-arrow-up' style='color: red;' aria-hidden='true'></i>");
|
|||
|
updatastate(temp, 1);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
console.log(str2)
|
|||
|
|
|||
|
//sendStr为要发送的数据
|
|||
|
var sendStr = bin_to_hex(str2).slice(0, 2) + " " +
|
|||
|
bin_to_hex(str2).slice(2, 4) + ' ' +
|
|||
|
bin_to_hex(str2).slice(4, 6) + ' ' +
|
|||
|
bin_to_hex(str2).slice(6, 8) + ' ' +
|
|||
|
bin_to_hex(str2).slice(8, 10) + ' ' +
|
|||
|
bin_to_hex(str2).slice(10, 12) + ' ' +
|
|||
|
bin_to_hex(str2).slice(12, 14) + ' ' +
|
|||
|
bin_to_hex(str2).slice(14, 16) + ' ' +
|
|||
|
bin_to_hex(str2).slice(16, 18) + ' ' +
|
|||
|
bin_to_hex(str2).slice(18, 20) + ' ' +
|
|||
|
bin_to_hex(str2).slice(20, 22) + ' ' +
|
|||
|
bin_to_hex(str2).slice(22, 24) + ' ' +
|
|||
|
bin_to_hex(str2).slice(24, 26) + ' ' +
|
|||
|
bin_to_hex(str2).slice(16, 18) + ' ' +
|
|||
|
bin_to_hex(str2).slice(28, 30) + ' ' +
|
|||
|
bin_to_hex(str2).slice(30, 32);
|
|||
|
//需要效验的数据
|
|||
|
var intended = '00 17 03 00 01 ' + sendStr + ' 00 00 00 00 ';
|
|||
|
//组装数据
|
|||
|
var sendmess = 'FE FE FE 7C 00 17 03 00 01 ' + sendStr + '00 00 00 00' + CRCdata(intended) + ' 16';
|
|||
|
var v4 = sendmess.replace(/\s*/g, "");
|
|||
|
createTcp(socketManager, ipadd, port, function(ret, err) {
|
|||
|
if (ret.state == 102) {
|
|||
|
var sid1 = ret.sid;
|
|||
|
var Cr1 = '00 17 03 00 01 ' + sendStr + ' 00 00 00 00 ';
|
|||
|
var v1 = 'FE FE FE 7C 00 17 03 00 01 ' + sendStr + ' 00 00 00 00 ' + CRCdata(intended) + ' 16';
|
|||
|
var v4 = v1.replace(/\s*/g, "").toUpperCase();
|
|||
|
stringToByte(v4);
|
|||
|
var v5 = window.btoa(String.fromCharCode(...new Uint8Array(bytes)))
|
|||
|
witeTcp(socketManager, sid1, v5, function(ret, err) {})
|
|||
|
}
|
|||
|
if (ret.state == 103) {
|
|||
|
|
|||
|
var sid1 = ret.sid;
|
|||
|
var output = base64_decode(ret.data).toString();
|
|||
|
var m = output.split(",");
|
|||
|
var v22 = ''
|
|||
|
for (var u = 0; u <= m.length; u++) {
|
|||
|
if (m[u] != undefined) {
|
|||
|
var v20 = Number(m[u])
|
|||
|
var v21 = v20.toString(16).toUpperCase()
|
|||
|
v22 += v21
|
|||
|
}
|
|||
|
}
|
|||
|
close(socketManager, sid1, function(ret, err) {});
|
|||
|
loaded();
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
//二进制转为十六进制
|
|||
|
function bin_to_hex(str) {
|
|||
|
let hex_array = [{
|
|||
|
key: 0,
|
|||
|
val: "0000"
|
|||
|
}, {
|
|||
|
key: 1,
|
|||
|
val: "0001"
|
|||
|
}, {
|
|||
|
key: 2,
|
|||
|
val: "0010"
|
|||
|
}, {
|
|||
|
key: 3,
|
|||
|
val: "0011"
|
|||
|
}, {
|
|||
|
key: 4,
|
|||
|
val: "0100"
|
|||
|
}, {
|
|||
|
key: 5,
|
|||
|
val: "0101"
|
|||
|
}, {
|
|||
|
key: 6,
|
|||
|
val: "0110"
|
|||
|
}, {
|
|||
|
key: 7,
|
|||
|
val: "0111"
|
|||
|
}, {
|
|||
|
key: 8,
|
|||
|
val: "1000"
|
|||
|
}, {
|
|||
|
key: 9,
|
|||
|
val: "1001"
|
|||
|
}, {
|
|||
|
key: 'a',
|
|||
|
val: "1010"
|
|||
|
}, {
|
|||
|
key: 'b',
|
|||
|
val: "1011"
|
|||
|
}, {
|
|||
|
key: 'c',
|
|||
|
val: "1100"
|
|||
|
}, {
|
|||
|
key: 'd',
|
|||
|
val: "1101"
|
|||
|
}, {
|
|||
|
key: 'e',
|
|||
|
val: "1110"
|
|||
|
}, {
|
|||
|
key: 'f',
|
|||
|
val: "1111"
|
|||
|
}]
|
|||
|
let value = ''
|
|||
|
let list = []
|
|||
|
if (str.length % 4 !== 0) {
|
|||
|
let a = "0000"
|
|||
|
let b = a.substring(0, 4 - str.length % 4)
|
|||
|
str = b.concat(str)
|
|||
|
}
|
|||
|
while (str.length > 4) {
|
|||
|
list.push(str.substring(0, 4))
|
|||
|
str = str.substring(4);
|
|||
|
}
|
|||
|
list.push(str)
|
|||
|
for (let i = 0; i < list.length; i++) {
|
|||
|
for (let j = 0; j < hex_array.length; j++) {
|
|||
|
if (list[i] == hex_array[j].val) {
|
|||
|
value = value.concat(hex_array[j].key)
|
|||
|
break
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return value
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
</html>
|