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

STM32 FOTA 例程之 cJSON使用

[复制链接]
STMCU-管管 发布时间:2018-9-29 13:48
前言 5 @  V4 f8 L. e4 Q" q2 b- z

+ r% s) c- ?9 l. @/ V在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。
3 J* i  O1 [! C, C5 G
9 N. }1 H" ]. U$ e# h6 ~) OJSON 格式 - L8 }7 k4 T0 \3 D! h7 M  d/ [
8 H- l: U6 o7 X6 y; k
JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。
- ?) `8 j6 z! |$ C0 V% O( |
" T2 t" d+ P' j* KJSON格式的数据看起来就像下面这个样子: 9 C1 E4 Y# r/ D& B
{; y, T$ H0 v2 L5 Z3 b0 h4 n
    “Room1”: {  - d' ]* g) U. x# q
       “LED”: “on”,  8 p) D$ k/ l. Q' Z' m% a/ J
     “Temperature”: “36” + V3 c2 v7 b5 K% e/ z6 i. D& d
    } . X' N9 U5 K+ h( s* ~
} 4 B4 C- ~* |: h2 D* k  w" p
这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。
4 R+ c9 d' e" d4 G6 J
8 H" j; u' c' H4 @
) O8 c" T# p4 S! X. \3 Y+ r6 {6 N
cJSON 的使用 ( Y: L9 V" |7 J! s# V6 c3 z5 b# V+ f! L

9 J3 T7 D1 X( o. Q: T/ t# O针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。 ! \/ U6 x0 Y2 S; c" ?6 A& T
+ I- G; S) F. k$ u6 P4 D
将 Cjson 添加到工程
1 h% h1 P& I6 g0 YCjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。
: k6 R/ [* K; K: |$ K6 O+ n' Y: i- s
数据结构 1 G, C( ?* u) g3 r0 M/ l  \- e
Cjson中使用下面的数据结构来表示 JSON数据。 , V; f0 J' V+ X* }  R! V

0 {( f3 k* ^5 Y- q7 u7 l$ J
QQ截图20180929133424.png
& s* @/ I9 a2 V
*next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child * J4 c7 R) t5 q/ t' _8 S. p
type : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等 " s* z0 q( I7 s0 K7 \% m
*valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。 4 O0 |7 A1 F6 l* E8 |+ m$ R
: h# k8 [' e1 f
使用 cjson 生成 json 数据
1 ~2 b; _3 Q: k  e下面我们看看如何使用 cjson来生成下面的数据:2 w! @1 W4 ~: h% y8 V
{   
/ @( f: B* m, ?+ K4 H“reported”: {        8 S* s1 V7 V& x2 D! h& d! W
“LED”: “on”,       : A$ u% @4 m* q- W) n
“status” : “normal”
  ^3 u7 T% f! E7 F    }
* @8 q: F' C  J. z} ( U5 W" W2 |6 [7 S3 S) d2 W
见下面的代码:
8 y' s" ~+ C& v& e' G& b
QQ截图20180929134146.png
QQ截图20180929134159.png    
& t* s0 U6 J5 `$ g. V, b
..
$ ]7 L8 C9 t& |7 \+ y7 H  B
: {2 A! c' p% S3 \了解更多,请下载后阅读8 l8 @) g+ k4 n! V0 R4 m: a

3 g8 O) l5 `5 D6 o! C% @% k下载地址1>>                                 下载地址2>>                                   更多实战经验>>

( P% }6 Y' N$ ]" U
赞 收藏 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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版