我正在尝试从网络上的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 /字符串。
答案 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的工作示例 。