Sending multiple variables from Arduino to Labview with serial.write()

Hello.

I would like to send multiple variables from Arduino to Labview to plot them in real time. Serial.print command is insufficient (laggy), so I've done some searching and found this example: http://www.stefanocottafavi.com/?p=412&page=2. With this VI and code I can now send one float variable without any lag. I don't know how to send more of them though :slight_smile:

Here's the Arduino code:

{
  // 5-byte packet
  Serial.write((byte)0x69); // header
  serialWriteFloat(var/*bmp.readAltitude(103500)*/);

  delay(100);
  
}

void serialWriteFloat(float arg) {
  byte * data = (byte *) &arg; 
  Serial.write (data, sizeof (arg));
}

and here's VI:

Is it about adding cases in Labview with different headers and respectively serial.write commands with their names and variable names in Arduino code?

I would be grateful for some help or pointing me in right direction.

Cheers

The trick is to make packets of data, a packet starts with a start byte, then an identifier then the value and then a stop byte, optionally there is a crc code for error detection.

think of it as < P = B B B B >

So sending the altitude becomes :

void writeAltitude(float val)
{
  writeField('A', val);
}

void writeTemperature(float val)
{
  writeField('T', val);
}

void writeField(char ID, float val)
{
  Serial.print('<'); // start byte 
  Serial.print(ID); ID
  Serial.write (&val, sizeof (val));
  Serial.print(">");   // stop byte
}

On the receiving site you must unpack the data again of course

Thanks for response!

If anybody wondered - yes, adding different cases for given headers along with corresponding commands in Arduino does the trick :wink:

@adamblodz
Can you please post your final code (optionally minimized to the essence) so it can be used for future reference?
Thank you,