我从ESP8266中测量数据,我存储在一个字符串数组中,我使用Node.js向JavaScript显示数据,但是我只是将数据作为一个数组而不是两个数组。
我的Arduino代码
...
int temp1, hum1, temp2, hum2;
...
void setup(){
serial.begin(9600);
serial1.begin(115200);
...
}``
void loop(){
...
float t1 = bme1.readTemperature();
float h1 = bme1.readHumidity();
float t2 = bme2.readTemperature();
float h2 = bme2.readHumidity();
temp1 = t1;
hum1 = h1;
temp2 = t2;
hum2 = h2;
getStrings();
delay(3000);
...
}
void getStrings(){
String measure1=" "; String measure2=" ";
measure1 += temp1;
measure1 += " ";
measure1 += hum1;
measure1 += " ";
Serial.println(measure1);
measure2 += temp2;
measure2 += " ";
measure2 += hum2;
measure2 += " ";
Serial.println(measure2);
}我的串行监视器显示:
measure1: 12.34 23.45
measure2: 34.56 45.67我的Node.js代码:
var exs = require('express');
var app = exs();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = require('serialport');
var parsers = port.parsers;
var parser = new parsers.Readline({delimiter:'\n'});
var ports = new port("/dev/ttyUSB0", {baudRate:115200,parser:parser}, false);
process.setMaxListeners(Infinity);
ports.pipe(parser);
ports.on('open', function(){
console.log('portOpened');
io.on('connection', function(socket){
ports.on('data', function(data){
console.log('data: '+data);
parser.on('data', function(data){
var result = data.split(" ");
var temp-1 = result[1]
var hum-1 = result[2]
var temp-2 = result[3]
var hum-2 = result[4];
io.sockets.emit('update', {
tmp_1:temp-1.toString()+' *C',
hum_1:hum-1.toString()+' %',
tmp_2:temp-2.toString()+' *C',
hum_2:hum-2.toString()+' %'
});
});
});
});
});
...当我调用npm start时,我只需要将所有数据作为一个数组日志:
data: 12.34 23.45 34.56 45.67不是我想要的两个数组日志,如下所示:
字符串数组'measure1‘作为:
data1: 12.34 23.45字符串数组'measure2‘作为:
data2: 34.56 45.67数据解析器只有一个字符串数组,而不是两个字符串数组!
抱歉,我的英语不好。
发布于 2018-09-20 11:48:48
var hum-2 = result[2]应该是
var hum-1 = result[2]完整代码将是
ports.on('data', function(data){
console.log('data: '+data);
parser.on('data', function(data){
var result = data.split(" ");
var temp-1 = result[1]
var hum-1 = result[2]
var temp-2 = result[3]
var hum-2 = result[4];
var data1 = temp-1+' '+hum-1;
var data2 = temp-2+' '+hum-2;
console.log('data1: '+data1);
console.log('data2: '+data2);
io.sockets.emit('update', {
tmp_1:temp-1.toString()+' *C',
hum_1:hum-1.toString()+' %',
tmp_2:temp-2.toString()+' *C',
hum_2:hum-2.toString()+' %'
});
});
});现在,您将在两个不同的vars中获得数据。
发布于 2018-09-20 08:13:28
在启动下一个串行输出之前,确保将串行排除出缓冲区:
void getStrings(){
String measure1=" "; String measure2=" ";
measure1 += temp1;
measure1 += " ";
measure1 += hum1;
measure1 += " ";
Serial.println(measure1);
Serial.flush(); // FLUSH
measure2 += temp2;
measure2 += " ";
measure2 += hum2;
measure2 += " ";
Serial.println(measure2);
Serial.flush(); // FLUSH
}发布于 2018-09-20 00:59:50
解析器没有在消息之间找到分隔符"\n“。
在您的arduino代码中添加行measure2 += "\n";
void getStrings(){
String measure1=" "; String measure2=" ";
measure1 += temp1;
measure1 += " ";
measure1 += hum1;
measure1 += " ";
Serial.println(measure1);
measure2 += temp2;
measure2 += " ";
measure2 += hum2;
measure2 += " ";
measure2 += "\n";
Serial.println(measure2);
}https://stackoverflow.com/questions/51478168
复制相似问题