Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Отправьте несколько команд последовательно, используя shell.exec

Автор вопроса: CommunityОтветов: 2

Я пытаюсь отправить AT-команды на USB-устройство в Node.js, используя shelljs и socat.

Следующие (2) команды успешно выполняются в Терминале:

$ sudo socat - /dev/ttyUSB0
AT+RESTART

Примечание. Первая команда подключается к устройству, а вторая перезапускает его.

Однако следующие (2) команды не выполняются в Node.js:

shell.exec('sudo socat - /dev/ttyUSB0');
shell.exec('AT+RESTART');

Как заставить две команды работать в одном экземпляре shell.exec?

socatat-commandshelljs

Ответы

Ответ 1 · Ishan Thilina Somasiri

Проверьте node-cmd. В нем есть пример взаимодействия с консолью Python.

const cmd=require('../cmd.js');

const processRef=cmd.get('python -i');
let data_line = '';

//listen to the python terminal output
processRef.stdout.on(
  'data',
  function(data) {
    data_line += data;
    if (data_line[data_line.length-1] == '\n') {
      console.log(data_line);
    }
  }
);

const pythonTerminalInput=`primes = [2, 3, 5, 7]
for prime in primes:
    print(prime)

`;

//show what we are doing
console.log(`>>>${pythonTerminalInput}`);

//send it to the open python terminal
processRef.stdin.write(pythonTerminalInput);

И выход будет,

>>>primes = [2, 3, 5, 7]
for prime in primes:
    print(prime)


2
3
5
7

Вы можете использовать то же самое для взаимодействия с терминалом.

Ответ 2 · hlovdal

Это идеальный вариант использования для моей программы atinout:

shell.exec('echo AT+RESTART | atinout - /dev/ttyUSB0 -');

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы