Я хочу, чтобы запустить эти три действия в упорядоченно:синхронные действия в узле JS
- Открытие последовательного порта
- Прослушивание любых изменений
- Отправка команд через последовательный порт
Проблема связана с асинхронностью узла js, иногда данные отправляются до начала прослушивания порта. Следовательно, эти данные теряются. Вот мой пример кода. Как я могу решить эту проблему?
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort("COM27", {
baudrate: 57600
}, false); // this is the openImmediately flag [default is true]
//***1***open the serialport
serialPort.open(function (error) {
if (error) {
console.log('failed to open: '+error);
}
else {
console.log('open');
}
//***2***port is now listening
serialPort.on('data', function (data) {
console.log('data received: ' + data)
})
//***3***send command using serialport
serialPort.write("AJ+APN?\n", function(err, results) {
console.log('err ' + err);
console.log('results ' + results)
})
});
Похоже, вы покорно ожидаете открытия порта. Есть примечание о том, что версии узлов выше 0.11.10 не поддерживаются, какая версия узла вы используете? – trex005
Версия узла js равна 0.12.7 –