chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于MQTT協(xié)議設(shè)計(jì)的實(shí)時(shí)圖傳系統(tǒng)(阿里云物聯(lián)網(wǎng)平臺(tái))

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-04-27 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、項(xiàng)目功能介紹

當(dāng)前基于MQTT協(xié)議設(shè)計(jì)了一個(gè)實(shí)時(shí)圖傳系統(tǒng),通過(guò)這個(gè)項(xiàng)目來(lái)演示,兩個(gè)MQTT設(shè)備如何互相訂閱,進(jìn)行消息流轉(zhuǎn)。 在阿里云服務(wù)器上創(chuàng)建2個(gè)設(shè)備,分為為設(shè)備A和設(shè)備B;設(shè)備A負(fù)責(zé)采集本地?cái)z像頭畫(huà)面上傳,設(shè)備B負(fù)責(zé)接收設(shè)備A上傳的數(shù)據(jù)然后解析顯示出來(lái)。在阿里云服務(wù)器上需要配置云產(chǎn)品流轉(zhuǎn),讓設(shè)備A的數(shù)據(jù)上傳后自動(dòng)發(fā)送給設(shè)備B。這樣就完成了視頻畫(huà)面數(shù)據(jù)的流轉(zhuǎn)。不過(guò)因?yàn)榘⒗镌频淖畲髷?shù)據(jù)限制,每次最大發(fā)送10240字節(jié)的數(shù)據(jù)。

當(dāng)前的項(xiàng)目是采用MQTT協(xié)議實(shí)現(xiàn),那么先來(lái)了解一下什么是MQTT協(xié)議。

軟件采用Qt設(shè)計(jì),QT版本是5.12.6

設(shè)備A的功能:獲取攝像頭的數(shù)據(jù)---》縮放成240*320---》編碼成JPEG格式---》轉(zhuǎn)碼成base64---》組合成MQTT報(bào)文---》上傳到服務(wù)器。

設(shè)備B的功能:訂閱設(shè)備A上傳的數(shù)據(jù),得到數(shù)據(jù)后解析出源格式數(shù)據(jù)---》將圖像畫(huà)面渲染顯示出來(lái)。

軟件運(yùn)行效果:

image-20230306174129599

總結(jié)軟件運(yùn)行的體驗(yàn)效果:

(1) 非常流暢。兩個(gè)窗口肉眼感覺(jué)不到延遲。

(2)服務(wù)器不要錢(qián)。

這個(gè)方案驗(yàn)證之后,可以衍生出很多實(shí)際的例子了: 比如, 單片機(jī)+攝像頭+MQTT協(xié)議 也可以做為圖傳發(fā)送端。 聯(lián)網(wǎng)可以使用:WIFI或者4G模塊5G模塊。

1.1 MQTT協(xié)議

MQTT (Message Queuing Telemetry Transport)是一種輕量級(jí)的、基于發(fā)布/訂閱的消息傳輸協(xié)議,它可以在客戶(hù)端和服務(wù)器之間進(jìn)行雙向通信。MQTT被設(shè)計(jì)為適用于低帶寬、不穩(wěn)定網(wǎng)絡(luò)連接的物聯(lián)網(wǎng)設(shè)備通信。

MQTT具有以下主要特點(diǎn):

(1)發(fā)布/訂閱模型:客戶(hù)端可以選擇訂閱一個(gè)或多個(gè)主題(topic),并接收與這些主題相關(guān)的消息;同時(shí),客戶(hù)端也可以發(fā)布消息到一個(gè)或多個(gè)主題上。

(2)輕量級(jí):MQTT的協(xié)議頭非常小,最小只有2字節(jié),這使得它非常適合于傳輸數(shù)據(jù)量較小的IoT設(shè)備。

(3)QoS(服務(wù)質(zhì)量)支持:MQTT支持三種不同的QoS級(jí)別,分別是“至多一次”、“至少一次”和“恰好一次”,可以根據(jù)應(yīng)用場(chǎng)景的需要進(jìn)行選擇。

(4)保留消息:MQTT服務(wù)器可以將最新的消息保留在主題中,并讓新的訂閱者能夠讀取先前發(fā)布的消息。

