Após enviar um comando pela porta serial um dispositivo sempre me responde com 10 bytes sendo os 4 primeiros um header com bytes que são sempre fixos: 0x5A , 0x5A, 0x95, 0x0A
O computador que envia esses dados tem o mesmo formato? (endianness)
A maneira mais simples que eu encontrei para fazer isto é através de uniões.
union SerialInt{
unsigned char bytes[2];
int valorInt;
} valor1, valor2, valor3;
//dentro duma função
valor1.bytes[0] = ss.read();
valor1.bytes[1] = ss.read(); // aqui podes inverter se a ordem dos bytes não for a mesma.
//se quiseres usar ou imprimir o valor1, 2 ou 3, fazes:
Serial.print("Valor 1 = ");
Serial.println(valor1.valorInt);
// de outra forma terias de fazer byte shift.
int valor_1_Int;
valor_1_Int = (highByte <<8) + lowByte; //mais uma vez terias de ter em atenção a ordem dos bytes.