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