修改页面逻辑 增加js
This commit is contained in:
parent
4110e714c0
commit
318f6c1190
350
pages/main.stml
350
pages/main.stml
|
@ -25,28 +25,58 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {dbUtils} from '../script/dbUtils.js'
|
import {dbUtils} from '../script/dbUtils.js'
|
||||||
|
import {serialPortUtil} from '../script/serialPortUtil.js'
|
||||||
|
import {CrcUt} from '../script/CRCUtils.js'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'main',
|
name: 'main',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
listData:[]
|
listData:[],
|
||||||
|
stopRead:true,
|
||||||
|
sendStatus:true,
|
||||||
|
dianliuInte:null,
|
||||||
|
jidianqiInte:null,
|
||||||
|
dianliu1:null,
|
||||||
|
dianliu2:null,
|
||||||
|
dianliu3:null,
|
||||||
|
dianliu4:null,
|
||||||
|
map:new Map(),
|
||||||
|
mapBefore:new Map(),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
//初始化
|
//初始化
|
||||||
apiready(){
|
apiready(){
|
||||||
const vm = this;
|
const vm = this
|
||||||
var db = api.require('db');
|
api.addEventListener({
|
||||||
db.openDatabase({
|
name: 'myEvent'
|
||||||
name: 'test',
|
}, function(ret, err) {
|
||||||
path: 'fs://Database/cqjiouzai.db'
|
if(ret.value){
|
||||||
}, function(ret, err) {
|
vm.initAll()
|
||||||
if (ret.status) {
|
}
|
||||||
//初始化设备表
|
});
|
||||||
vm.initSb(db);
|
vm.initAll()
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
initAll(){
|
||||||
|
const vm = this
|
||||||
|
clearInterval(vm.data.jidianqiInte)
|
||||||
|
clearInterval(vm.data.dianliuInte)
|
||||||
|
clearInterval(vm.data.dianliu1)
|
||||||
|
clearInterval(vm.data.dianliu2)
|
||||||
|
clearInterval(vm.data.dianliu3)
|
||||||
|
clearInterval(vm.data.dianliu4)
|
||||||
|
var db = api.require('db');
|
||||||
|
db.openDatabase({
|
||||||
|
name: 'test',
|
||||||
|
path: 'fs://Database/cqjiouzai.db'
|
||||||
|
}, function(ret, err) {
|
||||||
|
if (ret.status) {
|
||||||
|
//初始化设备表
|
||||||
|
vm.initSb(db);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
//跳转到设置页面
|
//跳转到设置页面
|
||||||
handleToSet(){
|
handleToSet(){
|
||||||
api.openWin({
|
api.openWin({
|
||||||
|
@ -71,24 +101,305 @@ export default {
|
||||||
var data = ret.data;
|
var data = ret.data;
|
||||||
if(undefined != data && data.length > 0){
|
if(undefined != data && data.length > 0){
|
||||||
vm.data.listData = data;
|
vm.data.listData = data;
|
||||||
|
var m = new Map()
|
||||||
|
vm.data.listData.forEach(l=>{
|
||||||
|
m.set(l.sbId,l.current)
|
||||||
|
})
|
||||||
|
vm.data.map = m;
|
||||||
}
|
}
|
||||||
if (ret.status == false || err.status == false) {
|
if (ret.status == false || err.status == false) {
|
||||||
dbUtils.execute(db, 'CREATE TABLE Sb(id varchar(50), circuitName varchar(50), current varchar(20), typeName varchar(30),isTypeOpen int(10))', function(ret, err) {
|
dbUtils.execute(db, 'CREATE TABLE Sb(id varchar(50), sbId varchar(10), circuitName varchar(50), current varchar(20), typeName varchar(30),isTypeOpen int(10))', function(ret, err) {
|
||||||
if (ret.status == true) {
|
if (ret.status == true) {
|
||||||
dbUtils.execute(db, "INSERT INTO Sb (Id,circuitName,current,typeName,isTypeOpen) VALUES ('1','1','3.21','高压风冷',1);", function(ret, err) {})
|
dbUtils.execute(db, "INSERT INTO Sb (Id,sbId,circuitName,current,typeName,isTypeOpen) VALUES ('1','0B','1','3.21','高压风冷',1);", function(ret, err) {})
|
||||||
dbUtils.execute(db, "INSERT INTO Sb (Id,circuitName,current,typeName,isTypeOpen) VALUES ('2','2','3.21','中压风冷',1);", function(ret, err) {})
|
dbUtils.execute(db, "INSERT INTO Sb (Id,sbId,circuitName,current,typeName,isTypeOpen) VALUES ('2','0C','2','3.21','中压风冷',1);", function(ret, err) {})
|
||||||
dbUtils.execute(db, "INSERT INTO Sb (Id,circuitName,current,typeName,isTypeOpen) VALUES ('3','3','3.21','低压风冷',0);", function(ret, err) {})
|
dbUtils.execute(db, "INSERT INTO Sb (Id,sbId,circuitName,current,typeName,isTypeOpen) VALUES ('3','0D','3','3.21','低压风冷',1);", function(ret, err) {})
|
||||||
dbUtils.execute(db, "INSERT INTO Sb (Id,circuitName,current,typeName,isTypeOpen) VALUES ('4','4','3.21','闭锁调压',0);", function(ret, err) {})
|
dbUtils.execute(db, "INSERT INTO Sb (Id,sbId,circuitName,current,typeName,isTypeOpen) VALUES ('4','0E','4','3.21','闭锁调压',1);", function(ret, err) {})
|
||||||
console.log('创建设备表成功');
|
console.log('创建设备表成功');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log('设备表已存在');
|
// console.log('设备表已存在');
|
||||||
|
vm.activeStatus()
|
||||||
// dbUtils.execute(db, "DROP TABLE Sb", function(ret, err) {
|
// dbUtils.execute(db, "DROP TABLE Sb", function(ret, err) {
|
||||||
// console.log(JSON.stringify(ret))
|
// console.log(JSON.stringify(ret))
|
||||||
// })
|
// })
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
dbUtils.select(db, 'SELECT * FROM Log', function(ret, err) {
|
||||||
|
if (ret.status == false || err.status == false) {
|
||||||
|
dbUtils.execute(db, 'CREATE TABLE Log(action varchar(20), param varchar(100), time varchar(30), remark varchar(50))', function(ret, err) {
|
||||||
|
if (ret.status == true) {
|
||||||
|
console.log('创建日志表成功');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// console.log('日志表已存在');
|
||||||
|
// dbUtils.execute(db, "DROP TABLE Log", function(ret, err) {
|
||||||
|
// if(ret.status){
|
||||||
|
// console.log("删除日志表成功");
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
activeStatus(){
|
||||||
|
const vm = this;
|
||||||
|
//初始化串口
|
||||||
|
serialPortUtil.initSerial();
|
||||||
|
serialPortUtil.closeSerial({ index: 0 });
|
||||||
|
serialPortUtil.openSerial({ index: 0, port: '/dev/ttyS0', baudRate: '9600'}, function (ret, err) {})
|
||||||
|
serialPortUtil.addEventListener({ index: 0, revType: 'hex', stopBits:1, flowCon:2 }, function (ret, err) {
|
||||||
|
// console.log(JSON.stringify(ret));
|
||||||
|
var data = vm.data.listData;
|
||||||
|
var leng = data.length;
|
||||||
|
if (ret.dataHex.startsWith("FE0101") && ret.dataHex.length > 8) {
|
||||||
|
// console.log("读取设备状态");
|
||||||
|
var jidianqi = ret.dataHex.substr(6, 2);
|
||||||
|
jidianqi = parseInt(jidianqi, 16).toString(2);
|
||||||
|
vm.data.jidianqi = vm.forJidianqi(jidianqi);
|
||||||
|
jidianqi = vm.data.jidianqi;
|
||||||
|
|
||||||
|
// console.log("************main:"+jidianqi+"************");
|
||||||
|
vm.data.mapBefore.set("0B",jidianqi[3] === '1');
|
||||||
|
vm.data.mapBefore.set("0C",jidianqi[2] === '1');
|
||||||
|
vm.data.mapBefore.set("0D",jidianqi[1] === '1');
|
||||||
|
vm.data.mapBefore.set("0E",jidianqi[0] === '1');
|
||||||
|
for(var j=0;j<jidianqi.length;j++){
|
||||||
|
data[3-j].isTypeOpen = jidianqi[j]
|
||||||
|
}
|
||||||
|
vm.data.listData = data;
|
||||||
|
}else{
|
||||||
|
// console.log("读取设备电流");
|
||||||
|
if(ret.evenType === 'onDataReceived'){
|
||||||
|
vm.data.sendStatus=true
|
||||||
|
for(var i=0;i<leng; i++){
|
||||||
|
if(data[i] && data[i].sbId.toUpperCase() === ret.dataHex.substr(0,2).toUpperCase()){
|
||||||
|
var current = parseInt(ret.dataHex.substr(10,4),16)/100;
|
||||||
|
var sett = vm.data.map.get(data[i].sbId);
|
||||||
|
data[i].current = current
|
||||||
|
var sbId = data[i].sbId;
|
||||||
|
var beforeStatus = vm.data.mapBefore.get(sbId)
|
||||||
|
if(current >= sett){
|
||||||
|
switch(sbId){
|
||||||
|
case '0B':
|
||||||
|
// 如果之前是关闭状态,则打开
|
||||||
|
if(!beforeStatus){
|
||||||
|
vm.controle1(true);
|
||||||
|
vm.saveLog(data[i].typeName+"打开","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '0C':
|
||||||
|
if(!beforeStatus){
|
||||||
|
vm.controle2(true);
|
||||||
|
vm.saveLog(data[i].typeName+"打开","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '0D':
|
||||||
|
if(!beforeStatus){
|
||||||
|
vm.controle3(true);
|
||||||
|
vm.saveLog(data[i].typeName+"打开","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '0E':
|
||||||
|
if(!beforeStatus){
|
||||||
|
vm.controle4(true);
|
||||||
|
vm.saveLog(data[i].typeName+"打开","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
switch(sbId){
|
||||||
|
case '0B':
|
||||||
|
// 如果之前是打开状态,则关闭
|
||||||
|
if(beforeStatus){
|
||||||
|
vm.controle1(false);
|
||||||
|
vm.saveLog(data[i].typeName+"关闭","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '0C':
|
||||||
|
if(beforeStatus){
|
||||||
|
vm.controle2(false);
|
||||||
|
vm.saveLog(data[i].typeName+"关闭","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '0D':
|
||||||
|
if(beforeStatus){
|
||||||
|
vm.controle3(false);
|
||||||
|
vm.saveLog(data[i].typeName+"关闭","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '0E':
|
||||||
|
if(beforeStatus){
|
||||||
|
vm.controle4(false);
|
||||||
|
vm.saveLog(data[i].typeName+"关闭","实时电流"+current+"A,配置电流"+sett+"A","")
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vm.data.listData = data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
vm.data.jidianqiInte=setInterval(function () {
|
||||||
|
if(vm.data.stopRead){
|
||||||
|
vm.sendMsg('FE 01 00 00 00 08 29 C3');
|
||||||
|
}
|
||||||
|
},2000)
|
||||||
|
|
||||||
|
// var cmdArr = [];
|
||||||
|
// vm.data.listData.forEach(s=>{
|
||||||
|
// var cmd = s.sbId+" 03 00 48 00 02";
|
||||||
|
// cmd = cmd + " " + CrcUt.GetCrc(cmd);
|
||||||
|
// cmdArr.push(cmd);
|
||||||
|
// })
|
||||||
|
api.showProgress({
|
||||||
|
title: '正在初始化...',
|
||||||
|
text: '请稍后...',
|
||||||
|
modal: true
|
||||||
|
});
|
||||||
|
|
||||||
|
vm.data.dianliu1=setInterval(function () {
|
||||||
|
if(vm.data.stopRead){
|
||||||
|
vm.data.stopRead = false
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.sendMsg("0B 03 00 48 00 02 " + CrcUt.GetCrc("0B 03 00 48 00 02"));
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.data.stopRead = true
|
||||||
|
}, 80);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
},500)
|
||||||
|
vm.data.dianliu2=setInterval(function () {
|
||||||
|
if(vm.data.stopRead){
|
||||||
|
vm.data.stopRead = false
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.sendMsg("0C 03 00 48 00 02 " + CrcUt.GetCrc("0C 03 00 48 00 02"));
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.data.stopRead = true
|
||||||
|
}, 80);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
},1000)
|
||||||
|
vm.data.dianliu3=setInterval(function () {
|
||||||
|
if(vm.data.stopRead){
|
||||||
|
vm.data.stopRead = false
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.sendMsg("0D 03 00 48 00 02 " + CrcUt.GetCrc("0D 03 00 48 00 02"));
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.data.stopRead = true
|
||||||
|
}, 80);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
},1500)
|
||||||
|
vm.data.dianliu4=setInterval(function () {
|
||||||
|
if(vm.data.stopRead){
|
||||||
|
vm.data.stopRead = false
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.sendMsg("0E 03 00 48 00 02 " + CrcUt.GetCrc("0E 03 00 48 00 02"));
|
||||||
|
setTimeout(() => {
|
||||||
|
vm.data.stopRead = true
|
||||||
|
}, 80);
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
},2000)
|
||||||
|
|
||||||
|
// vm.data.dianliuInte=setInterval(function () {
|
||||||
|
// vm.data.listData.forEach(s=>{
|
||||||
|
// var cmd = s.sbId+" 03 00 48 00 02";
|
||||||
|
// cmd = cmd + " " + CrcUt.GetCrc(cmd);
|
||||||
|
// if(vm.data.sendStatus && vm.data.stopRead){
|
||||||
|
// vm.data.sendStatus = false
|
||||||
|
// vm.sendMsg(cmd)
|
||||||
|
// console.log(cmd);
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// }, 2000);
|
||||||
|
setTimeout(() => {
|
||||||
|
api.hideProgress();
|
||||||
|
}, 3000);
|
||||||
|
},
|
||||||
|
sendMsg(cmd){
|
||||||
|
let ret = serialPortUtil.send({
|
||||||
|
index: 0,
|
||||||
|
sendType: 'hex',
|
||||||
|
data: cmd
|
||||||
|
});
|
||||||
|
},
|
||||||
|
saveLog(action,param,remark){
|
||||||
|
const vm = this
|
||||||
|
var db = api.require('db');
|
||||||
|
dbUtils.execute(db, "INSERT INTO Log (action,param,time,remark) VALUES ('"+action+"','"+param+"','"+vm.currTimeFn(new Date())+"','"+remark+"');", function(ret, err) {
|
||||||
|
if(ret.status == false || err.status == false){
|
||||||
|
console.log(JSON.stringify(err));
|
||||||
|
// api.toast({
|
||||||
|
// msg: '日志保存失败',
|
||||||
|
// duration: 2000,
|
||||||
|
// location: 'middle'
|
||||||
|
// });
|
||||||
|
}else{
|
||||||
|
// api.toast({
|
||||||
|
// msg: '日志保存成功',
|
||||||
|
// duration: 2000,
|
||||||
|
// location: 'middle'
|
||||||
|
// });
|
||||||
|
console.log('日志保存成功');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
controle1(status){
|
||||||
|
console.log("controle1"+status);
|
||||||
|
const vm = this;
|
||||||
|
vm.data.stopRead = false;
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.sendMsg(status?'FE 05 00 00 FF 00 98 35':'FE 05 00 00 00 00 D9 C5');
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.data.stopRead = true;
|
||||||
|
}, 50)
|
||||||
|
}, 80)
|
||||||
|
},
|
||||||
|
controle2(status){
|
||||||
|
console.log("controle2"+(status?'打开':'关闭'));
|
||||||
|
const vm = this;
|
||||||
|
vm.data.stopRead = false;
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.sendMsg(status?'FE 05 00 01 FF 00 C9 F5':'FE 05 00 01 00 00 88 05');
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.data.stopRead = true;
|
||||||
|
}, 50)
|
||||||
|
}, 80)
|
||||||
|
},
|
||||||
|
controle3(status){
|
||||||
|
console.log("controle3"+status);
|
||||||
|
const vm = this;
|
||||||
|
vm.data.stopRead = false;
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.sendMsg(status?'FE 05 00 02 FF 00 39 F5':'FE 05 00 02 00 00 78 05');
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.data.stopRead = true;
|
||||||
|
}, 50)
|
||||||
|
}, 80)
|
||||||
|
},
|
||||||
|
controle4(status){
|
||||||
|
console.log("controle4"+status);
|
||||||
|
const vm = this;
|
||||||
|
vm.data.stopRead = false;
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.sendMsg(status?'FE 05 00 03 FF 00 68 35':'FE 05 00 03 00 00 29 C5');
|
||||||
|
setTimeout(function () {
|
||||||
|
vm.data.stopRead = true;
|
||||||
|
}, 50)
|
||||||
|
}, 80)
|
||||||
|
},
|
||||||
|
forJidianqi(jidianqi) {
|
||||||
|
if (jidianqi.length != 4) {
|
||||||
|
var l = 4 - jidianqi.length
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
jidianqi = '0' + jidianqi;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return jidianqi;
|
||||||
},
|
},
|
||||||
// 获取当前时间字符串
|
// 获取当前时间字符串
|
||||||
currTimeFn(_date) {
|
currTimeFn(_date) {
|
||||||
|
@ -98,7 +409,8 @@ export default {
|
||||||
let _hour = _date.getHours() < 10 ? '0' + _date.getHours() : _date.getHours();
|
let _hour = _date.getHours() < 10 ? '0' + _date.getHours() : _date.getHours();
|
||||||
let _minutes = _date.getMinutes() < 10 ? '0' + _date.getMinutes() : _date.getMinutes();
|
let _minutes = _date.getMinutes() < 10 ? '0' + _date.getMinutes() : _date.getMinutes();
|
||||||
let _seconds = _date.getSeconds() < 10 ? '0' + _date.getSeconds() : _date.getSeconds();
|
let _seconds = _date.getSeconds() < 10 ? '0' + _date.getSeconds() : _date.getSeconds();
|
||||||
return _year + "." + _month + "." + _day + " " + _hour + ":" + _minutes + ":" + _seconds;
|
// return _year + "." + _month + "." + _day + " " + _hour + ":" + _minutes + ":" + _seconds;
|
||||||
|
return _year + "." + _month + "." + _day + " " + _hour + ":" + _minutes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<view class="table_title">
|
<view class="table_title">
|
||||||
<text class="table_title_item_one">动作</text>
|
<text class="table_title_item_one">动作</text>
|
||||||
<text class="table_title_item_two">实时参数</text>
|
<text class="table_title_item_two">实时参数</text>
|
||||||
<text class="table_title_item_one">时间</text>
|
<text class="table_title_item_three">时间</text>
|
||||||
</view>
|
</view>
|
||||||
<scroll-view
|
<scroll-view
|
||||||
class="history_list"
|
class="history_list"
|
||||||
|
@ -19,51 +19,68 @@
|
||||||
class="history_list_inline"
|
class="history_list_inline"
|
||||||
v-for="item in listData"
|
v-for="item in listData"
|
||||||
>
|
>
|
||||||
<text class="history_list_inline_item_one">{{item.name}}</text>
|
<text class="history_list_inline_item_one">{{item.action}}</text>
|
||||||
<text class="history_list_inline_item_two">111</text>
|
<text class="history_list_inline_item_two">{{item.param}}</text>
|
||||||
<text class="history_list_inline_item_one">111</text>
|
<text class="history_list_inline_item_three">{{item.time}}</text>
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import {dbUtils} from '../../script/dbUtils.js'
|
||||||
export default {
|
export default {
|
||||||
name: 'history',
|
name: 'history',
|
||||||
data() {
|
data() {
|
||||||
return{
|
return{
|
||||||
listData:[
|
listData:[
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'11.15 13:28:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷关闭',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13:25:55'},
|
||||||
{name:'1'},
|
// {name:'低压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.25:55'},
|
||||||
{name:'1'},
|
// {name:'中压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.23:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.21:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.20:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'11.15 13:28:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷关闭',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13:25:55'},
|
||||||
{name:'1'},
|
// {name:'低压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.25:55'},
|
||||||
{name:'1'},
|
// {name:'中压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.23:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.21:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.20:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'11.15 13:28:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷关闭',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13:25:55'},
|
||||||
{name:'1'},
|
// {name:'低压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.25:55'},
|
||||||
{name:'1'},
|
// {name:'中压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.23:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.21:55'},
|
||||||
{name:'1'},
|
// {name:'高压风冷开启',cmd:'A路电流(5.2A) B路电流(0.2A) C路电流(2.4A) D路电流(1.5A)',time:'12.15 13.20:55'},
|
||||||
{name:'1'},
|
|
||||||
{name:'1'}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
apiready(){
|
apiready(){
|
||||||
|
const vm = this;
|
||||||
|
var db = api.require('db');
|
||||||
|
db.openDatabase({
|
||||||
|
name: 'test',
|
||||||
|
path: 'fs://Database/cqjiouzai.db'
|
||||||
|
}, function(ret, err) {
|
||||||
|
if (ret.status) {
|
||||||
|
dbUtils.select(db, 'SELECT * FROM Log', function(ret, err) {
|
||||||
|
var data = ret.data;
|
||||||
|
if(undefined != data && data.length > 0){
|
||||||
|
vm.data.listData = data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
//返回首页
|
//返回首页
|
||||||
handleBackIndex(){
|
handleBackIndex(){
|
||||||
api.navigateBack({
|
api.closeWin();
|
||||||
delta: 2,
|
api.sendEvent({
|
||||||
|
name: 'myEvent',
|
||||||
|
extra: {
|
||||||
|
close: 'close',
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//下拉刷新
|
//下拉刷新
|
||||||
|
@ -80,7 +97,7 @@ export default {
|
||||||
<style>
|
<style>
|
||||||
.history_wrap{
|
.history_wrap{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100vh;
|
height: 100%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
background-image: url("../../image/login.png");
|
background-image: url("../../image/login.png");
|
||||||
|
@ -114,19 +131,28 @@ export default {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.table_title_item_one{
|
.table_title_item_one{
|
||||||
font-size: 36px;
|
font-size: 30px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
border: 1px solid #ffffff;
|
border: 1px solid #ffffff;
|
||||||
width: 20%;
|
width: 17%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.table_title_item_two{
|
.table_title_item_two{
|
||||||
font-size: 36px;
|
font-size: 30px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
border: 1px solid #ffffff;
|
border: 1px solid #ffffff;
|
||||||
width: 60%;
|
width: 64%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.table_title_item_three{
|
||||||
|
font-size: 30px;
|
||||||
|
color: #ffffff;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
width: 19%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -142,18 +168,26 @@ export default {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.history_list_inline_item_one{
|
.history_list_inline_item_one{
|
||||||
font-size: 32px;
|
font-size: 22px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
border: 1px solid #ffffff;
|
border: 1px solid #ffffff;
|
||||||
width: 20%;
|
width: 17%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
.history_list_inline_item_two{
|
.history_list_inline_item_two{
|
||||||
font-size: 32px;
|
font-size: 22px;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
border: 1px solid #ffffff;
|
border: 1px solid #ffffff;
|
||||||
width: 60%;
|
width: 64%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
.history_list_inline_item_three{
|
||||||
|
font-size: 22px;
|
||||||
|
color: #ffffff;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
width: 19%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,38 +7,37 @@
|
||||||
class="list_inline"
|
class="list_inline"
|
||||||
v-for="(item,index) in setList"
|
v-for="(item,index) in setList"
|
||||||
>
|
>
|
||||||
<view class="inline_item">
|
<!-- <view class="inline_item">
|
||||||
<text class="item_label">{{item.typeName}}:</text>
|
<text class="item_label">{{item.typeName}}:</text>
|
||||||
<view class="item_content">
|
<view class="item_content">
|
||||||
<view class="switch_box"><switch class="switch" index={index} :checked="item.isTypeOpen==='1'" @change="handleSwitchChange" /></view>
|
<view class="switch_box"><switch class="switch" index={index} :checked="item.isTypeOpen==='1'" @change="handleSwitchChange" /></view>
|
||||||
<input class="input" type="text" :disabled="item.isTypeOpen==='0'" placeholder="请输入电流值" />
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
<view class="inline_item">
|
<view class="inline_item">
|
||||||
<text class="item_label">电流通道:</text>
|
<text class="item_label">电流通道:</text>
|
||||||
<view class="item_content">
|
<view class="item_content">
|
||||||
<text class="item_label" @click="handleSelectChange(index)">{{item.circuitName}}路电流</text>
|
<text class="item_label" @click="handleSelectChange(index,item)">{{item.circuitName}}路电流</text>
|
||||||
|
<input class="input" v-model="item.current" type="number" keyboard-type="decimal" confirm-type="done" :disabled="item.isTypeOpen==='0'" placeholder="请输入电流值" />
|
||||||
|
<text class="item_label">A</text>
|
||||||
|
<button class="btn" style="display:inline" @click="setDianliu(item)">保存</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<text class="set_btn" @click="handleSubmitSet">保存参数</text>
|
<!-- <text class="set_btn" @click="handleSubmitSet">保存参数</text> -->
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {dbUtils} from '../../script/dbUtils.js'
|
import {dbUtils} from '../../script/dbUtils.js'
|
||||||
|
import {serialPortUtil} from '../../script/serialPortUtil.js'
|
||||||
|
import {CrcUt} from '../../script/CRCUtils.js'
|
||||||
let UIMultiSelector = api.require("UIMultiSelector");
|
let UIMultiSelector = api.require("UIMultiSelector");
|
||||||
export default {
|
export default {
|
||||||
name: 'set',
|
name: 'set',
|
||||||
data() {
|
data() {
|
||||||
return{
|
return{
|
||||||
setList:[
|
setList:[],
|
||||||
// {isTypeOpen:false,setVal:'',circuitName:'请选择',typeName:'高压风冷'},
|
|
||||||
// {isTypeOpen:true,setVal:'',circuitName:'请选择',typeName:'中压风冷'},
|
|
||||||
// {isTypeOpen:false,setVal:'',circuitName:'请选择',typeName:'低压风冷'},
|
|
||||||
// {isTypeOpen:true,setVal:'',circuitName:'请选择',typeName:'闭锁调压'},
|
|
||||||
],
|
|
||||||
//电流通道列表
|
//电流通道列表
|
||||||
currentList: [
|
currentList: [
|
||||||
{
|
{
|
||||||
|
@ -62,45 +61,38 @@ export default {
|
||||||
},
|
},
|
||||||
apiready(){
|
apiready(){
|
||||||
const vm = this;
|
const vm = this;
|
||||||
var db = api.require('db');
|
vm.initDb()
|
||||||
db.openDatabase({
|
|
||||||
name: 'test',
|
|
||||||
path: 'fs://Database/cqjiouzai.db'
|
|
||||||
}, function(ret, err) {
|
|
||||||
if (ret.status) {
|
|
||||||
//初始化设备表
|
|
||||||
vm.initSb(db);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
//初始化设备表
|
initDb(){
|
||||||
initSb(db) {
|
|
||||||
const vm = this;
|
const vm = this;
|
||||||
dbUtils.select(db, 'SELECT * FROM Sb', function(ret, err) {
|
var db = api.require('db');
|
||||||
var data = ret.data;
|
db.openDatabase({
|
||||||
if(undefined != data && data.length > 0){
|
name: 'test',
|
||||||
vm.data.setList = data;
|
path: 'fs://Database/cqjiouzai.db'
|
||||||
|
}, function(ret, err) {
|
||||||
|
if (ret.status) {
|
||||||
|
dbUtils.select(db, 'SELECT * FROM Sb', function(ret, err) {
|
||||||
|
var data = ret.data;
|
||||||
|
if(undefined != data && data.length > 0){
|
||||||
|
vm.data.setList = data;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//返回首页
|
//返回首页
|
||||||
handleBackIndex(){
|
handleBackIndex(){
|
||||||
api.navigateBack({
|
api.closeWin();
|
||||||
delta: 2,
|
api.sendEvent({
|
||||||
|
name: 'myEvent',
|
||||||
|
extra: {
|
||||||
|
close: 'close',
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
//switch开关选择
|
|
||||||
handleSwitchChange(e){
|
|
||||||
let _index = e.target.attributes.index;
|
|
||||||
this.setList.forEach((item,index) => {
|
|
||||||
if(index === _index){
|
|
||||||
item.isTypeOpen = e.detail.value?'1':'0';
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
//下拉选择
|
//下拉选择
|
||||||
handleSelectChange(selectNum) {
|
handleSelectChange(selectNum,item) {
|
||||||
let _setList = this.data.setList;
|
let _setList = this.data.setList;
|
||||||
//设置下拉选项
|
//设置下拉选项
|
||||||
UIMultiSelector.open({
|
UIMultiSelector.open({
|
||||||
|
@ -165,10 +157,43 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
setDianliu(item){
|
||||||
|
var db = api.require('db');
|
||||||
|
var sql = "update Sb set current = '"+ item.current+"' where id ='"+ item.id +"'";
|
||||||
|
dbUtils.execute(db, sql, function(ret, err) {
|
||||||
|
var msg = '更新成功'
|
||||||
|
if(!ret.status){
|
||||||
|
msg = '更新失败'
|
||||||
|
}
|
||||||
|
api.toast({
|
||||||
|
msg: msg,
|
||||||
|
duration: 2000,
|
||||||
|
location: 'middle'
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
//保存参数
|
//保存参数
|
||||||
handleSubmitSet(){
|
handleSubmitSet(){
|
||||||
console.log("保存参数");
|
var cmdArr = [];
|
||||||
}
|
const vm = this;
|
||||||
|
this.data.setList.forEach(s=>{
|
||||||
|
var cmd = s.sbId+" 03 00 48 00 02";
|
||||||
|
cmd = cmd + " " + CrcUt.GetCrc(cmd);
|
||||||
|
cmdArr.push(cmd);
|
||||||
|
})
|
||||||
|
setInterval(() => {
|
||||||
|
if(vm.data.stopRead){
|
||||||
|
vm.sendMsg('FE 01 00 00 00 08 29 C3');
|
||||||
|
}
|
||||||
|
},2000)
|
||||||
|
},
|
||||||
|
sendMsg(cmd){
|
||||||
|
let ret = serialPortUtil.send({
|
||||||
|
index: 0,
|
||||||
|
sendType: 'hex',
|
||||||
|
data: cmd
|
||||||
|
});
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -193,7 +218,7 @@ export default {
|
||||||
left: 20px;
|
left: 20px;
|
||||||
}
|
}
|
||||||
.set_list{
|
.set_list{
|
||||||
margin-top: 80px;
|
margin-top: 60px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
@ -204,7 +229,7 @@ export default {
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
.inline_item{
|
.inline_item{
|
||||||
margin: 0 40px;
|
margin: 0 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -234,11 +259,21 @@ export default {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
border: 1px solid silver;
|
border: 1px solid silver;
|
||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
height: 60px;
|
height: 100px;
|
||||||
width: 200px;
|
width: 140px;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
}
|
}
|
||||||
|
.btn {
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-size: 32px;
|
||||||
|
width: 90px;
|
||||||
|
height: 100px;
|
||||||
|
margin-left: 20px;
|
||||||
|
color: #fff;
|
||||||
|
background-image: linear-gradient(to bottom, #00b, #006);
|
||||||
|
}
|
||||||
.set_btn{
|
.set_btn{
|
||||||
font-size: 40px;
|
font-size: 40px;
|
||||||
color: #5199FF;
|
color: #5199FF;
|
||||||
|
|
|
@ -0,0 +1,159 @@
|
||||||
|
export {
|
||||||
|
crcUtils
|
||||||
|
}
|
||||||
|
var CRC = {};
|
||||||
|
|
||||||
|
var crcUtils = {
|
||||||
|
GetCrc:function(cmd){
|
||||||
|
return ToModbusCRC16(cmd)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
CRC._auchCRCHi = [
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
|
||||||
|
];
|
||||||
|
CRC._auchCRCLo = [
|
||||||
|
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
|
||||||
|
0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
|
||||||
|
0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
|
||||||
|
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
|
||||||
|
0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
|
||||||
|
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
|
||||||
|
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
|
||||||
|
0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
|
||||||
|
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
|
||||||
|
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
|
||||||
|
0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
|
||||||
|
0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
|
||||||
|
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
|
||||||
|
0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
|
||||||
|
0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
|
||||||
|
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
|
||||||
|
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
|
||||||
|
0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
|
||||||
|
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
|
||||||
|
0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
|
||||||
|
0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
|
||||||
|
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
|
||||||
|
0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
|
||||||
|
0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
|
||||||
|
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
|
||||||
|
0x43, 0x83, 0x41, 0x81, 0x80, 0x40
|
||||||
|
];
|
||||||
|
function ToModbusCRC16(str){
|
||||||
|
console.log(str);
|
||||||
|
console.log(CRC._auchCRCLo);
|
||||||
|
return CRC.CRC16(CRC.isArray(str) ? str : CRC.strToHex(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
CRC.CRC16 = function (buffer) {
|
||||||
|
var hi = 0xff;
|
||||||
|
var lo = 0xff;
|
||||||
|
for (var i = 0; i < buffer.length; i++) {
|
||||||
|
var idx = hi ^ buffer[i];
|
||||||
|
hi = (lo ^ CRC._auchCRCHi[idx]);
|
||||||
|
lo = CRC._auchCRCLo[idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
return CRC.padLeft((hi << 8 | lo ).toString(16).toUpperCase(), 4, '0');
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.isArray = function (arr) {
|
||||||
|
return Object.prototype.toString.call(arr) === '[object Array]';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
CRC.strToHex = function (hex, isFilterChinese) {
|
||||||
|
hex = isFilterChinese ? CRC.filterChinese(hex).join('') : CRC.convertChinese(hex).join('');
|
||||||
|
|
||||||
|
//清除所有空格
|
||||||
|
hex = hex.replace(/\s/g, "");
|
||||||
|
//若字符个数为奇数,补一个空格
|
||||||
|
hex += hex.length % 2 != 0 ? " " : "";
|
||||||
|
|
||||||
|
var c = hex.length / 2, arr = [];
|
||||||
|
for (var i = 0; i < c; i++) {
|
||||||
|
arr.push(parseInt(hex.substr(i * 2, 2), 16));
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.ToCRC16 = function (str) {
|
||||||
|
return CRC.CRC16(CRC.isArray(str) ? str : CRC.strToByte(str));
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.strToByte = function (str) {
|
||||||
|
var tmp = str.split(''), arr = [];
|
||||||
|
for (var i = 0, c = tmp.length; i < c; i++) {
|
||||||
|
var j = encodeURI(tmp[i]);
|
||||||
|
if (j.length == 1) {
|
||||||
|
arr.push(j.charCodeAt());
|
||||||
|
} else {
|
||||||
|
var b = j.split('%');
|
||||||
|
for (var m = 1; m < b.length; m++) {
|
||||||
|
arr.push(parseInt('0x' + b[m]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.convertChinese = function (str) {
|
||||||
|
var tmp = str.split(''), arr = [];
|
||||||
|
for (var i = 0, c = tmp.length; i < c; i++) {
|
||||||
|
var s = tmp[i].charCodeAt();
|
||||||
|
if (s <= 0 || s >= 127) {
|
||||||
|
arr.push(s.toString(16));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arr.push(tmp[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.filterChinese = function (str) {
|
||||||
|
var tmp = str.split(''), arr = [];
|
||||||
|
for (var i = 0, c = tmp.length; i < c; i++) {
|
||||||
|
var s = tmp[i].charCodeAt();
|
||||||
|
if (s > 0 && s < 127) {
|
||||||
|
arr.push(tmp[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.padLeft = function (s, w, pc) {
|
||||||
|
if (pc == undefined) {
|
||||||
|
pc = '0';
|
||||||
|
}
|
||||||
|
for (var i = 0, c = w - s.length; i < c; i++) {
|
||||||
|
s = pc + s;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
};
|
|
@ -0,0 +1,157 @@
|
||||||
|
var CrcUt = {
|
||||||
|
GetCrc:function(cmd){
|
||||||
|
return CRC.ToModbusCRC16(cmd,true) //输出 3039
|
||||||
|
},
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
CrcUt
|
||||||
|
}
|
||||||
|
|
||||||
|
var CRC = {};
|
||||||
|
|
||||||
|
CRC._auchCRCHi = [
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
|
||||||
|
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
|
||||||
|
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
|
||||||
|
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
|
||||||
|
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
|
||||||
|
];
|
||||||
|
CRC._auchCRCLo = [
|
||||||
|
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
|
||||||
|
0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
|
||||||
|
0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
|
||||||
|
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
|
||||||
|
0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
|
||||||
|
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
|
||||||
|
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
|
||||||
|
0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
|
||||||
|
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
|
||||||
|
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
|
||||||
|
0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
|
||||||
|
0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
|
||||||
|
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
|
||||||
|
0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
|
||||||
|
0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
|
||||||
|
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
|
||||||
|
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
|
||||||
|
0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
|
||||||
|
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
|
||||||
|
0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
|
||||||
|
0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
|
||||||
|
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
|
||||||
|
0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
|
||||||
|
0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
|
||||||
|
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
|
||||||
|
0x43, 0x83, 0x41, 0x81, 0x80, 0x40
|
||||||
|
];
|
||||||
|
|
||||||
|
CRC.CRC16 = function (buffer) {
|
||||||
|
var hi = 0xff;
|
||||||
|
var lo = 0xff;
|
||||||
|
for (var i = 0; i < buffer.length; i++) {
|
||||||
|
var idx = hi ^ buffer[i];
|
||||||
|
hi = (lo ^ CRC._auchCRCHi[idx]);
|
||||||
|
lo = CRC._auchCRCLo[idx];
|
||||||
|
}
|
||||||
|
return CRC.padLeft((hi << 8 | lo).toString(16).toUpperCase(), 4, '0');
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.isArray = function (arr) {
|
||||||
|
return Object.prototype.toString.call(arr) === '[object Array]';
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.ToCRC16 = function (str) {
|
||||||
|
return CRC.CRC16(CRC.isArray(str) ? str : CRC.strToByte(str));
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.ToModbusCRC16 = function (str) {
|
||||||
|
return CRC.CRC16(CRC.isArray(str) ? str : CRC.strToHex(str));
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.strToByte = function (str) {
|
||||||
|
var tmp = str.split(''), arr = [];
|
||||||
|
for (var i = 0, c = tmp.length; i < c; i++) {
|
||||||
|
var j = encodeURI(tmp[i]);
|
||||||
|
if (j.length == 1) {
|
||||||
|
arr.push(j.charCodeAt());
|
||||||
|
} else {
|
||||||
|
var b = j.split('%');
|
||||||
|
for (var m = 1; m < b.length; m++) {
|
||||||
|
arr.push(parseInt('0x' + b[m]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.convertChinese = function (str) {
|
||||||
|
var tmp = str.split(''), arr = [];
|
||||||
|
for (var i = 0, c = tmp.length; i < c; i++) {
|
||||||
|
var s = tmp[i].charCodeAt();
|
||||||
|
if (s <= 0 || s >= 127) {
|
||||||
|
arr.push(s.toString(16));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arr.push(tmp[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.filterChinese = function (str) {
|
||||||
|
var tmp = str.split(''), arr = [];
|
||||||
|
for (var i = 0, c = tmp.length; i < c; i++) {
|
||||||
|
var s = tmp[i].charCodeAt();
|
||||||
|
if (s > 0 && s < 127) {
|
||||||
|
arr.push(tmp[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.strToHex = function (hex, isFilterChinese) {
|
||||||
|
hex = isFilterChinese ? CRC.filterChinese(hex).join('') : CRC.convertChinese(hex).join('');
|
||||||
|
|
||||||
|
//清除所有空格
|
||||||
|
hex = hex.replace(/\s/g, "");
|
||||||
|
//若字符个数为奇数,补一个空格
|
||||||
|
hex += hex.length % 2 != 0 ? " " : "";
|
||||||
|
|
||||||
|
var c = hex.length / 2, arr = [];
|
||||||
|
for (var i = 0; i < c; i++) {
|
||||||
|
arr.push(parseInt(hex.substr(i * 2, 2), 16));
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
CRC.padLeft = function (s, w, pc) {
|
||||||
|
if (pc == undefined) {
|
||||||
|
pc = '0';
|
||||||
|
}
|
||||||
|
for (var i = 0, c = w - s.length; i < c; i++) {
|
||||||
|
s = pc + s;
|
||||||
|
}
|
||||||
|
// return s;
|
||||||
|
return s.substr(0,2)+" "+ s.substr(2,4);
|
||||||
|
};
|
|
@ -0,0 +1,39 @@
|
||||||
|
var serialPortPlus = null
|
||||||
|
var serialPortUtil = {
|
||||||
|
initSerial:function(){
|
||||||
|
serialPortPlus = api.require('serialPortPlus');
|
||||||
|
},
|
||||||
|
getAllDevices:function(params){
|
||||||
|
var ret = serialPortPlus.getAllDevices(params);
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
getAllDeicesPath:function(params){
|
||||||
|
var ret = serialPortPlus.getAllDeicesPath(params);
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
addEventListener:function(params,callback){
|
||||||
|
serialPortPlus.addEventListener(params,function(ret, err) {
|
||||||
|
callback(ret,err)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
openSerial:function(param,callback){
|
||||||
|
serialPortPlus.open(param,function(ret, err) {
|
||||||
|
callback(ret,err)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
send:function(params){
|
||||||
|
params.data = params.data.replace(/\s+/g,"");
|
||||||
|
var ret = serialPortPlus.send(params);
|
||||||
|
return ret
|
||||||
|
},
|
||||||
|
closeSerial:function(params){
|
||||||
|
var ret = serialPortPlus.close(params);
|
||||||
|
return ret
|
||||||
|
// console.log(JSON.stringify(ret));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
serialPortUtil
|
||||||
|
}
|
Loading…
Reference in New Issue