Я использую пакет serialport npm для чтения данных, поступающих с порта COM, я создал пару виртуальных портов с помощью com0com. Я установил COM5 как конец чтения и COM6 как конец записи.
поэтому я написал этот сценарий тестирования:
var StringDecoder = require('string_decoder').StringDecoder;
// Require the serialport node module
var serialport = require('serialport');
var SerialPort = serialport.SerialPort;
// Open the port
var port = new serialport("COM6", {
baudRate: 9600,
parser: new serialport.parsers.Readline('\n')
});
// Read the port data
port.on("open", function () {
console.log('open');
port.on('data', function(data) {
var decoder = new StringDecoder('utf8');
var textChunk = decoder.write(data);
console.log(textChunk);
console.log("----");
console.log(data);
});
});
1 - я запускаю свое приложение.
2- А затем я эмулирую отправку данных на COM5, записав в терминал cmd «echo hi> COM5»
3 - Я получил этот вывод на терминал моего приложения:
open
h
----
<Buffer 68>
i
----
<Buffer 69 0d 0a>
когда я пытаюсь повторить «привет» - иногда я получаю (но не всегда):
----
<Buffer 0a>
h
----
<Buffer 68>
el
----
<Buffer 65 6c>
l
----
<Buffer 6c>
o
----
<Buffer 6f>
Как вы можете видеть, сообщение 'hi' превращается в два буфера и привет в несколько случайных, каков подход исправления для преобразования данных буфера в одну строку (в данном примере это "привет или привет") ) Я что-то упустил в работе с буферными данными?