2016-08-20 2 views
0

En utilisant une carte Adafruit Feather M0 avec radio LoRa, je veux envoyer la position GPS à un récepteur. Lorsque vous essayez de créer un paquet de données avec un horodatage ISO 8601 et lat/long valeurs GPS J'utilise le code suivant pour créer un tableau char puis envoyez-le:Opérandes non valides de types 'const char *' et 'const char [2]' à binary 'operator +'

char radiopacket[40] = {GPS.year + "-" + GPS.month + "-" + GPS.day + "T" + GPS.hour + ":" + GPS.minute + ":" + GPS.seconds + "Z" + "," + GPS.latitude + "," + GPS.longitude}; 
rf95.send((uint8_t *)radiopacket, 40); 

Je continue à obtenir l'erreur:

invalid operands of types 'const char*' and 'const char [2]' to binary 'operator+'

Où est-ce que je me trompe?

Répondre

0

Vous ne pouvez pas concaténer des chaînes comme ça dans C. Essayez quelque chose comme

char radiopacket[40]; 
sprintf(radiopacket, "%04d-%02d-%02dT%02d:%02d:%02dZ,%f,%f", GPS.year, GPS.month, GPS.day, GPS.hour, GPS.minute, GPS.seconds, GPS.latitude, GPS.longitude); 
rf95.send((uint8_t *)radiopacket, 40); 

voir here pour la documentation sur la chaîne de format (le "%04d-...") dans sprintf

+1

'sprintf' est pas sûr, s'il vous plaît utilisez' snprintf', voir [ici] (https://stackoverflow.com/a/3662918/2666212) – Mike

+0

Merci ! Cela a fonctionné –

0

Je vais deviner et dites que vous venez de python.

Je pense que ce dont vous avez besoin est à la place std::stringstream