AYUDA! NOVATO

Buenas,

Mi nombre es Nicolas, trabajo en una curtiembre, y estoy haciendo un proyecto con arduino y visual.net.
El proyecto consiste en que tengo una cinta transportadora, una balanza y un recipiente que tiene 2 puertas con pistones pneumaticos.

Cae un cuero en la cinta, se translada hasta el recipiente, este recipiente tiene 2 celdas de pesaje, la balanza pesa el cuero, y debajo hay 2 tachos grandes y van cayendo los cueros a un tacho segun la puerta que haya abierto, o al otro si este se lleno.

El problema que tengo es el siguiente. Tengo conectada la balanza al visual por puerte serie y este funciona sin problemas. Hice el programa en arduino UNO para activar 2 reles y utilizando el monitor serie de arduino funciona sin problemas, pero cuando le intengo pasar un dato de visual a arduino este recibe un dato que no tiene nada que ver con lo que envie.
Tuve que adaptar el codigo para que reaccione con ese dato errado ya que siempre se repite por cada dato que envio. Ej. envio un "1" y recibe una "g" o un "103" en ascii.
El programa lo deje andando, pero no es la idea. La idea es que tire el valor que quiero y reciba exactamente eso.

Este es mi codigo en Arduino:

int rele1 = 8;
int rele2 = 9;


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
  digitalWrite(rele1, HIGH);
  digitalWrite(rele2, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:


  while(Serial.available()>0){
/*Aca probe con Serial.readString(); y tambien probe con parseInt(); haciendo sus respectivos cambios de variable y no cambia nada*/
    String datos = (String)Serial.read();  
    delay(50);

if (datos == "103"){
  Serial.println("ENTRO EN 1");
  digitalWrite(rele1, LOW);
  digitalWrite(rele2, HIGH);
  delay(1000);
  digitalWrite(rele1, HIGH);
Serial.flush();
  
  
  }else if (datos == "179"){
  Serial.println("ENTRO EN 2");  
    digitalWrite(rele2, LOW);
    digitalWrite(rele1, HIGH);
    delay(1000);
    digitalWrite(rele2, HIGH);
    Serial.flush();

}
    
  }

}

Y el codigo en visual no tiene ningun misterio.

Private cerrarPiston1 As String = "1"

Private Sub accesoAInterrupcion()

Dim auxiliarTexto As String = puertoReceptor
auxiliarTexto = auxiliarTexto.Trim
'Cambia el punto por coma para castear a decimal
auxiliarTexto = auxiliarTexto.Replace(".", ",")
auxiliarTexto = filtrarRuido(auxiliarTexto)

nuevoPeso(auxiliarTexto)
sumarPeso(auxiliarTexto)
cantidad_total_cueros()
promedio_de_peso()
PuertoSerie.Write(cerrarPiston1)

End Sub

up