(5)遺囑消息:當(dāng)客戶(hù)端與服務(wù)器連接異常斷開(kāi)時(shí),服務(wù)器可以向其他訂閱了該主題的客戶(hù)端發(fā)送遺囑消息,以實(shí)現(xiàn)更可靠的消息傳輸。

總之,MQTT是一種非常適合物聯(lián)網(wǎng)設(shè)備通信的協(xié)議,它具有輕量級(jí)、靈活性高、易于實(shí)現(xiàn)、可靠性強(qiáng)等優(yōu)點(diǎn),已經(jīng)被廣泛地應(yīng)用于各種物聯(lián)網(wǎng)場(chǎng)景中。

1.2 MQTT協(xié)議載體

MQTT協(xié)議是基于TCP協(xié)議傳輸報(bào)文的。MQTT使用TCP/IP協(xié)議棧來(lái)實(shí)現(xiàn)通信,因此它具有TCP協(xié)議的一些特性,如可靠性、流控制和建立持久連接等特點(diǎn)。

在MQTT連接建立時(shí),客戶(hù)端需要通過(guò)TCP連接到MQTT服務(wù)器,并進(jìn)行握手協(xié)商,包括協(xié)議版本、客戶(hù)端標(biāo)識(shí)符、遺囑消息、QoS級(jí)別等信息,以確保雙方能夠正確地交換數(shù)據(jù)。一旦握手成功,客戶(hù)端和服務(wù)器之間就建立了一個(gè)持久化的TCP連接,可以隨時(shí)進(jìn)行消息傳輸。

由于TCP協(xié)議本身已經(jīng)提供了一定程度的可靠性保證,因此MQTT協(xié)議只需要在TCP的基礎(chǔ)上實(shí)現(xiàn)發(fā)布/訂閱機(jī)制、QoS級(jí)別控制、保留消息等特性即可,從而使得它成為一種輕量級(jí)且高效的物聯(lián)網(wǎng)通信協(xié)議。

1.3 JSON里如何保存圖片數(shù)據(jù)?

在JSON中保存圖片數(shù)據(jù)通常需要將圖片轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),并將其編碼成Base64字符串,然后將該字符串作為JSON對(duì)象的屬性值進(jìn)行傳輸。

Base64編碼是一種將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII字符的方法,它使用64個(gè)字符來(lái)表示任意序列的二進(jìn)制數(shù)據(jù)。Base64編碼后的數(shù)據(jù)長(zhǎng)度會(huì)比原始二進(jìn)制數(shù)據(jù)略長(zhǎng),但可以方便地被轉(zhuǎn)換為文本格式并在網(wǎng)絡(luò)上進(jìn)行傳輸。

以下是一個(gè)示例JSON對(duì)象,其中包含了一個(gè)Base64編碼后的圖片數(shù)據(jù):

{
  "imageData": "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBD...",
  "imageName": "my_image.png"
}

在這個(gè)示例中,imageData屬性表示圖片數(shù)據(jù)的Base64編碼字符串,imageName屬性表示圖片文件名。在接收到JSON對(duì)象后,可以通過(guò)解碼Base64字符串并將其保存為二進(jìn)制數(shù)據(jù),再將其寫(xiě)入磁盤(pán)或者顯示在應(yīng)用程序中。

需要注意的是,由于Base64編碼后的數(shù)據(jù)量相對(duì)較大,因此在實(shí)際應(yīng)用中,如果需要傳輸大量的圖片數(shù)據(jù),建議使用其他更適合的數(shù)據(jù)傳輸方式,如MQTT協(xié)議、WebSocket等。

1.4 MQTT協(xié)議最大能傳多少有效字節(jié)的數(shù)據(jù)?

MQTT協(xié)議本身沒(méi)有限制數(shù)據(jù)包的大小,但是它需要遵循底層傳輸協(xié)議(TCP/IP)的限制和約束。在實(shí)際應(yīng)用中,MQTT協(xié)議能夠傳輸?shù)挠行?shù)據(jù)量是受多種因素影響的,如網(wǎng)絡(luò)帶寬、QoS級(jí)別、MQTT消息頭部信息等。

