我有一个解析数据的 teltonika tcp 服务器,它工作正常,但我无法发送 gprs 命令,我不知道为什么或我做错了什么。以下是他们的网站文档:
首先,Teltonika 设备打开 GPRS 会话并将 AVL 数据发送到服务器(参考设备协议)。一旦发送了所有记录并且设备接收到正确的发送数据阵列确认,则可以将十六进制的 GPRS 命令发送到设备。ACK(来自服务器的 IMEI 确认)是一个单字节常量 0x01。从设备发送的每个数据数组的确认是四个字节的整数——接收到的记录数。
这是应该工作的 getinfo 十六进制示例第一个示例:Sending getinfo SMS command via GPRS Codec12
十六进制流中的服务器请求:000000000000000F0C010500000007676574696E666F0100004312
这是我的 nodejs tcp 服务器
const net = require('net');
const Parser = require('teltonika-parser-ex');
const binutils = require('binutils64');
const { parse } = require('path');
let server = net.createServer((c) => {
console.log("client connected");
c.on('end', () => {
console.log("client disconnected");
});
c.on('data', (data) => {
let buffer = data;
console.log(buffer);
let parser = new Parser(buffer);
if (parser.isImei) {
c.write(Buffer.alloc(1, 1)); // send ACK for IMEI
} else {
let avl = parser.getAvl();
console.log("parseRec", avl?.records?.map(({ gps, timestamp }) => {
return { gps, timestamp }
}
)
)
let writer = new binutils.BinaryWriter();
writer.WriteInt32(avl.number_of_data);
let response = writer.ByteBuffer;
c.write(response); // send ACK for AVL DATA
// console.log(test);
c.write("000000000000000F0C010500000007676574696E666F0100004312"); // SEND GETINFO command that is not working
}
});
});
server.listen(1574, '0.0.0.0', () => {
console.log("Server started");
});
最后一个 c.write("000000000000000F0C010500000007676574696E666F0100004312"); 应该发送 getinfo 命令,我应该得到答案,但我什么也得不到。