I have been successful in getting serial data in P5.js sketch using this - GitHub - p5-serial/p5.serialport: Serial Port API and Server for p5.js library as either byte array or string values.
When I tried converting string to float type using float() – I get a lot of NaN values which shouldn’t be coming since data is numerical.
Alternatively, I then tried getting data from serial port as byte array. I can’t find a way to convert this array to my original float value in P5.js.
Any ideas on how to convert byte array to float or avoid getting NaN when converting string to float?
Appreciate your time and help. Thanks.
Codes I have tried for conversion:
From String to float, I used
let incomingData;
let dataValue;
incomingData = serial.readStringUntil('\n');
dataValue = float(incomingData); //standard method in P5.js -- returns NaN values
I also tried parseFloat() -- https://www.geeksforgeeks.org/javascript-parsefloat-function/
dataValue = parseFloat(incomingData);
//again returns maximum values as NaN
From byte array to float
let incomingBytes = [];
let dataValue;
incomingBytes = serial.readBytesUntil('\n');
dataValue = dataView.getFloat64(bytebuffer);
// This javascript method is not supported by P5.js it seems
As seen in the last image, there were empty strings or null values coming. I just had to put a check for it before doing the conversion.
Thanks to all the commenters.
let incomingData; //incoming serial value is stored in this variable
let temparray = [1000]; //temporary array used in updating final array
let plot_from_here = [1000]; //final array of values to plot
function setup(){}
function draw(){}
function serialEvent() {
if(serial.available()>0){
incomingData = serial.readStringUntil('\n'); //read string until next line
if(incomingData != ""){
incomingData = trim(incomingData); //trim white spaces
arrayCopy(temparray,0, temparray,1,999); //Copy value from index 0 to index 1
temparray[0]= float(incomingData); //Update index 0 of temparray for the incoming value -- the value is converted to float from string type
plot_from_here = temparray; //update values in final array
print(plot_from_here);
}
}
}