你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 FOTA 例程之 cJSON使用

[复制链接]
STMCU-管管 发布时间:2018-9-29 13:48
前言 / V$ i9 y& ^+ l& f# R

5 g% ^9 m5 x% i" K+ s4 Y在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。
- R# x" g0 E2 [  f/ g9 L% r: V, i% W
JSON 格式
8 j. J! V, j: C( Q. x& }3 i, K* e" _
JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。 5 j, ~, |- Q/ C* E# j& A  O

# o: K7 T2 D. w5 B: n+ V) \# Q: FJSON格式的数据看起来就像下面这个样子:
9 v0 H  N/ T/ T* Y{
9 v; d8 A' t. S, Z: u7 h    “Room1”: {  
; [5 ~: a+ B5 I3 P5 E0 r* O       “LED”: “on”,  
$ F; ?' O  L* W) Q2 L- f     “Temperature”: “36” : E2 y' P+ K8 x1 B2 O
    } 8 j9 }" D: ]! n
} 6 V; P: [( w% C, X  `9 B
这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。 $ n4 y# P* Y! @) b7 u

4 b0 v) U' U' x" ^/ f

& q$ t9 m* p3 ~; l5 q8 _cJSON 的使用
( \$ Z7 F( B. \
" h% X+ k# R! t% ]) ^$ p2 O! ~  J3 C针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。 0 ^% N- M7 Y1 X2 M6 r' Y

' Y3 h- e! H; t: i: j4 \5 Q+ n将 Cjson 添加到工程 ) s0 l% T; b3 Q. d$ B8 B. A9 @
Cjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。 5 r  k, m& e/ H" T. [$ m7 j5 P2 B! O
. U! \/ X* W+ y2 k# E0 D
数据结构 8 c$ I+ b, a9 R9 u4 e8 Y/ f6 ^( ~
Cjson中使用下面的数据结构来表示 JSON数据。
7 v, [4 W& ]5 s# D) y: Y/ O- C; _+ D/ A, w/ Y! B9 N3 u
QQ截图20180929133424.png
6 B# i8 X8 y. H6 s4 G% d) g
*next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child
" Q. O# Q, @6 k7 I1 n3 Vtype : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等
+ u) X+ \+ s" [/ y: C1 |*valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。
! b2 Q4 G! P) a+ y$ R- l, r; L
& L7 P4 G9 p% }& M  B使用 cjson 生成 json 数据 4 [) G$ a/ r3 c$ E/ ?
下面我们看看如何使用 cjson来生成下面的数据:
, O3 M; _+ ^3 b5 E) G) ?0 |, P/ o' G {   
$ e: a, |+ k0 s“reported”: {        ! e5 U2 ]. {# ]) r. h
“LED”: “on”,      
; m) E- {7 d2 F$ \: o“status” : “normal”
4 n+ A5 ?% A( ]3 r5 X3 d    }
& m! `$ V- _. u/ \3 P( l}
+ C: }" D" `% Y" @见下面的代码:) t! d1 h$ Q( i
QQ截图20180929134146.png
QQ截图20180929134159.png    

/ `+ H/ e: c6 r2 j
.., |3 b! [/ E, M5 k6 F2 Q
. S8 @7 ^, B- S' x% v# r8 X
了解更多,请下载后阅读
" A: h' w) {- N* q
5 f1 P) y, p0 F# @- }- F( u7 {下载地址1>>                                 下载地址2>>                                   更多实战经验>>

' ]1 Q# L) @3 n( u( X' K/ h
收藏 1 评论2 发布时间:2018-9-29 13:48

举报

2个回答
AI++ 回答时间:2018-10-1 07:44:53
这个在远程数据交互过程中可以看到有便捷性,在独立的单片机系统中有什么优势吗?
wweeww 回答时间:2018-10-1 22:13:43
请问这个OTA demo 在哪 ,就是源程序 ,我找半天没找着

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版