Comunicazione seriale

ok, ho giocato un po con il tuo codice (bravo per la compattazione!) ed ho trovato il problema:

if (Serial.available() )
  { ser=Serial.read();
    if(ser=='a')
    {
      delay(50);
      a = Serial.read()-48;
      b = Serial.read()-48;
      c = Serial.read()-48;
      d = Serial.read()-48;
      delayTime = (a*1000)+(b*100)+(c*10)+(d*1);
      Serial.println(a);
      Serial.println(b);
      Serial.println(c);
      Serial.println(d);
      Serial.println(delayTime);
      delay(50);
    }
  
    else if (ser== 'b')
    {
      x = 1;
      Serial.println(x);
    }
    
  }

semplicemente, ho inserito una variabile "var" la quale viene assegnato il valore in entrata su Serial.read(), semplicemente, dovevi eliminare la seconda chiamata a Serial.read perché già all'interno del ciclo if Serial.available() l'ho collaudata e funziona. spero che ti sia d'aiuto.
ciao.