当前位置:网站首页>阿里云开发板HaaS510解析串口JSON数据并发送属性
阿里云开发板HaaS510解析串口JSON数据并发送属性
2022-06-12 13:45:00 【TMS320VC5257H】
摘要:本文介绍使用HaaS510从串口接收数据,从数据中提取所需的属性值,并发送到物联网平台的方法。从串口接收到的数据格式是JSON格式。

实验目的:通过上位机向haas510发送JSON字符串,由HaaS510解析提取出指定的属性值,并发送到云平台。
硬件:haas510 (2.0版本),USB串口
软件:win7 x64,vscode
目录
1.关键知识点介绍
本实验将电脑作为上位机,上位机通过USB串口与HaaS510连接。假如您使用其他微处理器,只要能够发送JSON格式的字符串,效果是相同的。实验的关键知识点有2个。
第一个知识点,怎么样将串口接收到的数据转换为字符串。我们知道,串口通信时,是8位8位地接收数据,相当于一个个的8位数据的数组,这个数组最初并不是字符串,我们可以将其理解为一系列的十六进制数据。所以我们需要将这些数据还原为字符串,然后再解析。
详见文档
阿里云开发板HaaS510响应UART串口指令https://blog.csdn.net/youngwah292/article/details/120377994?spm=1001.2014.3001.5501
https://blog.csdn.net/youngwah292/article/details/120377994?spm=1001.2014.3001.5501
第二个知识点,怎么样将字符串解析出关键属性值。这个知识点也通过文档进行了详细解释。
阿里云开发板HaaS510解析JSON数据
2.编写源代码
本文直接提供源代码
var iot = require('iot');
var network = require('network');
var uart = require('uart');
var net = network.openNetWorkClient();
/* 设备三元组信息获取请参考common目录下的iot组件说明 */
var productKey = 'gcCCCCCCu2';
var deviceName = 'ceCCCCCCC01';
var deviceSecret = 'eeSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSb3a9';
// 构建物联网连接实例
var device;
var lightSwitch = 0;
//测试解析一个json字符串,这里并没有解析串口的字符串,而是解析的一个固定数组的字符串。
var json = '{"uid":"123456","beizhu":"5557589","shijian":"20210919"}';
var obj = JSON.parse(json);
// user uart
var serial = uart.open({
id: 'UART2'
});
var msgbuf = [97, 98, 99, 100];
function ArrayToString(fileData) {
var dataString = "";
for (var i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
return dataString;
}
net.on('connect', function () {
device = iot.device({
productKey: productKey,
deviceName: deviceName,
deviceSecret: deviceSecret,
region: 'cn-shanghai',
success: function () {
console.log('iot: [success] connect');
},
fail: function () {
console.log('iot: [failed] connect');
}
});
})
setInterval(function () {
lightSwitch = 1 - lightSwitch;
// user uart send data
serial.write(msgbuf);
//下面显示解析过的内容
console.log(obj);
console.log(obj.uid);
console.log(obj.beizhu);
console.log(obj.shijian);
/* 错误示范 iot.postProps({
payload: {LightSwitch:'0'}
})*/
/*正确示范,要想发送属性,就得使用stringify才行*/
device.postProps(
JSON.stringify({
LightSwitch: lightSwitch
})
);
}, 5000);
// user uart data receive
serial.on('data', function(data) {
console.log('uart receive data is ' + ArrayToString(data));
json = ArrayToString(data);
//然后将字符串进行解析
obj = JSON.parse(json);
//下面发送几个关键属性值json = '{"uid":"123456","beizhu":"5557589","shijian":"20210919"}'
device.postProps(
JSON.stringify({
uid:obj.uid,beizhu:obj.beizhu,shijian:obj.shijian
})
);
});
其中关键的代码是串口接收到数据之后,对数据进行解析的操作。
json = ArrayToString(data);
//然后将字符串进行解析
obj = JSON.parse(json);
//下面发送几个关键属性值json = '{"uid":"123456","beizhu":"5557589","shijian":"20210919"}'
device.postProps(
JSON.stringify({
uid:obj.uid,beizhu:obj.beizhu,shijian:obj.shijian
})
);3.观察运行效果
首先连接硬件
本实验提供的源代码运行之后,会有多个实验效果,如下图所示。不再一一截屏演示,有兴趣的读者可以查看我写的其他HaaS510文章。

本实验关注的重点是第5个实验效果,也就是通过上位机发送一个JSON字符串,看HaaS510能否实时解析并将值上报到云端。

通过电脑向HaaS510的用户串口发送数据
{"uid":"888888","beizhu":"666666","shijian":"20210920"}
可以观察到这个数据被解析,通过调试串口也有相应的显示。

数据都上传到云端了。备注、时间、uid、主灯开关都相应地做出了改变。

至此,实验成功。
工作到此处,您就可以使用HaaS510设计一台物联网设备了。使用一个MCU编写功能代码。将需要上传到云端的数据以JSON格式发送给HaaS510,就可以实现属性值的上报功能。怎么样,简单吧!
如果您还是没有将所有的内容全部掌握,那么建议您参考作者其他文章。
予人玫瑰,手有余香。
边栏推荐
- m1 pod install pod lint 失败解决方案
- M1 pod install pod lint failure solution
- import torch_ Data view of geometric
- Application of short circuit expression (||) in C language
- 【SemiDrive源码分析】【X9芯片启动流程】26 - R5 SafetyOS 之 LK_INIT_LEVEL_TARGET 阶段代码流程分析(TP Drvier、Audio Server初始化)
- Informatics Olympiad all in one 2059: [example 3.11] buy a pen
- C语言【23道】经典面试题【下】
- Symbolic constant, const qualifier
- Tinyxml Usage Summary
- Successfully rated Tencent t3-2, 10000 word parsing
猜你喜欢

go-zero 微服务实战系列(二、服务拆分)

Formal analysis of Woo Lam protocol with scyther tool

Understanding recursion

Qualcomm platform development series (Protocol) QMI brief introduction and usage

聊聊MySQL的10大经典错误

Application of list and Dict

Wechat web developer tools tutorial, web development issues
![[WUSTCTF2020]颜值成绩查询-1](/img/90/e4c2882357e0a1c6a80f778887e3f5.png)
[WUSTCTF2020]颜值成绩查询-1
FFmpeg 学习指南

Pytorch to onnx, onnxruntime reasoning in mmclas
随机推荐
Multi source BFS problem template (with questions)
将字符串转为16进制字符串并显示出来
Top 10 tips for visual studio code on Google
Application of list and Dict
Data type conversion and conditional control statements
"Non" reliability of TCP
xcode 调试openGLES
Byte order data read / write
上海解封背后,这群开发者“云聚会”造了个AI抗疫机器人
MySQL 查询 limit 1000,10 和 limit 10 速度一样快吗? 深度分页如何破解
2068: [example 2.6] chicken and rabbit in the same cage
Web3.0, the era of "stimulating creativity"
[WUSTCTF2020]颜值成绩查询-1
Django note 21: querying databases using native SQL
Tinyxml Usage Summary
torch_ geometric message passing network
事件的传递和响应以及使用实例
2061: [example 1.2] trapezoidal area
Codeforces 1629 D. pecuriar movie preferences - simple thinking, palindrome strings
Qt5 plug-in production