一般來(lái)說(shuō),在默認(rèn)情況下,MQTT協(xié)議對(duì)于單個(gè)消息的有效載荷有一個(gè)限制,即不超過(guò)256MB。這個(gè)限制主要由MQTT協(xié)議的消息長(zhǎng)度字段決定,該字段的最大值是4字節(jié),因此最大能表示2^32-1個(gè)字節(jié)的消息長(zhǎng)度,即約為4GB。然而,在實(shí)際應(yīng)用中,由于網(wǎng)絡(luò)帶寬和設(shè)備性能等方面的限制,很難實(shí)現(xiàn)傳輸如此巨大的消息。

另外,需要注意的是,如果使用較高級(jí)別的QoS,如“至少一次”或“恰好一次”,則MQTT協(xié)議會(huì)對(duì)每條消息進(jìn)行確認(rèn)和重傳,這可能會(huì)導(dǎo)致更多的網(wǎng)絡(luò)流量和延遲。因此,在選擇QoS級(jí)別時(shí),需要根據(jù)應(yīng)用場(chǎng)景和網(wǎng)絡(luò)環(huán)境的實(shí)際情況進(jìn)行優(yōu)化和調(diào)整,以充分利用MQTT協(xié)議的特點(diǎn)和優(yōu)勢(shì)。

三、阿里云服務(wù)器創(chuàng)建

官網(wǎng)地址: https://iot.console.aliyun.com/lk/summary/new

3.1 創(chuàng)建產(chǎn)品

image-20230306113613895image-20230306113750686

3.2 添加設(shè)備

image-20230306113816237image-20230306113833075image-20230306113911268image-20230306114010720
{
 "ProductKey": "a12qAqNZg3i",
 "DeviceName": "video_de1",
 "DeviceSecret": "206a4bc03642930542a9bcb8925b9a0f"
}

創(chuàng)建完成。

image-20230306114032472

3.3 創(chuàng)建自定義屬性

在產(chǎn)品頁(yè)面的,找到功能定義。

image-20230306114136047image-20230306114207135

最大一次只能傳遞10KB。

image-20230306114342884image-20230306114406663image-20230306114443212image-20230306114459123

3.4 MQTT服務(wù)器地址和端口

關(guān)于MQTT協(xié)議登錄所需要的參數(shù)官方說(shuō)明文檔: https://help.aliyun.com/document_detail/140507.html?spm=a2c4g.11186623.6.571.1e417544OGPj2y

阿里云物聯(lián)網(wǎng)服務(wù)器的域名規(guī)則如下:

物聯(lián)網(wǎng)平臺(tái)的域名格式為:productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com,其中productKey是您在物聯(lián)網(wǎng)平臺(tái)上創(chuàng)建的產(chǎn)品的標(biāo)識(shí)符,cn-shanghai表示物聯(lián)網(wǎng)服務(wù)器所在的地區(qū)。
?
MQTT協(xié)議的域名格式為:productKey.iot-as-mqtt.cn-shanghai.aliyuncs.com,其中productKey是您在物聯(lián)網(wǎng)平臺(tái)上創(chuàng)建的產(chǎn)品的標(biāo)識(shí)符,cn-shanghai表示物聯(lián)網(wǎng)服務(wù)器所在的地區(qū)。
?
HTTPS協(xié)議的域名格式為:productKey.iot-as-http.cn-shanghai.aliyuncs.com,其中productKey是您在物聯(lián)網(wǎng)平臺(tái)上創(chuàng)建的產(chǎn)品的標(biāo)識(shí)符,cn-shanghai表示物聯(lián)網(wǎng)服務(wù)器所在的地區(qū)。
?
需要注意的是,以上的域名規(guī)則中,productKey需要替換成你在物聯(lián)網(wǎng)平臺(tái)上創(chuàng)建產(chǎn)品時(shí)生成的實(shí)際productKey。
下面是阿里云國(guó)內(nèi)的服務(wù)器地域和可用區(qū)詳情:
 
