树莓派(node.js)和Arduino uno串口通信

3
我正在尝试通过串行通信将Raspberry Pi和Arduino连接起来。我的目的是用户可以通过Raspberry Pi控制Arduino的LED。
我找到了一个串行通信的例子代码,它会自动每2秒向Arduino发送一个字符串。但是我想要做两件事情:
  1. 改变发送的值而不是“hello”。
  2. 用户可以在任何时候发送值,而不是自动发送。
请问您能帮助我吗?我对node.js不熟悉。
var SerialPort = require("serialport")
var serialPort = new SerialPort('/dev/ttyACM0', 
{   baudrate: 9600,
    dataBits: 8,
    parity: 'none',
    stopBits: 1,
    flowControl: false
});

serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) { // 아두이노로부터 전달된 데이터
    console.log('data received: ' + data);
});

serialPort.write("Hello from Raspberry Pi\n", function(err, results) {
    console.log('err ' + err);
    console.log('results ' + results); //전송한 바이트 수
});

setInterval( 
function() { // 2초마다 아두이노에게 문자열을 전송하는 예
   serialPort.write('hello');
}, 2000);
});
1个回答

1
这离工作还不远。只需要进行一些微小的调整: 1. “波特率”应该是混合大小写的“baudRate”。 2. 对于运行此代码的任何人,当然需要找到设备名称(Serial Port构造函数的第一个参数,在上面的示例中为“/dev/ttyACM0”)。一种找到它的方法是打开Arduino IDE,并查看“工具”|“端口”,一旦找到与Arduino通信的端口。 3. 最后,上面的代码在两个地方都写入,引起了混淆。只需在setInterval函数中写入即可。这将每2秒发送一次“hello”字符串。
var SerialPort = require("serialport")
var serialPort = new SerialPort('/dev/cu.usbmodem15',
{   
  baudRate: 9600,
  dataBits: 8,
  parity: 'none',
  stopBits: 1, 
  flowControl: false
});

serialPort.on("open", function () {
  console.log('comm open');
  serialPort.on('data', function(data) {
    console.log('data received: ' + data);
  });

  setInterval( 
    function() { 
      serialPort.write('hello');
    }, 2000
  );
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接