[RESOLVIDO]Converter int em quatro bytes e ler quatro bytes e transformar em int

Boa noite garagistas.

Estou apanhando aqui com algo que deve ser muito simples, mas eu não sei como fazer. Estou tentando separar os primeiros quatro bytes da minha EEPROM(0x00, 0x01, 0x02, 0x03) e guardar um inteiro, depois quero pegar estes quatro bytes e transformar no inteiro novamente. Alguém tem alguma ideia de como fazer isso?

Pessoal estou mexendo em C, mas se vocês tiverem algum exemplo do próprio arduíno será muito bem vindo também.

Desde já eu agradeço a atenção de vocês. Obrigado.

Exibições: 576

As respostas para este tópico estão encerradas.

Respostas a este tópico

void setFloatEEPROM(int posicao, float valor){
float num = valor;
float *P_num = #
byte *P_num2 = (byte*)P_num;
byte a = *P_num2;
byte b = *(P_num2 + 1);
byte c = *(P_num2 + 2);
byte d = *(P_num2 + 3);
EEPROM.write(posicao, a);
EEPROM.write(posicao+1, b);
EEPROM.write(posicao+2, c);
EEPROM.write(posicao+3, d);
}

float getFloatEEPROM(int posicao){
byte a = EEPROM.read(posicao);
byte b = EEPROM.read(posicao+1);
byte c = EEPROM.read(posicao+2);
byte d = EEPROM.read(posicao+3);
float result = 0;
float *P_num = &result;
byte *P_num2 = (byte*)P_num;
*P_num2 = (byte) a;
*P_num2++;
*P_num2 = (byte) b;
*P_num2++;
*P_num2 = (byte) c;
*P_num2++;
*P_num2 = (byte) d;
return (float)result;
}

Esses 2 métodos basicamente vc vai passar o valor e a primeira posição da EEPROM em q vc quer gravar, e depois pra resgatar os dados é so vc passar a primeira posição novamente q ele te retorna o valor.

OBS.: Eu fiz pra float, que era pra minha necessidade na época, mas pra alterar pra inteiro é so mudar o tipo das variáveis.

Espero ter ajudado.

Att.

Valeu Diego ! Brigadão.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço