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

STM32 FOTA 例程之 cJSON使用

[复制链接]
STMCU-管管 发布时间:2018-9-29 13:48
前言
  S7 |2 I, l0 t- N  U0 c
0 b* ?" M5 K! P# F+ N! v. t在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。 5 w  N. d4 z7 O( w
/ F+ |, R/ a: D! V' d) y; r; p- I" x
JSON 格式 & V( y. ?7 x% \" d9 ]. @' e) I

+ j% k/ g) m5 y5 _, C0 n5 @JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。 5 ~4 L: j) k6 x7 q' i
4 l! r; ^! }3 s2 t+ h2 s" ~
JSON格式的数据看起来就像下面这个样子: - M+ ^- K5 s' ~9 q% u
{2 w* s: i  B! U; k* D
    “Room1”: {  " B# H- ?2 t0 p2 S
       “LED”: “on”,  
0 T3 |9 c! |2 F- E& W; ^+ b0 G5 J2 i     “Temperature”: “36”
( R1 @: ]& f* q. X8 C/ B. H    }
$ W0 l. j% W! j} 7 |1 ~( q* h5 S- \7 I
这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。
* v0 Y7 L( X8 ?  ]8 X( c7 Q/ n2 Q1 ], A$ T6 U6 A
& W8 M/ J( c8 h8 m6 Y! k
cJSON 的使用 . G( L/ u( V9 O  w1 V! g: l

" r- F# a1 N. E8 \% w# b6 h% V, m针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。 1 |4 }# t' A( A
: ?$ T9 Z/ b; [. o# O; y
将 Cjson 添加到工程
) S! }' n) u! h- D( i5 Z" |/ @Cjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。 ( l* [& W. @# W6 N7 q2 F- T, T. y8 U
% C$ B3 a% q- D/ C1 R* j% ]
数据结构 / \7 ~3 I1 D3 b) l# T8 U1 N
Cjson中使用下面的数据结构来表示 JSON数据。 # a3 ]* _) v0 X) P0 o( l7 ~

  A# B2 i  V9 S* r
QQ截图20180929133424.png
- u* ^0 ]# x5 z8 Y
*next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child
2 L% R7 w3 f& j) Ptype : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等
8 [8 ?8 W. J, C6 N5 N! L*valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。 8 z$ x2 [) z) S/ Q& _. I

. [5 J6 F0 ]" n$ ~3 z. O1 |9 k使用 cjson 生成 json 数据 . r# ?; w' S, Q: Y$ a
下面我们看看如何使用 cjson来生成下面的数据:
6 E% Z# V/ u+ w: x6 w% V3 Y6 t6 ? {   
: K, e4 Q# t$ I( H& a“reported”: {        * r+ K4 B1 u) t2 o. @0 W: S
“LED”: “on”,       ! l, X1 R; p3 a% S
“status” : “normal”
( {. X+ t/ l/ q    } / r/ `! l5 ^- C/ O2 H: n( e+ |
} 8 _" \4 ~. _/ Z0 j
见下面的代码:
6 f9 V2 X& v( G0 L1 U3 G+ t
QQ截图20180929134146.png
QQ截图20180929134159.png    

$ n* s" |" m/ U( A. m5 g% N
..' s  c. w; q( w' S. X4 w( f
$ ]1 D! S/ T& z  I; C
了解更多,请下载后阅读. v" r8 b( r) N2 _5 f2 M) X' h

. k8 F* N9 J& o* {; u0 ?下载地址1>>                                 下载地址2>>                                   更多实战经验>>
3 M: e  D  B$ Y, q
收藏 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 手机版