C ++ / Проблема с библиотекой JSMN, когда я использую memcpy с символом * - PullRequest
0 голосов
/ 09 июля 2019

Мои знания в C ++ очень ограничены. Я использую ESP32 с Arduino и анализирую данные в библиотеках JSMN. Мне удалось отобразить данные анализа с помощью printf, но я не могу поместить возвращаемые данные в символ *.

#define ARRAYSIZE 100
HTTPClient http;

     http.begin("http://servername/serv/ctrlBadge?entryCodeBadge=11d438cd1&entryidPorte=2"); //Specify the URL

     //Make requests
     int httpCode = http.GET();

        if (httpCode > 0 ) { //Check for the returning code
            String payload = http.getString();
            Serial.println(httpCode2); 

            int lim=payload.length()+1;
            char charBuf[lim];
            char *myStrings[ARRAYSIZE]
            payload.toCharArray(charBuf, lim) ;
            char *JSON_STRING = charBuf;
            Serial.println(JSON_STRING);    
            int i;
            int r;
            jsmn_parser p;
            jsmntok_t t[128]; /* We expect no more than 128 tokens */   
            jsmn_init(&p);
            r = jsmn_parse(&p, JSON_STRING, strlen(JSON_STRING), t, sizeof(t) / sizeof(t[0]));              
            if (r < 0) {
              printf("Failed to parse JSON: %d\n", r);
            }
            /* Assume the top-level element is an object */
            else if (r < 1 || t[0].type != JSMN_OBJECT) {
              printf("Object expected\n");            
            }
          else{
            /* Loop over all keys of the root object */  
            for (i = 1; i < r; i++) {
              if (jsoneq(JSON_STRING, &t[i], "codeBadge") == 0) {
                /* We may use strndup() to fetch string value */         
                printf("- User: %.*s\n", t[i + 1].end - t[i + 1].start,
                       JSON_STRING + t[i + 1].start);//Response                      
                       memcpy(myStrings[i], JSON_STRING + t[i + 1].start, sizeof(JSON_STRING + t[i + 1].start));          
                i++;
              } 
            }
            for (int i =0; i< ARRAYSIZE; i++) Serial.println(myStrings[i]); 
          }
        }

Мне удалось отобразить codeBadge с:

printf("- User: %.*s\n", t[i + 1].end - t[i + 1].start, JSON_STRING + t[i        + 1].start);//Response

Но я не знаю, как поместить переменную возврата в символ *.

Я пытался использовать функцию memcpy, но у меня ошибка:

Ошибка медитации гуру: Core 1 в панике (StorePro запрещено). Исключение не было обработано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...