北斗短报文通信服务平台

This commit is contained in:
2026-03-27 17:51:58 +08:00
commit 90a8407924
103 changed files with 2714 additions and 0 deletions

View 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);
}
};

View File

@@ -0,0 +1,8 @@
// socket事件监听器
const EventEmitter = require('events');
const socketEmitter = new EventEmitter();
module.exports = () => {
return socketEmitter;
};

View 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 };
}
}
}
};