transmision seria arduino->processing processing->arduino

Cuando envio datos desde arduino a processing hago lo siguiente:
arduino:

 Serial.print(variable1);
 Serial.print("/");
 Serial.print(variable2);
 Serial.print("/");
 Serial.print(variable3);
 Serial.write(46); // 46 es un ejemplo

processing:

while (myPort.available() > 0) {
	chByte = myPort.readChar();
	serialEvent(chByte);
}

void serialEvent(char digito) {
if(digito>=47 && digito<=57){ //digito>='0' && digito<='9' || digito=='/') { 
    buf += digito;
  }
else if (digito == 46) {
    var_variables = buf;
    String[] S_var = split(var_variables, '/');
    var_1  = int(S_var[0]);
    var_2  = int(S_var[1]);
    var_3  = int(S_var[2]);
}

Pero si quiero enviar datos de processing a arduino:
processing:

   Serial.write(var);

arduino:

if (Serial.available()>0){
val=Serial.read();
remoto(val);
 }

-En el primer caso con Serial.print() envio la variable y con Serial.write() el código de control para que processing sepa que variable es.

  • En el segundo caso, en processing solo dispongo de Serial.write(), y me interesaría enviar a arduino, tanto variables como algún código de control. ¿Es posible hacer esto con Serial.write()? Si envio un número ¿como puede saber arduino si es una variable numérica o un código que permita a arduino saber cual es la variable, como hacía en el 1º caso?

Nota: prefiero no usar librerías para la transmisión serial

En Arduino, serial.read() siempre devuelve un número de tipo byte (8 bits - de 0 a 255).

Si envías un carácter "A", Arduino recibe el valor ascii correspondiente (65).

Para más información:

¿Sería posible enviar varios bytes dentro de una matriz?
processing:

int a[] = {45,100,200}
Serial.write(a);

Así usaría el 1º de control y los demas de datos.

Si. Solo tienes que tener en cuenta que en Arduino vas a leer los datos byte a byte, para después juntarlos o analizarlos según te convenga

int i=0;
byte val[3];

loop()
{
if(Serial.available()>0)
{
val[i++]=Serial.read();
}
}