안녕하세요 공돌이는공돌공돌 입니다.
이번 포스팅에서 다뤄 볼 주제는 Json Format에 관한 내용입니다.
Json Format은 주로 Embeded Client와 Web Server간 통신할때 쓰는 프로토콜 입니다.
STM32F4RE411을 가지고 W5500 TCP/IP Chip과 연동하여 웹과 이더넷 통신을 하는데 리눅스 Json 함수는 동작을 하지 않고, 아두이노 함수는 C로 변환하는데 시간이 소요 될 거 같아 직접 C 전용 Jason Parsing 함수를 만들기로 하였습니다.
Jsaon 형식은 대략 아래와 같으며,
{"rxpk"[{"tmst":11,"chan":0,"rfch":0,"freq":914.900000,"stat":1,"modu":"LORA","datr":"SF7BW125","codr":"4/5","lsnr":24,"rssi":-49,"size":15,"data":"QNnzWQgAAAABlMkMXrsb"}]}
앞에 키워드가 있고 뒤에 value 혹은 문자열로 data가 오는 형식으로 되어 있습니다.
제가 만든 프로젝트는 Keil MDK 5.17을 사용하고, 보드는 Nucleo-F411RE를 사용하였습니다.
함수를 살펴보겠습니다.
return 값 : Error 검출 -1일시 Error 발생입니다.
*total_str : Jason 전체 문자열 입니다.
total_str_len : Jason 전체 문자열의 길이 입니다.
*word : 검색할 Keyword 입니다.
맨끝 인자 : 추출할 Data입니다. (숫자, 문자열, 소숫점)
json_chk_val : 해당 키워드가 있는지 확인하고 word_idx로 그 위치를 알려줍니다.
json_get_decimal : 해당 키워드의 10진수 값을 추출해 줍니다.
json_get_float : 해당 키워드의 소수점 값을 추출해 줍니다.
json_get_str : 해당 키워드의 문자열로 된 값들을 추출해 줍니다.
Test는 아래와 같이 진행 하였습니다.
아래는 실행 화면 입니다.
테스트 한 프로젝트는 첨부 하였으니 사용하시면 됩니다.
첨부한 프로젝트는 제가 사용하는 Web Server에 맞춰져 있을수도 있습니다. 사용하시다가 본인이 사용하는 Server의 형식에 맞게 바꿔 사용하시거나 코드의 보완 등을 하여 사용하시면 됩니다. (급하게 만들어 코드가 다소 비효율적일 수도 있습니다.)
Json_test.zip
'공돌 이야기' 카테고리의 다른 글
LoRa 사용기 (0) | 2016.09.09 |
---|---|
온습도 센서 DHT11 사용기 (0) | 2016.09.06 |
BLE to Ethernet (0) | 2016.08.05 |
IoT에 관한 생각 (0) | 2016.06.13 |
Wiznet W7500으로 ARM Cortex-M0 MCU 완전정복 강의 후기 (0) | 2016.06.13 |