地域名稱(chēng)    所在城市    Region ID   可用區(qū)數(shù)量
華北 1    青島  cn-qingdao    2
華北 2    北京  cn-beijing    10
華北 3    張家口 cn-zhangjiakou  3
華北 5    呼和浩特    cn-huhehaote    2
華北 6    烏蘭察布    cn-wulanchabu   3
華東 1    杭州  cn-hangzhou   8
華東 2    上海  cn-shanghai     8
華南 1    深圳  cn-shenzhen    6
華南 2    河源  cn-heyuan     2
華南 3    廣州  cn-guangzhou    2
西南 1    成都  cn-chengdu    2
?
端口號(hào)是:1883
?
我的設(shè)備參數(shù):
{
 "ProductKey": "a12qAqNZg3i",
 "DeviceName": "video_de1",
 "DeviceSecret": "206a4bc03642930542a9bcb8925b9a0f"
} 
?
  
經(jīng)過(guò)上面的格式解釋?zhuān)业陌⒗镌品?wù)器登錄的域名就是(選擇的是上海服務(wù)器):
a12qAqNZg3i.iot-as-mqtt.cn-shanghai.aliyuncs.com
?
image-20230306114927615

解析域名對(duì)應(yīng)的IP地址:

image-20230306122242242
Microsoft Windows [版本 10.0.19044.2604]
(c) Microsoft Corporation。保留所有權(quán)利。
?
C:Users11266>ping a12qAqNZg3i.iot-as-mqtt.cn-shanghai.aliyuncs.com
?
正在 Ping vpc-sh-prod.mqtt.iotgds.aliyuncs.com.gds.alibabadns.com [47.103.191.238] 具有 32 字節(jié)的數(shù)據(jù):
來(lái)自 47.103.191.238 的回復(fù): 字節(jié)=32 時(shí)間=40ms TTL=88
來(lái)自 47.103.191.238 的回復(fù): 字節(jié)=32 時(shí)間=40ms TTL=88
來(lái)自 47.103.191.238 的回復(fù): 字節(jié)=32 時(shí)間=40ms TTL=88
來(lái)自 47.103.191.238 的回復(fù): 字節(jié)=32 時(shí)間=40ms TTL=88
?
47.103.191.238 的 Ping 統(tǒng)計(jì)信息:
  數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計(jì)時(shí)間(以毫秒為單位):
  最短 = 40ms,最長(zhǎng) = 40ms,平均 = 40ms
?
C:Users11266>

3.5 MQTT三元組格式

下載密碼生成小工具:https://help.aliyun.com/document_detail/292635.htm?spm=a2c4g.11186623.0.0.5aaf635b3zgveM#section-jx3-u57-pmm

image-20230306122624092

打開(kāi)密碼生成工具:

image-20230306130203946

生成MQTT登錄的密匙: 填入的參數(shù)就是前面創(chuàng)建設(shè)備得到信息。

image-20230306130404897
mqttClientId: 
video_de1|securemode=2,signmethod=hmacsha1,timestamp=1678078910527|
?
username: 
video_de1&a12qAqNZg3i
?
password: 
02F7190BE8C33C1A8009EDBAF824BFDC6784FC67
?

3.6 主題發(fā)布與訂閱的格式

在產(chǎn)品頁(yè)面可以看到主題格式: https://iot.console.aliyun.com/product/productDetail/a1cMlEwEwjg/func?current=2

image-20230306130758247

總結(jié):

發(fā)布主題:
/sys/a12qAqNZg3i/video_de1/thing/event/property/post
上報(bào)屬性消息的格式: 
{"method":"thing.event.property.post","params":{"image":"1234567890"}}
?
訂閱主題:
/sys/a12qAqNZg3i/video_de1/thing/service/property/set

3.7 MQTT設(shè)備登錄

利用MQTT客戶(hù)端完成設(shè)備登錄測(cè)試。

IP地址:47.103.191.238
?
端口號(hào):1883
?
mqttClientId: video_de1|securemode=2,signmethod=hmacsha1,timestamp=1678078910527|
?
username: video_de1&a12qAqNZg3i
?
password: 02F7190BE8C33C1A8009EDBAF824BFDC6784FC67
?
?
發(fā)布主題:
/sys/a12qAqNZg3i/video_de1/thing/event/property/post
上報(bào)屬性消息的格式: 
{"method":"thing.event.property.post","params":{"image":"1234567890"}}
?
訂閱主題:
/sys/a12qAqNZg3i/video_de1/thing/service/property/set

