Связь двух девайсов - с одной стороны - аппаратный UART, с другой - софтовый.

Тема в разделе "Arduino & Shields", создана пользователем Gomez, 1 дек 2017.

  1. DIYMan

    DIYMan Guest

    Вы вообще не понимаете, что делаете. Вы пытаетесь сохранить УКАЗАТЕЛЬ на область памяти, который через минуту (например), будет указывать на мусор, понимаете? Вы не вправе распоряжаться передаваемыми параметрами, кроме как ВНУТРИ функции. Извне - указатели будут невалидны, понимаете?

    Либо вы используете String, либо - выделяете свой буфер и храните там до посинения, что вам надо. И да - почитайте основы С++, всё-таки. Пример, который делает то, что вам надо, без использования String:

    Код (C++):
    char* ssid = NULL;
    char* password = NULL;


    void paramsHandler(const char* param, const char* value)
    {
       if(!strcmp(param,"ssid"))
       {
          delete [] ssid;
          ssid = new char[strlen(value)+1];
          strcpy(ssid,value);
       }
       else if(!strcmp(param,"password"))
       {
          delete [] password;
          password = new char[strlen(value)+1];
          strcpy(password,value);
       }
    }
    Собственно, практически то же самое делает класс String внутри себя.
     
    Gomez нравится это.
  2. Gomez

    Gomez Гик

    Спасибо Вам еще раз! Я обязательно найду раздел про "char" в какой-нибудь книге "С++ в картинках для самых маленьких", потому что (серьезно) не осилил пока концепции не просто переменной, а указателя на область памяти. Но я в конце концов осилю на свежую голову и все станет на места (надеюсь).