недопустимые операнды типов «const char *» и «const char [2]» для двоичного «оператора +»

c++ gps lora

2890 просмотра

2 ответа

Используя плату Adafruit Feather M0 с радиоприемником LoRa, я хочу отправить GPS-положение на приемник. При попытке создать пакет данных с меткой времени ISO 8601 и значениями широты и долготы GPS я использую следующий код для создания charмассива, а затем отправляю его:

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);

Я продолжаю получать сообщение об ошибке:

недопустимые операнды типов «const char *» и «const char [2]» для двоичного «оператора +»

Куда я иду не так?

Автор: El Stevo Источник Размещён: 08.11.2019 11:27

Ответы (2)


0 плюса

Решение

Вы не можете объединить такие строки в C. Попробуйте что-то вроде

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);

см. здесь некоторую документацию по форматной строке ( "%04d-...") внутриsprintf

Автор: Sean Размещён: 20.08.2016 03:04

0 плюса

Я собираюсь угадать и сказать, что вы пришли из питона.

Я думаю, что вам нужно, это std :: stringstream

Автор: clu Размещён: 20.08.2016 03:11
Вопросы из категории :
32x32