對(duì)號(hào)入座填入?yún)?shù),測(cè)試主題訂閱,主題發(fā)布:

image-20230306131329613

數(shù)據(jù)接收成功:

image-20230306131432858

到此服務(wù)器創(chuàng)建成功。

3.8 繼續(xù)創(chuàng)建設(shè)備2

監(jiān)控設(shè)備有兩個(gè),1個(gè)設(shè)備為攝像頭圖片發(fā)送端,一個(gè)設(shè)備是圖片接收顯示端。

image-20230306131839215image-20230306132047490image-20230306132104624
{
  "ProductKey": "a12qAqNZg3i",
  "DeviceName": "video_dev2",
  "DeviceSecret": "30ebb8ffc4316fbe957fcfb13bdaec01"
}

創(chuàng)建成功。

image-20230306132134761

接下來(lái)生成設(shè)備2的MQTT三元組密匙,和前面一樣的方法。

image-20230306132253055
mqttClientId: 
video_dev2|securemode=2,signmethod=hmacsha1,timestamp=1678078910527|

username: 
video_dev2&a12qAqNZg3i

password: 
15D2C020586E165E6A35BB2FA4DEB9DD59F3E73E

參數(shù)總結(jié):

IP地址:47.103.191.238

端口號(hào):1883

mqttClientId: video_dev2|securemode=2,signmethod=hmacsha1,timestamp=1678078910527|

username:  video_dev2&a12qAqNZg3i

password:  15D2C020586E165E6A35BB2FA4DEB9DD59F3E73E


發(fā)布主題:
/sys/a12qAqNZg3i/video_dev2/thing/event/property/post

上報(bào)屬性消息的格式:  
{"method":"thing.event.property.post","params":{"image":"abcdefg"}}

訂閱主題:
/sys/a12qAqNZg3i/video_dev2/thing/service/property/set

四、云產(chǎn)品流轉(zhuǎn)

4.1 創(chuàng)建解析器

image-20230306132830597image-20230306133146823image-20230306133212059image-20230306133249338

創(chuàng)建完成。

image-20230306133516015

4.2 創(chuàng)建規(guī)則

image-20230306133538634image-20230306133602219image-20230306133617940

添加主題:

image-20230306134006727

設(shè)置數(shù)據(jù)目的:

image-20230306134049922image-20230306134122524image-20230306134244172image-20230306134257318

編寫(xiě)解析器腳本:

image-20230306135159656

幫助文檔地址:https://help.aliyun.com/document_detail/270937.html

image-20230306141216413image-20230306141259610

下面編寫(xiě)代碼,獲取設(shè)備1上傳的數(shù)據(jù),轉(zhuǎn)發(fā)給設(shè)備2。

//通過(guò)payload函數(shù),獲取設(shè)備上報(bào)的消息內(nèi)容,并按照J(rèn)SON格式轉(zhuǎn)換。
var data = payload("json");
//直接流轉(zhuǎn)物模型上報(bào)數(shù)據(jù)。
writeIotTopic(1000, "/a12qAqNZg3i/video_dev2/user/get", data)
image-20230306143714795

寫(xiě)好解析器就發(fā)布。

在云產(chǎn)品流轉(zhuǎn)的首頁(yè)啟動(dòng)解析器。

image-20230306143415348image-20230306143126331

4.3 測(cè)試兩個(gè)設(shè)備的訂閱

設(shè)備1的參數(shù):

IP地址:47.103.191.238
端口號(hào):1883
mqttClientId:  video_de1|securemode=2,signmethod=hmacsha1,timestamp=1678078910527|
username: video_de1&a12qAqNZg3i
password: 02F7190BE8C33C1A8009EDBAF824BFDC6784FC67

設(shè)備1發(fā)布主題:
主題格式:/a12qAqNZg3i/video_de1/user/update
數(shù)據(jù)內(nèi)容:{"method":"thing.event.property.post","params":{"image":"1234567890"}}

