Olá a todos,
É a primeira vez que estou a usar arduino, essencialmente para validar hardware mas estou com uma dificuldade. Alguém me dá uma ajudinha?
Estou a enviar uma trama por comunicação serie para um lcd c/ touch. Acontece que na palavra que eu estou a receber no ecrã, falta sempre a ultima letra.
Exemplo:
Se no código escrevo "teste" no ecrã aparece "test", mas se escrever "teste " então já recebo "teste".
Um bocadinho de código para ajudar...
void TC3_Handler()
{
TC_GetStatus(TC1, 0);
state="Soak";
state.getBytes(state_lcd,state.length());
byte state_lcd_length = state.length();
for(int i=0; i<state_lcd_length; i++)
{
xor_state_lcd = xor_state_lcd ^ state_lcd[i];
}
byte checksum_state_lcd = 0x02 ^ 0x00 ^ state_lcd_length ^ xor_state_lcd;
byte message_legenda_lcd[] = {0x02, 0x00, state_lcd_length, state_lcd[0], state_lcd[1], state_lcd[2], state_lcd[3],checksum_state_lcd};
Serial.write(message_legenda_lcd,sizeof(message_legenda_lcd));
}
Descobri, com recurso a um analisador lógico, que na message_legenda_lcd[] = {...}, o último byte antes do checksum é sempre 0x00 (não sei porquê..). Resumindo, nesse caso especifico, por alguma razão, em vez de ter o byte correspondente à letra 'k' no state_lcd[3], tenho 0x00, resultando em "Soa".
Se usasse state="Soak ", teria mais um caractere, e então state_lcd[3] seria 'k' e state_lcd[4] tomava o valor de 0x00. (também já verifiquei esta situação)
O que me está a falhar neste código para me acontecer isto??
Obrigado a todos!