the biggest I need val is 2 bytes, would adding a delay after the first read make a difference?
So something like
if (Serial.available() > 0)
{
for (int i = 0; i < Serial.available(); i++)
{
val[i] = Serial.read();
delay(30);
}
}