摘要:实验目的通过上位机向发送字符串,由解析提取出指定的属性值,并发送到云平台。详见文档阿里云开发板响应串口指令阿里云开发板响应串口指令第二个知识点,怎么样将字符串解析出关键属性值。
摘要:本文介绍使用HaaS510从串口接收数据,从数据中提取所需的属性值,并发送到物联网平台的方法。从串口接收到的数据格式是JSON格式。
实验目的:通过上位机向haas510发送JSON字符串,由HaaS510解析提取出指定的属性值,并发送到云平台。
硬件:haas510 (2.0版本),USB串口
软件:win7 x64,vscode
目录
本实验将电脑作为上位机,上位机通过USB串口与HaaS510连接。假如您使用其他微处理器,只要能够发送JSON格式的字符串,效果是相同的。实验的关键知识点有2个。
第一个知识点,怎么样将串口接收到的数据转换为字符串。我们知道,串口通信时,是8位8位地接收数据,相当于一个个的8位数据的数组,这个数组最初并不是字符串,我们可以将其理解为一系列的十六进制数据。所以我们需要将这些数据还原为字符串,然后再解析。
详见文档
第二个知识点,怎么样将字符串解析出关键属性值。这个知识点也通过文档进行了详细解释。
本文直接提供源代码
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 }) );
首先连接硬件
本实验提供的源代码运行之后,会有多个实验效果,如下图所示。不再一一截屏演示,有兴趣的读者可以查看我写的其他HaaS510文章。
本实验关注的重点是第5个实验效果,也就是通过上位机发送一个JSON字符串,看HaaS510能否实时解析并将值上报到云端。
通过电脑向HaaS510的用户串口发送数据
{"uid":"888888","beizhu":"666666","shijian":"20210920"}
可以观察到这个数据被解析,通过调试串口也有相应的显示。
数据都上传到云端了。备注、时间、uid、主灯开关都相应地做出了改变。
至此,实验成功。
工作到此处,您就可以使用HaaS510设计一台物联网设备了。使用一个MCU编写功能代码。将需要上传到云端的数据以JSON格式发送给HaaS510,就可以实现属性值的上报功能。怎么样,简单吧!
如果您还是没有将所有的内容全部掌握,那么建议您参考作者其他文章。
予人玫瑰,手有余香。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121483.html
摘要:硬件,串口模块软件,串口助理,硬件基本介绍是经过阿里云团队认证的高性能视觉开发板。与电脑怎样连线板子上有两个接口,如果我们要按照阿里云的官方文档来跑第一个程序,需要将距离针引脚近的那一个与电脑连接。 摘要:HaaS700是一款带摄像头的开发板,带有物联网功能,可以通过python轻应用来开发...
摘要:背景介绍智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解放双手,随时提供服务,无须借助任何按键。学完该案例让你对智能语音助手有一个全新的认识。快来打造你的智能语音助手吧 1. 背景介绍 智能语音助手作为物联网领域的一个重要生态成员,是一种全新的交互方式,它能够解...
摘要:除了一些线程调度和线程模型的调整,我们还需要进行业务逻辑上的优化,比如缩减高消耗,低反馈的业务模块,降低消耗,限制业务逻辑队列内存分配增长空间,避免某些业务场景中内存持续增长导致系统奔溃。 1、HaaS RTC背景介绍 HaaS RTC是阿里云IoT联合视频云开发的IoT设备端上的实时通...
摘要:一硬件组成用作主控。型号为一块串口屏用作显示。型号为转模块用作调试。二开发环境搭建进入官网下载。 一、硬件组成 esp32用作主控。(型号为:esp32_devkitc_v4)一块串口屏用作显示。(型号为:TJC3224T024_011)Usb转ttl模块用作调试。二、开发环境搭建(Ardu...
阅读 1389·2021-11-22 13:52
阅读 1218·2021-09-29 09:34
阅读 2600·2021-09-09 11:40
阅读 3014·2019-08-30 15:54
阅读 1225·2019-08-30 15:53
阅读 959·2019-08-30 11:01
阅读 1330·2019-08-29 17:22
阅读 1900·2019-08-26 10:57