Arduino串口提供坏数据?

时间:2014-02-28 23:37:51

标签: javascript node.js serial-port arduino node-serialport

我正在尝试从网络上的Arduino接收数据(Socket.IO)。所以我将解释下面的代码。

Arduino的:

 int temperatureC = (voltage - 0.5) * 100;  
 Serial.print(temperatureC - 2);  
 Serial.print(" ");

这将伏特转换为温度。当我打开串行显示器时,我可以看到输出的方式。

228 
28 
28 
28 
28 
29 
28 

但我在Node中创建了一个SerialPort,其输出有点奇怪。我以这种方式收到数据:

serialPort.on("open", function () {
  console.log('open');

  io.sockets.on('connection', function (socket) {
        serialPort.on('data', function(data) {
    console.log('data received: ' + data);
    socket.emit('temps', { temp: data });
   });
  });
});

但输出是:

data received: 28
   debug - websocket writing 5:::{"name":"temps","args":[{"temp":50}]}
data received:  
   debug - websocket writing 5:::{"name":"temps","args":[{"temp":32}]}
data received: 2
   debug - websocket writing 5:::{"name":"temps","args":[{"temp":50}]}
data received: 8 
   debug - websocket writing 5:::{"name":"temps","args":[{"temp":56}]}
data received: 28 
   debug - websocket writing 5:::{"name":"temps","args":[{"temp":50}]}
data received: 28
   debug - websocket writing 5:::{"name":"temps","args":[{"temp":50}]}
data received:  

正如您所看到的,输出类似于:

28
2
8
2
8
28

看起来它一直在破坏我的int /字符串。

1 个答案:

答案 0 :(得分:1)

确保您的波特率已设置,9600是最安全的。    var sp = new SerialPort(comPort,{         解析器:serialport.parsers.readline(“\ r”),         波特率:9600,     });

sp.on('data', function (arduinoData) {
    // data example
    var ArduinoString = arduinoData.toString();
}

我不使用io.socket例程,您可以查看我的git以获取Arduino and node code的工作示例 。