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

Я пытаюсь отправить 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?


person Community    schedule 09.01.2018    source источник


Ответы (2)


Проверьте 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

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

person Ishan Thilina Somasiri    schedule 09.01.2018

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

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