【面对的问题】
在物联网产品的开发过程中,对JSON格式的数据处理是一个强需求,例如亚马逊的 AWS IOT平台,设备与后台之间的通讯数据都是JSON格式,先瞄一眼大概的样子:
这是一个真实产品的通讯数据,设备端的代码C代码中利用cJSON这个开源工具来完成JSON字符的解析和组装工作。代码我这里就不贴了,解析函数很长,要滚动好多次鼠标滑轮。而且一不注意释放资源就会发生内存泄漏!
那么,是否有更好的方式来解决这个问题呢?
答案就是这篇文章介绍的duktape引擎!
【Duktape简介】
这里只是简单介绍下duktape,详细的介绍大家自己去google。
Duktape 是一个嵌入式 Javascript引擎,专注于可移植性和空间占用。
易于集成到C/C++项目中,使用API实现C代码与JS代码的双向调用。
【代码说明】
1.文件说明
duktape.c:引擎主要C文件。
duktape.h:引擎头文件。
main.c : main函数所在文件。
main.js :Javascript文件,处理业务逻辑的代码就放在这里。
Makefile : 编译脚本。
miniz.c :有时候为了js代码的保密,不能把js源码放到最终产品中,需要压缩和混淆;加载的时候再进行解压。
2.核心步骤
*当C代码中需要对JSON格式的字符串进行处理时,把JSON数据通过栈结构传给JS程序,在JS程序中处理数据之后,把处理结果再返回给C程序中。
- 在JS程序中,如果有些操作无法处理(例如:发送数据给串口),那么就调用C程序中的函数来处理。*
3.代码说明
【测试环境】
- x86系统
我是在 Ubuntu16.04 下测试的,使用系统自带 gcc 编译器。
2.嵌入式系统
只需要把编译器换成对应的交叉编译器即可。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
物联网
+关注
关注
2903文章
44240浏览量
371020 -
IOT
+关注
关注
186文章
4174浏览量
196170 -
JSON
+关注
关注
0文章
117浏览量
6940
发布评论请先 登录
相关推荐
android使用JSON进行网络数据交换
本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。
什么是JSON
发表于 12-04 11:51
•0次下载
数据库中如何使用不同数据表结构定义方式来处理连接运算
在供暖收费系统的关系数据库中 当两个表连接运算的要求为元素和集合之间运算时 可以利用集合的幂运算进行简化处理 讨论了几种不同数据表结构定义方式来处理
发表于 10-30 17:19
•2次下载
如何使用Web3Js来处理区块链断开或重新启动
如果您的团队在生产中使用Web3Js,那么您必须意识到在Web3Js中没有内置的重新连接功能来处理区块链断开或重新启动。因此,通常情况下,当连接下降时,需要重新启动NodeJS服务以便再次连接到区块链。这不是一个很实用的方法。
发表于 03-03 09:25
•2211次阅读
Danfo.js提供高性能、直观易用的数据结构,支持结构化数据的操作和处理
Danfo.js 是个 JavaScript 开源库,提供了高性能、直观易用的数据结构,支持结构化数据的操作和处理。Danfo.
什么是JSON JSON的语法规则
JSON数据交换格式 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于
如何利用Dataloder来处理加载数据集
在Pytorch中,torch.utils.data中的Dataset与DataLoader是处理数据集的两个函数,用来处理加载数据集。通常情况下,使用的关键在于构建dataset类。
结构化数据:ProtoBuf试用与JSON的比较
XML、JSON 也可以用来存储此类结构化数据,但是使用ProtoBuf表示的数据能更加高效,并且将数据压缩得更小。
发表于 03-08 15:43
•1828次阅读
怎么用js保存数据
JS保存数据是Web开发中非常重要的一个功能,它能够将用户的输入或者其他数据存储在浏览器中,随后方便地读取和使用。在本文中,我们将讨论不同的数据保存方式以及如何使用
JSON协议是什么,物联网中的RTU中如何使用JSON协议和服务器交互
语言。 JSON 是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示
评论