Всем еще раз привет.
Не так давно просил помощи и снова проблема с буфером.
Сейчас цель такая:
Ардуина шлет int число в поток вывода, а мы на NODE JS читаем этот COM порт и переводим в string и записываем в array. Но при записи порой данные ломаются.
NODE.JS
var SerialPort = require('serialport');
var array = [];
var port = new SerialPort('/dev/ttyACM0', {
baudRate: 9600
});
port.on('readable', function () {
array.push(port.read().toString());
console.log(array);
});
// Open errors will be emitted as an error event
port.on('error', function(err) {
console.log('Error: ', err.message);
})
Полученый массив:
[ '22' ]
[ '22', '22' ]
[ '22', '22', '22' ]
[ '22', '22', '22', '2' ]
[ '22', '22', '22', '2', '2' ]
[ '22', '22', '22', '2', '2', '22' ]
[ '22', '22', '22', '2', '2', '22', '2' ]
[ '22', '22', '22', '2', '2', '22', '2', '2' ]
[ '22', '22', '22', '2', '2', '22', '2', '2', '22' ]
Данные числа это градусы по C и число всегда на датчиках было 22. Но в array как-то разбивается на 2 числа и записывает элемент.
Как избежать этого?
Скетч Arduino
//TMP36 Pin Variables
int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
//the resolution is 10 mV / degree centigrade with a
//500 mV offset to allow for negative temperatures
/*
* setup() - this function runs once when you turn your Arduino on
* We initialize the serial connection with the computer
*/
void setup()
{
Serial.begin(9600); //Start the serial connection with the computer
//to view the result open the serial monitor
}
void loop() // run over and over again
{
//getting the voltage reading from the temperature sensor
int reading = analogRead(sensorPin);
// converting that reading to voltage, for 3.3v arduino use 3.3
float voltage = reading * 5.0;
voltage /= 1024.0;
// now print out the temperature
int temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((voltage - 500mV) times 100)
Serial.print(temperatureC);
delay(1000); //waiting a second
}