北斗短报文通信服务平台
This commit is contained in:
50
app/middleware/shunt/selectXFType.js
Normal file
50
app/middleware/shunt/selectXFType.js
Normal file
@@ -0,0 +1,50 @@
|
||||
// 解析服务信息类型
|
||||
module.exports = (middleware, item, baseObj, arr) => {
|
||||
const utils = middleware.utils;
|
||||
const parseDataPackage = middleware.parseDataPackage;
|
||||
let dataCtx = baseObj.dataContent, objName, labelString, dataArr, itemLength, itemType;
|
||||
if (item == 'now') {
|
||||
objName = 'nowData';
|
||||
labelString = '当前';
|
||||
itemLength = baseObj.dataLength.data;
|
||||
dataArr = utils.getArr(arr, 15, 15 + itemLength - 1);
|
||||
itemType = baseObj.dataItem.data;
|
||||
} else if (item == 'resend') {
|
||||
objName = 'resendData';
|
||||
labelString = '重发';
|
||||
itemLength = baseObj.resendLength.data;
|
||||
dataArr = utils.getArr(arr, 15 + baseObj.dataLength.data, 15 + baseObj.dataLength.data + itemLength - 1);
|
||||
itemType = baseObj.resendItem.data;
|
||||
}
|
||||
dataCtx[objName] = {
|
||||
label: labelString + "数据段",
|
||||
timeObj: {
|
||||
year: { label: "年", data: parseInt(dataArr[0] + dataArr[1], 16) },
|
||||
month: { label: "月", data: parseInt(dataArr[2], 16) },
|
||||
day: { label: "日", data: parseInt(dataArr[3], 16) },
|
||||
}
|
||||
}
|
||||
dataArr = utils.getArr(dataArr, 4, itemLength - 1);
|
||||
for (let i = 0; i < itemType; i++) {
|
||||
let contentObj = "contentObj" + (i + 1);
|
||||
dataCtx[objName][contentObj] = {
|
||||
label: labelString + "数据内容" + (i + 1),
|
||||
typeNumber: { label: "信息类型编号", data: parseInt(dataArr[0] + dataArr[1], 16) },
|
||||
contentLength: { label: "信息内容长度", data: parseInt(dataArr[2] + dataArr[3], 16) },
|
||||
}
|
||||
if (dataCtx[objName][contentObj].contentLength.data !== 0) {
|
||||
dataArr = utils.getArr(dataArr, 4, itemLength - 5);
|
||||
switch (dataCtx[objName][contentObj].typeNumber.data) {
|
||||
case 4: parseDataPackage.parseXFType004(middleware, dataArr, dataCtx[objName][contentObj]);
|
||||
break;
|
||||
case 5: parseDataPackage.parseXFType005(middleware, dataArr, dataCtx[objName][contentObj]);
|
||||
break;
|
||||
case 99: parseDataPackage.parseXFType099(dataArr, dataCtx[objName][contentObj]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
dataArr = utils.getArr(dataArr, dataCtx[objName][contentObj].contentLength.data, itemLength - 1);
|
||||
}
|
||||
};
|
||||
8
app/middleware/shunt/socketEmitter.js
Normal file
8
app/middleware/shunt/socketEmitter.js
Normal file
@@ -0,0 +1,8 @@
|
||||
// socket事件监听器
|
||||
const EventEmitter = require('events');
|
||||
|
||||
const socketEmitter = new EventEmitter();
|
||||
|
||||
module.exports = () => {
|
||||
return socketEmitter;
|
||||
};
|
||||
14
app/middleware/shunt/socketResult.js
Normal file
14
app/middleware/shunt/socketResult.js
Normal file
@@ -0,0 +1,14 @@
|
||||
// 对数据包解析结果做类型判断,并根据不同类型返回不同结果
|
||||
module.exports = (data) => {
|
||||
for (let item in data) {
|
||||
if (data[item].typeNumber) {
|
||||
if (data[item].typeNumber.data == 4) {
|
||||
return { type: 4, data: data[item] };
|
||||
} else if (data[item].typeNumber.data == 5) {
|
||||
return { type: 5, data: data[item] };
|
||||
} else if (data[item].typeNumber.data == 99) {
|
||||
return { type: 99, data: data[item].authStatus };
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user