открывать последовательный порт и автоматически регистрировать данные под различными событиями - PullRequest
1 голос
/ 29 января 2020

Я использую порт COM3, и я использую модуль serialport для чтения из последовательного порта. То, что я хочу, - это автоматическая система регистрации c, которая регистрирует данные из последовательного порта при следующих событиях.

1. закрыть программу и снова открыть программу

2. перезагрузите мой p c

3. отключите USB-кабель и подключите его снова

4. перезагрузите устройство Arduino

Я хочу открыть последовательный порт и автоматически регистрировать полученные от него данные всякий раз, когда происходят вышеуказанные события. Как обрабатывать эти случаи.

В настоящее время этот код используется с помощью

var fs = require('fs');

const SerialPort = require('serialport')
const Readline = require('@serialport/parser-readline')
const port = new SerialPort('COM3')
const parser = new Readline()
port.pipe(parser)
parser.on('data', function (data) {

 const index = data.indexOf('*#SENSOR_DATA')

 if(index != -1){

    fs.appendFileSync("sensor_data.txt", new Date(), 'utf8')
    fs.appendFileSync("sensor_data.txt", data, 'utf8')

 }

})

port.on('error', function(err) {
    fs.appendFileSync("sensor_data.txt", new Date(), 'utf8')
    fs.appendFileSync("sensor_data.txt", err, 'utf8')
    console.log(err);
})

port.write('ROBOT PLEASE RESPOND\n')

Как я могу обработать вышеупомянутые случаи?

1 Ответ

0 голосов
/ 14 февраля 2020

закрытие программы и повторное открытие программы

Регистрация данных из порта при запуске программы должна быть прямой, т.е. запуск вашего скрипта.

Закрытие программы, зависит от того, какой сценарий ios вы хотите обработать, изящные или не изящные выходы из программы. Для этого вы можете добавить прослушиватели событий для объекта nodeJS process . Вы можете зарегистрировать обработчики событий, когда процесс собирается завершить какое-либо действие.

process.on('SIGINT', () => {
    // read my data from Serial
    process.exit(-1);
})

перезапустите мой p c

В зависимости от того, какая у вас ОС вы можете настроить процесс nodejs как службу или запустить его через cron. Например, cron (в зависимости от ОС) имеет опцию для планирования заданий на reboot . Независимо от вашей ОС, вы сможете планировать задания или создавать службы, чтобы обеспечить запуск процесса при перезагрузке компьютера.

отключите USB-кабель и подключите его снова и перезапустите устройство Arduino

Для этого я бы посмотрел на различные parsers, доступные для serialport. Например, ReadyParser .

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