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

STM32 FOTA 例程之 cJSON使用

[复制链接]
STMCU-管管 发布时间:2018-9-29 13:48
前言
: W$ g* ?7 X$ t6 j& X+ {3 a# `+ H! x
在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。 6 M0 k9 V. W- W

3 q, g% N8 o: c2 g* U/ i/ X, m$ E" @JSON 格式
4 n4 x1 Y7 Z9 Y% N* c) X" R7 o
JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。 , _- u5 ^  ~9 z. c2 i1 f3 y

! I9 ]- Q6 s- Z7 [( X% t+ E* mJSON格式的数据看起来就像下面这个样子: ; F, d4 R7 p( |5 N# W
{
, ]) M; c& [! D$ M% Y, s; k  ]    “Room1”: {  ) e  @4 c/ z, u1 U
       “LED”: “on”,  ( X8 B: g" ?' K  \' p; x
     “Temperature”: “36”
* r" C  @6 N# U+ |. K/ C    }
; Z4 O8 P" g) W" A* ~% [}
! _  C: L' K: A3 i% e- D; ]; G这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。 ( x: @/ j3 n. ?" j9 c( R' J, u4 [

7 S( `) h# |% b7 ~$ `' ~2 K( S! f
* s" t' O  {# C3 v0 K, J
cJSON 的使用
5 w; y- R: O7 [0 E. K7 V1 {, T( r  G) J* D( E7 a3 ]6 s
针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。 . \5 g4 h5 p' `) ~8 z

2 c+ k' U# V; u( ?# A6 N( a/ L将 Cjson 添加到工程
3 ]' z8 |) ?2 UCjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。
/ }! x) I) k& @( G9 D$ B
! I: l# p; J( V6 P' P数据结构
0 }. l7 R* \9 e. \* y( VCjson中使用下面的数据结构来表示 JSON数据。
) F2 G5 ~0 ]- }9 u% a
4 y$ j( j1 i. W5 \6 N
QQ截图20180929133424.png

1 c4 }: U$ u  t) \* a*next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child
) l$ N) }9 H6 Q& Gtype : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等 . N* Y, W+ f, F3 j  z! h
*valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。
/ i$ P1 {& L+ ^
; e' }2 ?7 j1 Z. e, `: m使用 cjson 生成 json 数据 6 O, G# I) Q3 y7 a$ V* R7 }
下面我们看看如何使用 cjson来生成下面的数据:
, E4 k5 H: [3 P$ a; `& m, I: X {      q) i! K) u# m% X  A
“reported”: {        ; a, X+ O' B3 v3 _$ F
“LED”: “on”,       & ]6 g: O5 f3 H% e: P5 A, u4 {
“status” : “normal” # K1 [- q2 p  M0 b! B8 k2 t% O
    } $ X: z; P6 J$ w4 ~- h- v
}
1 x4 K+ T$ x  D6 b+ c$ D5 |见下面的代码:' I! r6 R& V% w9 G2 i4 C2 _8 Y: G4 G
QQ截图20180929134146.png
QQ截图20180929134159.png    
& H) Z( G! O" W9 H7 @
..
# N/ U' d3 O# D- P6 c# ?
( \0 }, [& J5 w了解更多,请下载后阅读
7 \; E4 z3 p- Z9 r7 z
7 v& a# F, P7 m; E  y下载地址1>>                                 下载地址2>>                                   更多实战经验>>
; Q# w, y# x/ Q4 g0 ^, [
收藏 1 评论2 发布时间:2018-9-29 13:48

举报

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

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版