Чтение данных последовательного порта - преобразование буфера в строку - PullRequest
0 голосов
/ 13 сентября 2018

Я использую пакет 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' превращается в два буфера и привет в несколько случайных, каков подход исправления для преобразования данных буфера в одну строку (в данном примере это "привет или привет") ) Я что-то упустил в работе с буферными данными?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...