当前位置:首页 » 《休闲阅读》 » 正文

阿里云开发板HaaS510解析串口JSON数据并发送属性_拓思创测控的博客

26 人参与  2022年02月03日 12:17  分类 : 《休闲阅读》  评论

点击全文阅读


摘要:本文介绍使用HaaS510从串口接收数据,从数据中提取所需的属性值,并发送到物联网平台的方法。从串口接收到的数据格式是JSON格式。

实验目的:通过上位机向haas510发送JSON字符串,由HaaS510解析提取出指定的属性值,并发送到云平台。

硬件:haas510 (2.0版本),USB串口

软件:win7 x64,vscode

目录

1.关键知识点介绍

2.编写源代码

3.观察运行效果


1.关键知识点介绍

本实验将电脑作为上位机,上位机通过USB串口与HaaS510连接。假如您使用其他微处理器,只要能够发送JSON格式的字符串,效果是相同的。实验的关键知识点有2个。

第一个知识点,怎么样将串口接收到的数据转换为字符串。我们知道,串口通信时,是8位8位地接收数据,相当于一个个的8位数据的数组,这个数组最初并不是字符串,我们可以将其理解为一系列的十六进制数据。所以我们需要将这些数据还原为字符串,然后再解析。

详见文档

阿里云开发板HaaS510响应UART串口指令https://blog.csdn.net/youngwah292/article/details/120377994?spm=1001.2014.3001.5501icon-default.png?t=L892https://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,就可以实现属性值的上报功能。怎么样,简单吧!

如果您还是没有将所有的内容全部掌握,那么建议您参考作者其他文章。

予人玫瑰,手有余香。


点击全文阅读


本文链接:http://zhangshiyu.com/post/34229.html

字符串  串口  解析  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1