leggi senza controllare che effettivamente ti sia arrivato qualcosa. Il pc ha un buffer gigante, però non dai tempo all'arduino di rispondere, senza contare che il pc non è realmente real time e quindi ci possono essere lag anche consistenti.
qualcosa mi dice che in php la readPort(), come la read() di arduino, ritorni -1 se non c'è nulla da leggere.
La soluzione ideale secondo me è di fare un loop che dura al massimo 1 secondo in cui vedi se c'è qualche dato. Se c'è lo leggi e fine, se non c'è dopo un secondo vai in time-out e esci lo stesso dal cislo con un errore