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

STM32 FOTA 例程之 cJSON使用

[复制链接]
STMCU-管管 发布时间:2018-9-29 13:48
前言 % n, u( }$ M/ X% _' Z: Q

' u5 T" p# c$ \2 ?" K+ O/ g在 STM32 OTA例程中,设备端(stm32F769探索版)与云端交换数据使用的是 json格式。在本篇文章中,将对 json格式以 及 Cjson的使用及注意事项进行说明。 2 ?  A# `% w5 l) n8 W' }  n8 g3 u

! |( D- q  K& Q2 y' dJSON 格式
7 l: P3 i! |7 W3 K
! z+ f6 T& r5 A8 V0 }" ?JSON(JavaScript Object Notation)是一个轻量级的数据交换格式。既便于开发者读写,也便于机器分析和构建。它独立于 开发语言,是一种文本格式,很适用描述在各个系统间交换的数据。 1 ^% g* g( `9 N8 |3 N; i& E

- V) ^" F1 j0 h/ I  QJSON格式的数据看起来就像下面这个样子: % @; A! c$ l( {5 a, Q$ u, b' s% M
{
* ^( R) ?2 ^" q! m    “Room1”: {  
6 F, h; B! Y9 x& a" p       “LED”: “on”,  
9 Y$ i& i9 o( Q& i' a     “Temperature”: “36”
2 i; @& k" q) u' L& A    }
, k  V* Q) i: Y. b  e! w} 5 E2 }  F9 B) Q# ?& y: q3 M& n- y
这个 JSON数据描述的是 Room1的 LED灯状态以及温度值。它由一组“名称(key)”以及对应的“ 值(value)”组成。 “名称”和“ 值”之间由“ :”分开。各组“名称:值”对之间由“,”符号进行分割。 * I9 ^" {8 ^/ I5 w. L% y
6 j) [/ U% o. t. Z3 d1 S3 v5 V

! L: z5 P2 t# _- J3 H6 VcJSON 的使用 , `- l/ O0 c: \1 F3 @- i5 u, @
3 s. ~- y5 D& O* b! c
针对不同的开发语言,网上有很多 JSON的实现, demo里使用的是 Cjson,版本 1.6。它的源码可以在 http://github.com/DaveGamble/cJSON上下载。 & S3 J+ ]- V0 q1 Y7 R

" M4 r& @1 s) S将 Cjson 添加到工程
# h& ~" l0 ^/ _0 h/ kCjson只有一个 C文件 Cjson.C和一个头文件 Cjson.h。所以只需要将这两个文件拷贝到工程文件夹中,并将 Cjson.C添加到 工程中就可以了。 $ }+ Q, y4 t' {$ n5 I1 i

$ a& B/ _# a/ g: l. I* @* p数据结构 % d5 ^  z, F, v! @- @; `" r- O
Cjson中使用下面的数据结构来表示 JSON数据。 $ V3 I& F1 O9 j

# F. W8 f/ g8 Z7 Q! ^0 ?
QQ截图20180929133424.png

  b' e$ F8 Y+ A*next和*prev 指针可以用来遍历“矩阵”或者“对象”类型的 JSON数据链表;这两种类型的 JSON数据还会有一个子数据 指针*child
8 Y) j' u5 `1 o, p! C9 ^type : 表示该 json数据的类型,比如数字,字符串、矩阵、对象等 ! U# e# M0 K1 V2 f" E
*valuestring, valueint, valuedouble和*string指针分别指向该 json数据类型具体的值,视其类型而定。 $ T9 C7 l" d4 j, r

" c( v  r0 ?$ X8 }2 n! O9 `6 F0 E使用 cjson 生成 json 数据
. V$ G# Z4 r7 [. q5 ^下面我们看看如何使用 cjson来生成下面的数据:& w5 o# a( v) I6 C) W
{    1 X% S- Y8 w8 O1 r
“reported”: {        
1 o$ n7 P% ]3 s0 i6 ^% b4 F* r “LED”: “on”,       7 }- D5 ?1 \* e
“status” : “normal”
. @9 _6 D; J1 i" g; h% v( B* q8 M    } 2 ?% b$ @7 E; V2 X8 J+ B$ F
}
' }4 u: ]( u* H5 D: B! o# [  ?见下面的代码:
7 r: [1 o. W: N1 E: X, i; B
QQ截图20180929134146.png
QQ截图20180929134159.png    

, G9 ]" |/ w% y0 f% d
..
! b" W/ I, A6 i$ h
9 ]8 `6 L/ u4 S9 X+ g了解更多,请下载后阅读
+ I; I0 b0 S2 U, b
: e! ^# E- ?* Y9 T: u1 P下载地址1>>                                 下载地址2>>                                   更多实战经验>>
! f( P$ r8 l/ V; g8 l4 x% x' 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 手机版