Я пытаюсь запросить основную информацию с сервера, используя Arduino Uno и модуль Ethernet ENC28j60. Я использовал webclient.ino, пример из библиотеки Ethercard. Я могу получить данные, но мне трудно преобразовать их в строку. Данные поступают в виде байта указателя (?) (Например, байта *), и я легко могу преобразовать его в const char *. Оттуда, однако, я не знаю, как преобразовать его в строку, которой я могу управлять намного проще. Критическая часть моего кода ниже. Полный код здесь: http://pastebin.com/kXdchwYd
byte Ethernet::buffer[700];
static uint32_t timer;
const char website[] PROGMEM = "www.yoerik.com";
// called when the client request is complete
static void my_callback (byte status, word off, word len) {
Serial.println(">>>");
Ethernet::buffer[off+600] = 0;
//How to get Ethernet::buffer+off into a string?????
Serial.print(( const char* )Ethernet::buffer+off);
Serial.println("...");
}
Класс string имеет конструктор, который принимает C-строку с нулевым символом в конце (массив char)
Так что на самом деле вы могли бы сделать:
std::string str(ethernetCharArray);
Но я вполне уверен, что байт сам по себе является unsigned char *, так что вы можете сделать это:
size_t len;
std::string s( reinterpret_cast<char const*>(EthernetByte), len ) ;