Преобразование байта * в строку в Arduino

Я пытаюсь запросить основную информацию с сервера, используя 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("...");
}

1

Решение

Класс string имеет конструктор, который принимает C-строку с нулевым символом в конце (массив char)

Так что на самом деле вы могли бы сделать:

    std::string str(ethernetCharArray);

Но я вполне уверен, что байт сам по себе является unsigned char *, так что вы можете сделать это:

    size_t len;
std::string s( reinterpret_cast<char const*>(EthernetByte), len ) ;
2

Другие решения


По вопросам рекламы [email protected]