使用shell.exec串行发送多个命令

时间:2018-01-09 03:06:24

标签: node.js at-command socat shelljs

我正在尝试使用 shelljs socat 向Node.js中的USB设备发送AT命令。

以下(2)命令在终端中成功执行:

$ sudo socat - /dev/ttyUSB0
AT+RESTART

注意:第一个命令连接到设备,第二个命令重新启动它。

但是,以下(2)命令无法在 Node.js 中成功执行:

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

如何让两个命令在同一个shell.exec实例中运行?

2 个答案:

答案 0 :(得分:0)

检查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

您可以将其用于终端互动。

答案 1 :(得分:0)

这是我的atinout计划的完美匹配用例:

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