Строка соединения Arduino и *char

Я новичок в ардуино и столкнулся с проблемой. Я хочу отправить данные через мой esp8266 на мою php-страницу. Но я не знаю, как соединить свои данные с этим запросом GET.

Вот мой код:

String card = "2-3d-fg-d6-12-68-32-3f-35-45-42-53-2a-3";
char *hello = "GET /insert.php?card="+card+"&error=1 HTTP/1.1\r\nHost: testsite.com\r\n\r\n"; 
wifi.send((const uint8_t*)hello, strlen(hello));

И это то, что я получаю в консоли arduino:

ошибка: невозможно преобразовать «StringSumHelper» в «char*» при инициализации невозможно преобразовать «StringSumHelper» в «char*» при инициализации


person Jure    schedule 24.07.2015    source источник


Ответы (2)


Вы можете использовать функцию std::string::c_str(), которая возвращает указатель на буфер const char:

String card = "2-3d-fg-d6-12-68-32-3f-35-45-42-53-2a-3";
char *prefix = "GET /insert.php?card=";
char *postfix ="&error=1 HTTP/1.1\r\nHost: testsite.com\r\n\r\n"; 

String url = prefix +card+ postfix;
const char *url_complete = url.c_str();
//...

См. также соответствующий пост: Как объединить строку и константный символ?< /а>

person user3704293    schedule 24.07.2015

Используйте функцию c_str(), которая возвращает указатель на константный символ.

String id = "14";
char *hello = "GET /api/weather/specific.php?id=";
char *hello2 = " HTTP/1.1\r\nHost: evive.000webhostapp.com\r\nConnection: close\r\n\r\n";
String url = hello + id + hello2;

const char *send_url = url.c_str();
wifi.send((const uint8_t*)send_url, strlen(send_url));  // For Arduino Mega and ESP8266
person Dhrumil Makadia    schedule 04.12.2019