节点串口的自定义解析器?
问题描述:
有了这样STX(0x02)..Data..ETX(0x03)
节点串口的自定义解析器?
我可以byte sequence parser
处理数据进来的数据:
var SerialPort = require('serialport');
var port = new SerialPort('/dev/tty-usbserial1', {
parser: SerialPort.parsers.byteDelimiter([3])
});
port.on('data', function (data) {
console.log('Data: ' + data);
});
但我的实际进来的数据为STX(0x02)..Data..ETX(0x03)..XX(plus 2 characters to validate data)
我怎样才能得到适当的数据?
谢谢!
答
解决!
我写我自己的解析器:
var SerialPort = require('serialport');
var incommingData = new Buffer(0);
var myParser = function(emitter, buffer) {
incommingData = Buffer.concat([incommingData, buffer]);
if (incommingData.length > 3 && incommingData[incommingData.length - 3] == 3) {
emitter.emit("data", incommingData);
incommingData = new Buffer(0);
}
};
var port = new SerialPort('COM1', {parser: myParser});
port.on('data', function(data) {
console.log(data);
});