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

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

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

關(guān)于Air780E:與服務(wù)器的加密通信操作方法

青山老竹農(nóng) ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2024-10-12 07:31 ? 次閱讀

?今天我們來學(xué)習(xí)合宙低功耗4G模組Air780E快速入門之跟服務(wù)器之間的加密通信,伙伴們,一起學(xué)起來!

一、編寫腳本

1.1 準(zhǔn)備資料

Air780E開發(fā)板購買

Air780E開發(fā)板設(shè)計(jì)資料

LuatOS-Air780E/網(wǎng)絡(luò)加密通信程序源碼demo

合宙的 TCP/UDP 測(cè)試服務(wù)器

API介紹說明

1.2 程序詳解

1.2.1 首先配置聯(lián)網(wǎng)配置

-- 測(cè)試網(wǎng)站 https://netlab.luatos.com/ 點(diǎn)擊 打開TCP 獲取測(cè)試端口號(hào)

-- 要按實(shí)際情況修改

local host = "112.125.89.8" -- 服務(wù)器ip或者域名, 都可以的

local port = 45186 -- 服務(wù)器端口號(hào)

local is_udp = false -- 如果是UDP, 要改成true, false就是TCP

local is_tls = true -- 加密與否, 要看服務(wù)器的實(shí)際情況

--=============================================================

1.2.2 聯(lián)網(wǎng)后,創(chuàng)建聯(lián)網(wǎng)成功后,對(duì)收發(fā)數(shù)據(jù)事件的處理函數(shù)

local function sockettest()

-- 等待聯(lián)網(wǎng)

sys.waitUntil("IP_READY")

-- 時(shí)間同步

socket.sntp()

-- 開始正在的邏輯, 發(fā)起socket鏈接,等待數(shù)據(jù)/上報(bào)心跳

local taskName = "sc"

local topic = taskName .. "_txrx"

log.info("topic", topic)

local txqueue = {}

--[[創(chuàng)建一個(gè)任務(wù)線程

@param1 function 任務(wù)函數(shù)名,用于resume喚醒時(shí)調(diào)用

@param2 string 任務(wù)名稱,用于喚醒任務(wù)id

@param3 function 接收到非目標(biāo)消息時(shí)的回調(diào)函數(shù)

@param4 any 任務(wù)函數(shù)fun的可變參數(shù)

@return number 返回該任務(wù)的線程號(hào)

]]

sysplus.taskInitEx(sockettask, taskName, netCB, taskName, txqueue, topic)

while 1 do

