¿Qué devuelve a sensores.getTempCByIndex (0)? Si se trata de una cadena, deberías poder lanzarla de la misma manera que la cadena de prueba.
Si no es un número (¿flotante?), ¿el segundo argumento de client.sendto () tiene que ser un uint8_t *? ¿Puedes lanzar de uno a otro?
¿Necesitas lanzarlo? No sé si la función client.sendto () y lo que sea que la esté recibiendo están en la biblioteca o están escritos por usted. Si los ha escrito, podría modificarlos para que acepten el tipo de valor devuelto por sensores.getTempCByIndex (0), entonces no necesitaría una conversión.
[EDITAR (en respuesta a los dos primeros comentarios a continuación)] Sé que los bocetos de Arduino son un subconjunto de C, pero no estoy seguro de qué bits de C funcionan y cuáles no. Hay una discusión aquí sobre cómo lanzar un flotador (número de punto flotante) a un cadena en el Arduino, pero parece estar diciendo que el método puede requerir mucha memoria. Básicamente, una conversión se realiza cuando cambias el tipo de una variable (por ejemplo, float - > string), en C, normalmente lo haces poniendo el nuevo tipo entre corchetes que precede a la variable a cambiar.
Mirando el código que tienes:
client.sendto(11, (uint8_t*)"test\n", 6);
que parece estar lanzando la cadena "test \ n" (normalmente llamada literal de cadena) a un uint8_t *, que parece ser un puntero a un byte de datos de 8 bits o posiblemente el primer byte de una matriz de uint8_t bytes. Supongo que toda esta llamada a la función está convirtiendo la cadena en 6 bytes para transmitir, siendo 6 la longitud de la cadena.
¿El receptor decodifica automáticamente el mensaje de nuevo a una cadena? Los comentarios en el código fuente de su biblioteca parecen sugerir que puede enviar cualquier dato codificado en binario como el paquete en su datagrama / mensaje, así que en lugar de convertir su flotante existente en una cadena, podría convertir la parte del número entero en un entero y Envíelo, luego tome los primeros 2 o más dígitos de la parte decimal y envíelos como un entero y luego reconstruya el flotador en el extremo lejano.
En la parte inferior de esta página se menciona la función estándar de C, itoa, que se utiliza para convertir un número entero. (número entero) a una cadena ascii, si puede dividir su número en una parte de número entero y una parte decimal, puede codificarlos usando esto como una cadena y concatenarlos (el programador de computadoras habla para unirlos) en "wholenumberstring" + " . "+" cadena decimal "y luego coloque la cadena resultante en client.sendto () asegurándose de que el argumento final para client.sendto () sea la longitud de la cadena recién formada. También le indica en esa página cuál será la sobrecarga en términos de memoria al usar diferentes implementaciones de itoa.
Un pensamiento adicional, ¿cómo están entrando sus datos de temperatura en el Arduino? ¿Obtiene un valor flotante o realmente obtiene un valor analógico (por ejemplo, en el rango de 0 a 255 según la resolución) que luego se convierte a un valor decimal. Podría ser más fácil enviar los datos sin procesar como una cadena a través del enlace y convertirlos en el otro extremo.