2017-10-11 22 views
0

STM32F103C8T6 및 KEIL IDE와 함께 cJSON 파서를 사용하려고 시도했습니다 문제는 JSON 문자열의 최대 4 개 요소에서 구문 분석기가 잘 작동한다는 것입니다. 포기. 내가 문자열cJSON은 4 개 이상의 요소를 구문 분석 할 수 없습니다

const char * my_json_string = 
     "{\"device\":\"16\",\"class\":\"master\",\"call\":\"start\",\"ar1\":\"10\",\"ar2\":\"20\"}"; 

에 키 - 값의 다섯 번째 쌍을 추가 할 때

#include "cJSON.h" 
const char * my_json_string = 
"{\"device\":\"16\",\"class\":\"master\",\"call\":\"start\",\"ar1\":\"10\"}"; 

int main (void){ 
    char * device; 
    char * cls; 
    char * call; 
    char * arg1; 
    cJSON * root = cJSON_Parse(my_json_string); 
    if (root == NULL){ 
     printf(cJSON_GetErrorPtr()); 
    return 0; 
    } 
    cJSON * dev = cJSON_GetObjectItem(root, "device"); 
    cJSON * cla = cJSON_GetObjectItem(root, "class"); 
    cJSON * cl = cJSON_GetObjectItem(root, "call"); 
    cJSON * ar1 = cJSON_GetObjectItem(root, "ar1"); 
    device = dev->valuestring; 
    cls = cla->valuestring; 
    call = cl->valuestring; 
    arg1 = ar1->valuestring; 
    printf (device); 
    printf (cls); 
    printf (call); 
    printf (arg1); 
} 

는 오류 포인터

,"ar2":"20"} 

에게 동일한 코드를 던졌습니다 : 이 코드는 OK 것 같다 NetBeans IDE와 함께 데스크탑 용으로 컴파일하면 문제가 없습니다. 다음은 STM32의 RAM지도, 내가 여기에 아무런 문제가 볼 :

Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00000ea0, Max: 0x00005000, ABSOLUTE) 

    Base Addr Size   Type Attr  Idx E Section Name  Object 

    0x20000000 0x00000014 Data RW   5 .data    system_stm32f10x.o 
    0x20000014 0x00000014 Data RW   18 .data    main.o 
    0x20000028 0x00000008 Data RW   35 .data    usart_f10x.o 
    0x20000030 0x0000000b Data RW   56 .data    led_matrix_64x32.o 
    0x2000003b 0x00000001 PAD 
    0x2000003c 0x00000004 Data RW   63 .data    time_f10x.o 
    0x20000040 0x00000014 Data RW   155 .data    cjson.o 
    0x20000054 0x00000004 Data RW   357 .data    mc_w.l(mvars.o) 
    0x20000058 0x00000004 Data RW   358 .data    mc_w.l(mvars.o) 
    0x2000005c 0x00000041 Zero RW   34 .bss    usart_f10x.o 
    0x2000009d 0x00000003 PAD 
    0x200000a0 0x00000800 Zero RW   54 .bss    led_matrix_64x32.o 
    0x200008a0 0x00000200 Zero RW   7 HEAP    startup_stm32f10x_md.o 
    0x20000aa0 0x00000400 Zero RW   6 STACK    startup_stm32f10x_md.o 

답변

0

문제는 힙 크기 512 킬로바이트가 너무 낮은 것입니다.