local result, tp, data = sys.waitUntil(topic, 30000)



   log.info("event", result, tp, data)



   if not result then



       -- 等很久了,沒數(shù)據(jù)上傳/下發(fā), 發(fā)個(gè)日期心跳包吧



       table.insert(txqueue, os.date())



       sys_send(taskName, socket.EVENT, 0)



   elseif tp == "uplink" then



       -- 上行數(shù)據(jù), 主動(dòng)上報(bào)的數(shù)據(jù),那就發(fā)送呀



       table.insert(txqueue, data)



       sys_send(taskName, socket.EVENT, 0)



   elseif tp == "downlink" then



       -- 下行數(shù)據(jù),接收的數(shù)據(jù), 從ipv6task來的



       -- 其他代碼可以通過 sys.publish()



       log.info("socket", "收到下發(fā)的數(shù)據(jù)了", #data,"data:",data)



   end

end

end

1.2.3 聯(lián)網(wǎng)函數(shù)

function sockettask(d1Name, txqueue, rxtopic)

-- 打印準(zhǔn)備連接的服務(wù)器信息

log.info("socket", host, port, is_udp and "UDP" or "TCP", is_tls and "TLS" or "RAW")

-- 準(zhǔn)備好所需要的接收緩沖區(qū)

local rx_buff = zbuff.create(1024)

local netc = socket.create(nil, d1Name)

socket.config(netc, nil, is_udp, is_tls)

log.info("任務(wù)id", d1Name)

while true do

-- 連接服務(wù)器, 15秒超時(shí)



   log.info("socket", "開始連接服務(wù)器")



   sysplus.cleanMsg(d1Name)



   local result = libnet.connect(d1Name, 15000, netc, host, port)



   if result then



       log.info("socket", "服務(wù)器連上了")



       --向服務(wù)器發(fā)送數(shù)據(jù)



       libnet.tx(d1Name, 0, netc, "helloworld")



   else



       log.info("socket", "服務(wù)器沒連上了!!!")



   end



   while result do



       -- 連接成功之后, 先嘗試接收



       -- log.info("socket", "調(diào)用rx接收數(shù)據(jù)")



       local succ, param = socket.rx(netc, rx_buff)



       if not succ then



           log.info("服務(wù)器斷開了", succ, param, ip, port)



           break



       end



       -- 如果服務(wù)器有下發(fā)數(shù)據(jù), used()就必然大于0, 進(jìn)行處理



       if rx_buff:used() > 0 then



           log.info("socket", "收到服務(wù)器數(shù)據(jù),長度", rx_buff:used())



           local data = rx_buff:query() -- 獲取數(shù)據(jù)



           sys.publish(rxtopic, "downlink", data)



           rx_buff:del()



       end



       -- log.info("libnet", "調(diào)用wait開始等待消息")



       -- 等待事件, 例如: 服務(wù)器下發(fā)數(shù)據(jù), 有數(shù)據(jù)準(zhǔn)備上報(bào), 服務(wù)器斷開連接



       result, param, param2 = libnet.wait(d1Name, 15000, netc)



       log.info("libnet", "wait", result, param, param2)



       if not result then



           -- 網(wǎng)絡(luò)異常了, 那就斷開了, 執(zhí)行清理工作



           log.info("socket", "服務(wù)器斷開了", result, param)



           break



       elseif #txqueue > 0 then



           -- 有待上報(bào)的數(shù)據(jù),處理之



           while #txqueue > 0 do



               local data = table.remove(txqueue, 1)



               if not data then



                   break



               end



               result,param = libnet.tx(d1Name, 15000, netc,data)



               log.info("libnet", "發(fā)送數(shù)據(jù)的結(jié)果", result, param)



               if not result then



                   log.info("socket", "數(shù)據(jù)發(fā)送異常", result, param)



                   break



               end



           end



       end



       -- 循環(huán)尾部, 繼續(xù)下一輪循環(huán)



   end



   -- 能到這里, 要么服務(wù)器斷開連接, 要么上報(bào)(tx)失敗, 或者是主動(dòng)退出



   libnet.close(d1Name, 5000, netc)



   -- log.info(rtos.meminfo("sys"))



   sys.wait(30000) -- 這是重連時(shí)長, 自行調(diào)整

end

end

二、燒錄代碼到硬件

2.1 正確連接電腦和4G模組電路板

使用帶有數(shù)據(jù)通信功能的數(shù)據(jù)線,不要使用僅有充電功能的數(shù)據(jù)線;

2.2 識(shí)別4G模組的boot引腳

下載之前,要用模組的boot引腳觸發(fā)下載, 也就是說,要把4G模組的boot引腳拉到 1.8v,或者直接把boot引腳和VDD_EXT引腳相連。我們要在按下BOOT按鍵時(shí)讓模塊開機(jī),就可以進(jìn)入下載模式了。

具體到 Air780E開發(fā)板,

2.2.1 當(dāng)我們模塊沒開機(jī)時(shí),按著BOOT鍵然后長按PWR開機(jī)。

2.2.2 當(dāng)我們模塊開機(jī)時(shí),按著BOOT鍵然后點(diǎn)按重啟鍵即可。

圖片?

2.3 識(shí)別電腦的正確端口

判斷是否進(jìn)入BOOT模式:模塊上電,此時(shí)在電腦的設(shè)備管理器中,查看串口設(shè)備, 會(huì)出現(xiàn)一個(gè)端口表示進(jìn)入了boot下載模式,如下圖所示:

圖片?

當(dāng)設(shè)備管理器出現(xiàn)了3個(gè)連續(xù)數(shù)字的com端口,并且每個(gè)數(shù)字都大于4,這時(shí)候, 硬件連接上就緒狀態(tài),恭喜你,可以進(jìn)行燒錄了!

2.4 新建項(xiàng)目

首先,確保你的 LuaTools 的版本,上大于 2.2.13 版本的。

在 LuaTools 的左上角上有版本顯示的,如圖所示:

圖片?

LuaTools 版本沒問題的話, 就點(diǎn)擊 LuaTOols 右上角的“項(xiàng)目管理測(cè)試”按鈕,如下圖所示:

圖片?

這時(shí)會(huì)彈出項(xiàng)目管理和燒錄管理的對(duì)話框,如下圖:

新建一個(gè)項(xiàng)目

注意:這里截圖使用的hello world項(xiàng)目的燒錄教程,燒錄的時(shí)候要將腳本換成本次demo的。

圖片?

2.5 開始燒錄

選擇780E板子對(duì)應(yīng)的底層core和剛改的main.lua腳本文件。下載到板子中。

圖片?

圖片?

點(diǎn)擊下載后,我們需要進(jìn)入boot模式才能正常下載,在(3)(4)小節(jié)已經(jīng)介紹了如何進(jìn)入boot模式。

圖片?

三、驗(yàn)證功能

3.1 打開TCP SSL連接測(cè)試工具。

圖片?

3.2 配置端口,tcp連接,是否加密。

圖片?

3.3 成功連接并發(fā)送數(shù)據(jù)

圖片?

四、常見問題

4.1 最多同時(shí)支持多少個(gè)連接?

socket支持多個(gè)連接的, 通常最多支持8個(gè)。加密連接(TLS/SSL)需要更多內(nèi)存, 這意味著能容納的連接數(shù)會(huì)小很多, 同時(shí)也更慢。

4.2 可以與mqtt庫同時(shí)使用嗎?

支持。

以上就是今天的全部內(nèi)容,合宙低功耗4G模組Air780E快速入門之跟服務(wù)器之間的加密通信,你學(xué)會(huì)了嗎?

?審核編輯 黃宇

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

    關(guān)注

    12

    文章

    9160

    瀏覽量

    85425
  • 加密通信
    +關(guān)注

    關(guān)注

    1

    文章

    12

    瀏覽量

    2758
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【合宙Air780E開發(fā)板趣味應(yīng)用】Air780E開發(fā)板方言打麻將

    合宙10月份推出的Air780E模組,是一款LTE Cat.1 bis通信模塊,采用移芯EC618平臺(tái),支持4G全網(wǎng)通。合宙也推出了相應(yīng)的開發(fā)板,別看開發(fā)板身材小,價(jià)格低,但是身手不差。合宙
    發(fā)表于 01-04 13:45

    基于Air780E的遠(yuǎn)程報(bào)警方案

    恒博A780E-S智能遠(yuǎn)程報(bào)警方案板,基于合宙低功耗4G Cat.1模組Air780E設(shè)計(jì),支持LuatOS二次開發(fā),無需額外添加單片機(jī);可以幫助行業(yè)客戶快速搭建遠(yuǎn)程報(bào)警產(chǎn)品及其配套系統(tǒng),并提供客戶端軟件
    發(fā)表于 03-01 11:51 ?1894次閱讀

    Air780E硬件設(shè)計(jì)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《Air780E硬件設(shè)計(jì)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-14 09:57 ?20次下載

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析簡介本文檔適用于合宙Air780E、
    的頭像 發(fā)表于 07-19 15:37 ?674次閱讀
    <b class='flag-5'>Air780E</b>/<b class='flag-5'>Air780</b>EP/<b class='flag-5'>Air780</b>EQ/<b class='flag-5'>Air</b>201模塊遇到死機(jī)問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機(jī)如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機(jī)如何分析簡介本文檔適用于合宙Air780E、
    的頭像 發(fā)表于 07-19 16:07 ?532次閱讀
    <b class='flag-5'>Air780E</b>/<b class='flag-5'>Air780</b>EP/<b class='flag-5'>Air780</b>EQ/<b class='flag-5'>Air</b>201模塊遇到內(nèi)存死機(jī)如何分析

    合宙 Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析簡介本文檔適用于合宙Air780E
    的頭像 發(fā)表于 08-01 17:27 ?804次閱讀
    合宙 <b class='flag-5'>Air780E</b>/<b class='flag-5'>Air780</b>EP/<b class='flag-5'>Air780</b>EQ/<b class='flag-5'>Air</b>201模塊遇到死機(jī)問題如何分析

    合宙Air780E硬件設(shè)計(jì)手冊(cè)02

    合宙低功耗4G模組Air780E硬件設(shè)計(jì)介紹
    的頭像 發(fā)表于 09-06 12:02 ?488次閱讀
    合宙<b class='flag-5'>Air780E</b>硬件設(shè)計(jì)手冊(cè)02

    低功耗4G模組Air780E的固件的遠(yuǎn)程升級(jí)操作方法

    ?今天我們學(xué)習(xí)Air780E快速入門之固件的遠(yuǎn)程升級(jí),小伙伴們,學(xué)起來吧! 一、 生成差分包 合宙的遠(yuǎn)程升級(jí)支持使用合宙云平臺(tái)和自建服務(wù)器,此例程使用的是合宙云平臺(tái)。 1.1 準(zhǔn)備新舊版的core
    的頭像 發(fā)表于 10-12 07:04 ?384次閱讀
    低功耗4G模組<b class='flag-5'>Air780E</b>的固件的遠(yuǎn)程升級(jí)<b class='flag-5'>操作方法</b>

    超級(jí)干貨!Air780E的串口通信分享

    ? 猛然發(fā)現(xiàn),Air780E的串口通信還沒分享,難怪已經(jīng)有小伙伴提出了要求! 那我們來講解低功耗4G模組 Air780E 的串口通信的基本用法,小伙伴們,學(xué)起來吧! 一、硬件準(zhǔn)備 ?
    的頭像 發(fā)表于 10-15 10:47 ?427次閱讀
    超級(jí)干貨!<b class='flag-5'>Air780E</b>的串口<b class='flag-5'>通信</b>分享

    奇妙的Air780E之UDP應(yīng)用示例大賞!

    關(guān)于UDP是一種無連接的、不可靠的傳輸層協(xié)議,主要用于實(shí)現(xiàn)網(wǎng)絡(luò)中的快速通訊,我們今天將把Air780E的UDP應(yīng)用分析透徹。
    的頭像 發(fā)表于 11-04 09:25 ?355次閱讀
    奇妙的<b class='flag-5'>Air780E</b>之UDP應(yīng)用示例大賞!

    UDP應(yīng)用詳解:Air780E軟件的全面手冊(cè)

    了解Air780E軟件UDP應(yīng)用全面手冊(cè),永享編程幸福人生。
    的頭像 發(fā)表于 11-05 12:31 ?209次閱讀
    UDP應(yīng)用詳解:<b class='flag-5'>Air780E</b>軟件的全面手冊(cè)

    定時(shí)技術(shù):Air780E如何革新定時(shí)任務(wù)管理?

    今天講的是關(guān)于Air780E如何革新定時(shí)任務(wù)管理的內(nèi)容,希望大家有所收獲。
    的頭像 發(fā)表于 11-07 13:50 ?236次閱讀
    定時(shí)<b class='flag-5'>器</b>技術(shù):<b class='flag-5'>Air780E</b>如何革新定時(shí)任務(wù)管理?

    Air780E模組的ADC之旅 LuatOS開發(fā)實(shí)例

    今天學(xué)習(xí)一個(gè)新的示例,關(guān)于Air780E模組LuatOS開發(fā)的ADC應(yīng)用實(shí)例,希望大家有所收獲。
    的頭像 發(fā)表于 11-11 09:33 ?212次閱讀
    <b class='flag-5'>Air780E</b>模組的ADC之旅  LuatOS開發(fā)實(shí)例

    Air780E模組LuatOS開發(fā)的位運(yùn)算(bit)教程篇!

    本次我們要學(xué)習(xí)的是4G模組Air780E的LuatOS開發(fā),關(guān)于位運(yùn)算(bit)教程分享給大家。
    的頭像 發(fā)表于 11-26 11:58 ?155次閱讀
    <b class='flag-5'>Air780E</b>模組LuatOS開發(fā)的位運(yùn)算(bit)教程篇!

    低功耗模組Air780E的AT指令:FTP示例!

    本文說的是關(guān)于4G模組AT指令的FTP示例,以Air780E為例,希望大家有所收獲。
    的頭像 發(fā)表于 11-30 09:40 ?195次閱讀
    低功耗模組<b class='flag-5'>Air780E</b>的AT指令:FTP示例!