Problemas Puerto serie labview

Hola buenas, tengo un problema y haber si alguno me puede dar una ayuda. Envió datos a través del puerto serie a labview y comienzo por una P para saber que ese es el principio de los datos, lo que pasa es que en el buffer del puerto serie que visualizo en labview me salen los datos pero a veces no empiezan por la P, por ejemplo si envío P23,55X33,43X233,4 a veces me sale la P en la mitad X233,4P23,55X33,43 y los datos desordenados. Me gustaría saber si existe alguna opción por software para que lo que se envíe por el puerto serie siempre empiece por P y que no se acumulen los datos. No se si la solución es cerrar y abrir el puerto serie cada poco tiempo o como. Aver si alguno me puede ayudar, gracias. Adjunto mi programa:

#include <SD.h>
#include <Time.h>
int analogPin0=0;
int analogPin1=1;
int analogPin2=2;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);

Serial.print(“Initializing SD card…”);
// make sure that the default chip select pin is set to
// output, even if you don’t use it:
pinMode(4, OUTPUT);

// see if the card is present and can be initialized:
if (!SD.begin(4)) {
Serial.println(“Card failed, or not present”);
// don’t do anything more:
return;
}
Serial.println(“card initialized.”);
}
void loop()
{
// make a string for assembling the data to log:
float pin0=(analogRead(0)5.0100.0)/1024.0;
delay (300);
float pin1=((analogRead(1)-499)5.0100.0)/1024.0;
delay (300);
float pin2= analogRead(2);
delay (300);
float y;
float luxes;
if( pin2 < 83 )
{ y=pin24.6809;
luxes=y+1.3198;
}
else
if(pin2 > 83)
{y=pin2
28.283;
luxes=y-2062.6;
}
String dataString = "Posiciones sobre 1024 Bits: T1, ";

// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin <1) {

dataString += " ;T2, ";
}
else

if (analogPin <2) {
dataString += " ;LUZ, ";
}

}

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open(“datalog.txt”, FILE_WRITE);

// if the file is available, write to it:
if (dataFile) {
dataFile.print(“Tiempo transcurrido desde el inicio de la medicion “);
dataFile.print(hour());
dataFile.print(”:”);
dataFile.print(minute());
dataFile.print(":");
dataFile.print(second());
dataFile.println(" ");

dataFile.println(dataString);
dataFile.print (“T1”);
dataFile.print (" “);
dataFile.print (pin0);
dataFile.print (” “);
dataFile.print (“Grados Celsius”);
delay(500);
dataFile.println(”");
dataFile.print (“T2”);
dataFile.print (" “);
dataFile.print (pin1);
dataFile.print (” “);
dataFile.print (“Grados Celsius”);
delay(500);
dataFile.println(”");
dataFile.print (luxes);
dataFile.print (" “);
dataFile.print (“W/m^2”);
delay(500);
dataFile.println(”");
dataFile.println("");
dataFile.close();
}
// if the file isn’t open, pop up an error:
else {
Serial.println(“error opening datalog.txt”);
}
float T1=pin0; //como daba problemas en labview metemos el dato en esta variable para q se refresque cada 3s y no este cambienado todo el rato.
float T2=pin1;
float LUZ=luxes;
delay(1000);

// print to the serial port too:

Serial.print (“P”);
Serial.print (T1);
Serial.print (“X”);
Serial.print (T2);
Serial.print (“X”);
Serial.print (LUZ);

delay(4000);
}