設(shè)備2的參數(shù):

IP地址:47.103.191.238
端口號(hào):1883
mqttClientId: video_dev2|securemode=2,signmethod=hmacsha1,timestamp=1678078910527|
username:  video_dev2&a12qAqNZg3i
password:  15D2C020586E165E6A35BB2FA4DEB9DD59F3E73E

設(shè)備2訂閱主題:
主題格式:/a12qAqNZg3i/video_dev2/user/get
image-20230306144506256

五、項(xiàng)目開(kāi)發(fā)

5.1 base64編碼和解碼實(shí)現(xiàn)

攝像頭采集圖像數(shù)據(jù)之后會(huì)編碼 成base64格式的字符串,再通過(guò)MQTT協(xié)議上傳到物聯(lián)網(wǎng)服務(wù)器。 下面就是base64編碼和解碼的實(shí)現(xiàn)代碼。

const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

//進(jìn)行base64編碼
//bindata:進(jìn)行編碼的圖片數(shù)據(jù)
//base64:轉(zhuǎn)換后的base64編碼
//binlength:圖片大小
char * base64_encode(  u8 * bindata, char * base64, u32 binlength )
{
    u32 i, j;
    u8 current;

    for ( i = 0, j = 0 ; i < binlength ; i += 3 )
    {
        current = (bindata[i] >> 2) ;
        current &= (u8)0x3F;
        base64[j++] = base64char[(int)current];

        current = ( (u8)(bindata[i] << 4 ) ) & ( (u8)0x30 ) ;
        if ( i + 1 >= binlength )
        {
            base64[j++] = base64char[(int)current];
            base64[j++] = '=';
            base64[j++] = '=';
            break;
        }
        current |= ( (u8)(bindata[i+1] >> 4) ) & ( (u8) 0x0F );
        base64[j++] = base64char[(int)current];

        current = ( (u8)(bindata[i+1] << 2) ) & ( (u8)0x3C ) ;
        if ( i + 2 >= binlength )
        {
            base64[j++] = base64char[(int)current];
            base64[j++] = '=';
            break;
        }
        current |= ( (u8)(bindata[i+2] >> 6) ) & ( (u8) 0x03 );
        base64[j++] = base64char[(int)current];

        current = ( (u8)bindata[i+2] ) & ( (u8)0x3F ) ;
        base64[j++] = base64char[(int)current];
    }
    base64[j] = '?';
    return base64;
}

//解碼base64
//base64:base64編碼
//bindata:圖片數(shù)據(jù)
int base64_decode( const char * base64, u8 * bindata )
{
    u32 i, j;
    u8 k;
    u8 temp[4];
    for ( i = 0, j = 0; base64[i] != '?' ; i += 4 )
    {
        memset( temp, 0xFF, sizeof(temp) );
        for ( k = 0 ; k < 64 ; k ++ )
        {
            if ( base64char[k] == base64[i] )
                temp[0]= k;
        }
        for ( k = 0 ; k < 64 ; k ++ )
        {
            if ( base64char[k] == base64[i+1] )
                temp[1]= k;
        }
        for ( k = 0 ; k < 64 ; k ++ )
        {
            if ( base64char[k] == base64[i+2] )
                temp[2]= k;
        }
        for ( k = 0 ; k < 64 ; k ++ )
        {
            if ( base64char[k] == base64[i+3] )
                temp[3]= k;
        }

        bindata[j++] = ((u8)(((u8)(temp[0] << 2))&0xFC)) |
                ((u8)((u8)(temp[1]>>4)&0x03));
        if ( base64[i+2] == '=' )
            break;

        bindata[j++] = ((u8)(((u8)(temp[1] << 4))&0xF0)) |
                ((u8)((u8)(temp[2]>>2)&0x0F));
        if ( base64[i+3] == '=' )
            break;

        bindata[j++] = ((u8)(((u8)(temp[2] << 6))&0xF0)) |
                ((u8)(temp[3]&0x3F));
    }
    return j;
}

5.3 軟件設(shè)計(jì)

image-20230306173701272

5.4 運(yùn)行效果

image-20230306173632696image-20230306174123211


