node-serialport 6.x.x не получает данные или ошибки в Windows (но получает на Mac)

Я использую следующую библиотеку для подключения через USB к внешнему устройству:

https://github.com/node-serialport/node-serialport

Я настроил следующий пример проекта, чтобы сузить круг возможных проблем:

https://github.com/nyoung697/node-serial-test

Этот код работает на моем Mac. Устройство, к которому я подключаюсь, принимает команду ascii и возврат каретки для завершения этой команды.

В примере проекта я передаю «V\r» и ожидаю, что будет возвращена версия устройства. Когда я запускаю этот код на своем Mac, я получаю ожидаемый ответ.

Однако, когда я запускаю его на своем компьютере с Windows 10, я вообще не получаю никакого ответа. Ни события port.on('data'), ни port.on('error') не срабатывают.

Я протестировал понижение версии библиотеки последовательного порта до версии 4.0.7, и она работает.

У кого-нибудь есть идеи, что могло измениться между 4 => 6?

P.S. Я отредактировал этот вопрос, так как изначально думал, что он как-то связан с Electron, однако, проведя этот простой тест только с node.js, я полагаю, что сузил его до этой версии библиотеки для Windows.


person Nick Young    schedule 31.07.2018    source источник


Ответы (1)


Хорошо... Я только что понял это.

Все, что мне нужно было сделать, это добавить свойство rtscts к объекту openOptions, который я передаю конструктору, и установить для него значение true.

const SERIAL_PORT_SETTINGS = {
    baudRate: 115200,
    rtscts: true
};

let port = new SerialPort(devicePath, SERIAL_PORT_SETTINGS);

Я понял это, копаясь в примечаниях к выпуску. Я заметил, что с v5.x.x до 6.0.0 критические изменения включали в себя установку этого значения по умолчанию на false.

Windows: ранее мы жестко запрограммировали, чтобы RTS всегда была включена для Windows, теперь по умолчанию она отключена.

person Nick Young    schedule 01.08.2018
comment
Я только что понял, что установка для этого свойства значения true дает мне кучу искаженных символов, когда я конвертирую буфер в строку на Mac .... у меня не было возможности отладить это или выяснить, что на самом деле означает rtscts. Однако это не является огромным приоритетом, поскольку он отлично работает с этим параметром в false на Mac и true в Windows. - person Nick Young; 02.08.2018