Hola deseo compartir un codigo que estuve revisando al parecer contiene punteros, deseo saber que entienden uds por esta expresion, que hace?:
byte* a1 = (byte*) &var1;
Aqui les deje la subrutina completa:
void add_float(float var1) //funcion para agregar flotantes al payload
{
byte* a1 = (byte*) &var1; //convertimos el dato a bytes
String str1;
//agregamos al comando AT$SF= nuestra informacion a enviar
for(int i=0;i<4;i++)
{
str1=String(a1[i], HEX); //convertimos el valor hex a string
if(str1.length()<2)
{
bufer+=0+str1; //si no, se agrega un cero
}
else
{
bufer+=str1; //si esta completo, se copia tal cual
}
}
}
Los punteros son uno de los temas más complicados para los principiantes de Arduino y es posible escribir la gran mayoría de bocetos sin tener que encontrarse con los punteros. Sin embargo, para la manipulación de ciertas estructuras de datos, el uso de punteros puede simplificar el código, y el conocimiento de la manipulación de punteros es útil para tener en la propia caja de herramientas.
&var1 apunta a la dirección de la variable float var1
el puntero es del tipo byte
entonces esa forma de usar el typecast hace que
byte* a1 = (byte*) &var1;
a1 se llene de los bytes que conforman la variable var1 para luego poder convertirla a un formato que supongo será un JSON final.
str1=String(a1[i], HEX); //convertimos el valor hex a string
con esto tomas cada byte del puntero a1 a formato hexadecimal en el String str1
Supongo que bufer sera otro string que concatena cada byte y le agrega un 0 si es de solo 1 digito