審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2930

    文章

    46230

    瀏覽量

    392294
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9793

    瀏覽量

    87945
  • 攝像頭
    +關(guān)注

    關(guān)注

    61

    文章

    4978

    瀏覽量

    98343
  • 阿里云
    +關(guān)注

    關(guān)注

    3

    文章

    1010

    瀏覽量

    44161
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    682

    瀏覽量

    23710
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    工業(yè)智能網(wǎng)關(guān)與MQTT聯(lián)網(wǎng)平臺(tái)的關(guān)系

    工業(yè)智能網(wǎng)關(guān)與 MQTT 聯(lián)網(wǎng)平臺(tái)聯(lián)網(wǎng)架構(gòu)中
    的頭像 發(fā)表于 03-21 09:44 ?391次閱讀

    《DNESP32S3使用指南-IDF版_V1.6》第五十五章 基于MQTT協(xié)議連接阿里服務(wù)器

    進(jìn)行相應(yīng)的修改。55.4 下載驗(yàn)證程序下載成功后,打開(kāi)阿里平臺(tái)聯(lián)網(wǎng)平臺(tái)設(shè)備管理,可以看到此
    發(fā)表于 03-18 09:22

    MQTT聯(lián)網(wǎng)平臺(tái)有哪些?有哪些功能?

    (IoT)。關(guān)于MQTT聯(lián)網(wǎng)平臺(tái)及其功能,可以歸納如下: MQTT
    的頭像 發(fā)表于 03-15 14:23 ?826次閱讀
    <b class='flag-5'>MQTT</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>平臺(tái)</b>有哪些?有哪些功能?

    工業(yè)智能網(wǎng)關(guān)通過(guò)MQTT協(xié)議對(duì)接工業(yè)聯(lián)網(wǎng)平臺(tái)

    、傳感器、工業(yè)機(jī)器人、數(shù)控機(jī)床等設(shè)備。不僅具備數(shù)據(jù)采集與協(xié)議解析能力,還支持5G/4G/WIFI/以太網(wǎng)等聯(lián)網(wǎng)方式。此外,支持通過(guò)MQTT+ JSON報(bào)文對(duì)接到通博聯(lián)
    的頭像 發(fā)表于 02-26 17:07 ?493次閱讀
    工業(yè)智能網(wǎng)關(guān)通過(guò)<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>對(duì)接工業(yè)<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>云</b><b class='flag-5'>平臺(tái)</b>

    esp8266連接阿里平臺(tái)時(shí)mqtt連接超時(shí)

    esp8266nodemcu在使用arduino.ide連接阿里平臺(tái)的時(shí)候,wifi配置正常但連接不上mqtt,顯示報(bào)錯(cuò)如下: Attempting
    發(fā)表于 10-26 21:39

    MQTT網(wǎng)關(guān)接入工業(yè)聯(lián)網(wǎng)平臺(tái)解析

    MQTT網(wǎng)關(guān) 能夠連接不同類(lèi)型的工業(yè)聯(lián)設(shè)備,實(shí)現(xiàn)設(shè)備之間的數(shù)據(jù)傳輸和控制。它不僅能夠?qū)?lái)自不同設(shè)備的多種通信協(xié)議(如Modbus、PLC、數(shù)控機(jī)床等)統(tǒng)一轉(zhuǎn)換為MQTT格式,便于與
    的頭像 發(fā)表于 10-16 16:31 ?683次閱讀

    MQTT調(diào)試助手中文版(聯(lián)網(wǎng)開(kāi)發(fā)必備)

    MQTT調(diào)試助手中文版(聯(lián)網(wǎng)開(kāi)發(fā)必備)。?支持模擬設(shè)備鏈接各種MQTT服務(wù)器、 ?阿里
    發(fā)表于 10-12 14:23 ?8次下載

    MQTT聯(lián)網(wǎng)平臺(tái)有什么功能

    關(guān)鍵作用。MQTT聯(lián)網(wǎng)平臺(tái)基于MQTT協(xié)議,為
    的頭像 發(fā)表于 10-09 14:15 ?720次閱讀

    使用API Post測(cè)試阿里聯(lián)網(wǎng)平臺(tái)動(dòng)態(tài)注冊(cè)

    使用API Post測(cè)試阿里聯(lián)網(wǎng)平臺(tái)動(dòng)態(tài)注冊(cè)
    的頭像 發(fā)表于 10-05 19:08 ?850次閱讀
    使用API Post測(cè)試<b class='flag-5'>阿里</b><b class='flag-5'>云</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b><b class='flag-5'>平臺(tái)</b>動(dòng)態(tài)注冊(cè)

    MQTT聯(lián)網(wǎng)平臺(tái)和網(wǎng)關(guān)有什么功能

    聯(lián)網(wǎng)(IoT)迅速發(fā)展的今天,MQTT(Message Queuing Telemetry Transport)作為一種輕量級(jí)的通信協(xié)議,以其高效、可靠的特點(diǎn),在
    的頭像 發(fā)表于 08-22 14:19 ?690次閱讀

    通過(guò)鋇錸PLC轉(zhuǎn)MQTT網(wǎng)關(guān)實(shí)現(xiàn)PLC數(shù)據(jù)上傳至阿里平臺(tái)

    鋇錸技術(shù)PLC轉(zhuǎn)MQTT網(wǎng)關(guān)BL102是一款專(zhuān)為工業(yè)自動(dòng)化設(shè)計(jì)的設(shè)備,它能夠?qū)崿F(xiàn)PLC數(shù)據(jù)的高效采集,并通過(guò)MQTT協(xié)議將數(shù)據(jù)傳輸至阿里
    的頭像 發(fā)表于 07-31 17:20 ?865次閱讀
    通過(guò)鋇錸PLC轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān)實(shí)現(xiàn)PLC數(shù)據(jù)上傳至<b class='flag-5'>阿里</b><b class='flag-5'>云</b><b class='flag-5'>平臺(tái)</b>

    基于MQTT協(xié)議平臺(tái)的Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)

    數(shù)據(jù)的上傳和云端控制指令的下發(fā),讓設(shè)備能夠與基于MQTT協(xié)議平臺(tái)進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸和遠(yuǎn)程監(jiān)控。 網(wǎng)關(guān)功能特點(diǎn)
    的頭像 發(fā)表于 07-29 17:59 ?1135次閱讀
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>云</b><b class='flag-5'>平臺(tái)</b>的Modbus轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān)

    鋇錸Modbus轉(zhuǎn)MQTT網(wǎng)關(guān)BL100支持一鍵對(duì)接阿里平臺(tái)

    RTU串口設(shè)備一鍵對(duì)接阿里 ,為工業(yè)自動(dòng)化與遠(yuǎn)程監(jiān)控提供了高效、可靠的解決方案! 一、BL100網(wǎng)關(guān)概述 BL100是鋇錸技術(shù)專(zhuān)門(mén)針對(duì)MQTT協(xié)議
    的頭像 發(fā)表于 07-29 17:37 ?681次閱讀
    鋇錸Modbus轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān)BL100支持一鍵對(duì)接<b class='flag-5'>阿里</b><b class='flag-5'>云</b><b class='flag-5'>平臺(tái)</b>

    IEC104轉(zhuǎn)MQTT網(wǎng)關(guān)高效對(duì)接阿里平臺(tái)

    隨著智能電網(wǎng)和聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,電力系統(tǒng)中的傳統(tǒng)IEC 104協(xié)議設(shè)備正面臨向現(xiàn)代化、智能化轉(zhuǎn)型的迫切需求。阿里
    的頭像 發(fā)表于 07-25 17:45 ?936次閱讀
    IEC104轉(zhuǎn)<b class='flag-5'>MQTT</b>網(wǎng)關(guān)高效對(duì)接<b class='flag-5'>阿里</b><b class='flag-5'>云</b><b class='flag-5'>平臺(tái)</b>

    MQTT聯(lián)網(wǎng)平臺(tái)是什么

    MQTT聯(lián)網(wǎng)平臺(tái)是一種軟件平臺(tái),它基于MQTT(Message Queuing Telemet
    的頭像 發(fā)表于 07-18 14:22 ?1175次閱讀