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

STM32 FOTA 例程之 cJSON使用

[复制链接]
STMCU-管管 发布时间:2018-9-29 13:48
前言 2 y& F% N+ U" d  A& E

  A) W6 g  {* B  K& v在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。
+ z% g$ Z7 z8 B: J2 m8 Z0 t; C* H0 ^4 E. ?- Q; D
JSON 格式
: ]8 `& r( a, L5 y$ t5 @, p3 {; f2 }2 p8 H7 \* t, ^
JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。
: T: j  G& L+ }9 m: C% a$ F4 _0 T& Z- \7 c$ ]; t
JSON格式的数据看起来就像下面这个样子:
# D0 _* r2 w  s" J4 b) L% h{1 h; {* L& X7 j: Z. s3 ^, D
    “Room1”: {  8 f- w8 X9 c7 y. D- X* N
       “LED”: “on”,  , ~9 f( b: s0 C& }6 }9 l! ?
     “Temperature”: “36”
! u! h5 ?2 w. m- l8 k1 u( D3 \; [    } & I4 q  f" e) G, t
}
6 I! @; x5 R3 O$ |0 r! p( c9 J! Z这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。
5 ?# H5 h( X4 r, q1 }# m. ]5 c1 V/ C  h3 j. w3 m; c1 l; j
& d( h- i! q: B; y7 C9 b
cJSON 的使用
3 Y5 `) {% l* e" Y, I1 b1 _. q0 d+ Q* c
针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。
4 S1 A6 P0 ^. F( s% f7 R) C
* Y( N) H6 [: v) h' d将 Cjson 添加到工程 / ~" j- }1 A7 r% t
Cjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。 5 M/ f+ t9 _$ X+ P3 U3 I5 f) D# H

3 C4 H% H! H( z# j4 M数据结构
% E. T! M% ?; t; J2 {! t) {Cjson中使用下面的数据结构来表示 JSON数据。 + A; W9 E2 o$ R# d  |

' {/ A# \, }8 E/ J) X- y
QQ截图20180929133424.png
" e; B4 t1 f* S
*next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child 7 z( V" V/ O' r$ @, m2 h
type : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等
4 p; A# B8 Z6 Y" _3 O  |6 l*valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。
' r, f' w9 k3 m3 `0 u9 ~$ P
1 z. Y' Y; h/ Y1 A+ l+ i9 P; I% y使用 cjson 生成 json 数据
3 n: {4 K' z3 k! \/ d8 g下面我们看看如何使用 cjson来生成下面的数据:
/ w: e' o) J# m9 X! E& } {   
- U( A% b6 Z# [8 K* t' T0 l“reported”: {        
# J: D7 \4 L: q3 G7 m" j “LED”: “on”,       / I" p/ Z6 U6 v+ o4 s# L
“status” : “normal” 9 a$ u  U  ?- Y9 V+ l: a( t
    }
& ?$ ^9 l( a' j/ a9 x9 z5 N' L} 4 a# u2 n7 ]- V! y
见下面的代码:
% Z8 d5 h6 o* {$ z2 {0 M
QQ截图20180929134146.png
QQ截图20180929134159.png    
# w" S1 K6 P- y' Y7 ^/ S
..0 v4 m, R, v, }

. n5 k- N7 z5 o& |4 i了解更多,请下载后阅读
( l! Q! J+ s" E  b- d; z+ @9 V0 h* b& ^0 w; j& P7 T
下载地址1>>                                 下载地址2>>                                   更多实战经验>>
" E* s3 U/ }9 O: V! P
收藏 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 手机版