摘要:實驗目的通過上位機向發送字符串,由解析提取出指定的屬性值,并發送到云平臺。詳見文檔阿里云開發板響應串口指令阿里云開發板響應串口指令第二個知識點,怎么樣將字符串解析出關鍵屬性值。
摘要:本文介紹使用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,就可以實現屬性值的上報功能。怎么樣,簡單吧!
如果您還是沒有將所有的內容全部掌握,那么建議您參考作者其他文章。
予人玫瑰,手有余香。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/121483.html
摘要:硬件,串口模塊軟件,串口助理,硬件基本介紹是經過阿里云團隊認證的高性能視覺開發板。與電腦怎樣連線板子上有兩個接口,如果我們要按照阿里云的官方文檔來跑第一個程序,需要將距離針引腳近的那一個與電腦連接。 摘要:HaaS700是一款帶攝像頭的開發板,帶有物聯網功能,可以通過python輕應用來開發...
摘要:背景介紹智能語音助手作為物聯網領域的一個重要生態成員,是一種全新的交互方式,它能夠解放雙手,隨時提供服務,無須借助任何按鍵。學完該案例讓你對智能語音助手有一個全新的認識。快來打造你的智能語音助手吧 1. 背景介紹 智能語音助手作為物聯網領域的一個重要生態成員,是一種全新的交互方式,它能夠解...
摘要:除了一些線程調度和線程模型的調整,我們還需要進行業務邏輯上的優化,比如縮減高消耗,低反饋的業務模塊,降低消耗,限制業務邏輯隊列內存分配增長空間,避免某些業務場景中內存持續增長導致系統奔潰。 1、HaaS RTC背景介紹 HaaS RTC是阿里云IoT聯合視頻云開發的IoT設備端上的實時通...
摘要:一硬件組成用作主控。型號為一塊串口屏用作顯示。型號為轉模塊用作調試。二開發環境搭建進入官網下載。 一、硬件組成 esp32用作主控。(型號為:esp32_devkitc_v4)一塊串口屏用作顯示。(型號為:TJC3224T024_011)Usb轉ttl模塊用作調試。二、開發環境搭建(Ardu...
閱讀 1489·2021-11-22 13:52
閱讀 1308·2021-09-29 09:34
閱讀 2715·2021-09-09 11:40
閱讀 3038·2019-08-30 15:54
閱讀 1265·2019-08-30 15:53
閱讀 979·2019-08-30 11:01
閱讀 1364·2019-08-29 17:22
閱讀 1957·2019-08-26 10:57