今天我們來學習合宙低功耗
模組 r780E快速入門之跟伺服器之間的加密 ,夥伴們,一起學起來!一、編寫指令碼
1.1 準備
Air780E開發板購買
Air780E開發板
-Air780E/ 加密通訊程式原始碼demo
合宙的 TCP/UDP 測試伺服器
A
介紹說明1.2 程式詳解
1.2.1 首先配置聯網配置
-- 測試網站 https://netlab.luatos.com/ 點選 開啟TCP 獲取測試埠號
-- 要按實際情況修改
local host = "112.125.89.8" -- 伺服器ip或者域名, 都可以的
local port = 45186 -- 伺服器
號local is_udp = false -- 如果是UDP, 要改成true, false就是TCP
local is_tls = true -- 加密與否, 要看伺服器的實際情況
--=============================================================
1.2.2 聯網後,建立聯網成功後,對收發資料事件的處理函式
local func
on socket st()-- 等待聯網
sys.waitUntil("IP_RE
Y")-- 時間同步
socket.sntp()
-- 開始正在的邏輯, 發起socket連結,等待資料/上報心跳
local taskName = "sc"
local topic = taskName .. "_txrx"
log.info("topic", topic)
local txqueue = {}
--[[建立一個任務執行緒
@pa
1 function 任務函式名,用於resume喚醒時呼叫@param2 string 任務名稱,用於喚醒任務id
@param3 function 接收到非目標訊息時的回撥函式
@param4 any 任務函式fun的可變引數
@return number 返回該任務的執行緒號
]]
sysplus.taskInitEx(sockettask, taskName, netCB, taskName, txqueue, topic)
while 1 do
end
end
1.2.3 聯網函式
function sockettask(d1Name, txqueue, rxtopic)
-- 列印準備連線的伺服器
log.info("socket", host, p
t, is_udp and "UDP" or "TCP", is_tls and "TLS" or "RAW")-- 準備好所需要的接收緩衝區
local rx_buff = zbuff.create(1024)
local netc = socket.create(nil, d1Name)
socket.config(netc, nil, is_udp, is_tls)
log.info("任務id", d1Name)
while true do
-- 連線伺服器, 15秒超時
log.info("socket", "開始連線伺服器")
sysplus.cleanMsg(d1Name)
local result = libnet.connect(d1Name, 15000, netc, host, port)
if result then
log.info("socket", "伺服器連上了") --向伺服器傳送資料 libnet.tx(d1Name, 0, netc, "helloworld")
else
log.info("socket", "伺服器沒連上了!!!")
end
while result do
-- 連線成功之後, 先嚐試接收 -- log.info("socket", "呼叫rx接收資料") local succ, param = socket.rx(netc, rx_buff) if not succ then log.info("伺服器斷開了", succ, param, ip, port) break end -- 如果伺服器有下發資料, used()就必然大於0, 進行處理 if rx_buff:used() > 0 then log.info("socket", "收到伺服器資料,長度", rx_buff:used()) local data = rx_buff:query() -- 獲取資料 sys.publish(rxtopic, "downlink", data) rx_buff:del() end -- log.info("libnet", "呼叫wait開始等待訊息") -- 等待事件, 例如: 伺服器下發資料, 有資料準備上報, 伺服器斷開連線 result, param, param2 = libnet.wait(d1Name, 15000, netc) log.info("libnet", "wait", result, param, param2) if not result then -- 網路異常了, 那就斷開了, 執行清理工作 log.info("socket", "伺服器斷開了", result, param) break elseif #txqueue > 0 then -- 有待上報的資料,處理之 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", "傳送資料的結果", result, param) if not result then log.info("socket", "資料傳送異常", result, param) break end end end -- 迴圈尾部, 繼續下一輪迴圈
end
-- 能到這裡, 要麼伺服器斷開連線, 要麼上報(tx)失敗, 或者是主動退出
libnet.close(d1Name, 5000, netc)
-- log.info(rtos.meminfo("sys")) sys.wait(30000) -- 這是重連時長, 自行調整
end
end
二、燒錄程式碼到
2.1 正確連線
和4G模組電路板使用帶有資料通訊功能的資料線,不要使用僅有充電功能的資料線;
2.2 識別4G模組的boot引腳
在
之前,要用模組的boot引腳觸發下載, 也就是說,要把4G模組的boot引腳拉到 1.8v,或者直接把boot引腳和VDD_EXT引腳相連。我們要在按下BOOT按鍵時讓模組開機,就可以進入下載模式了。具體到 Air780E開發板,
2.2.1 當我們模組沒開機時,按著BOOT鍵然後長按PWR開機。
2.2.2 當我們模組開機時,按著BOOT鍵然後點按重啟鍵即可。
2.3 識別電腦的正確埠
判斷是否進入BOOT模式:模組上電,此時在電腦的裝置管理器中,檢視串列埠裝置, 會出現一個埠表示進入了boot下載模式,如下圖所示:
當裝置管理器出現了3個連續數字的com埠,並且每個數字都大於4,這時候, 硬體連線上就緒狀態,恭喜你,可以進行燒錄了!
2.4 新建專案
首先,確保你的 LuaTools 的版本,上大於 2.2.13 版本的。
在 LuaTools 的左上角上有版本顯示的,如圖所示:
LuaTools 版本沒問題的話, 就點選 LuaTOols 右上角的“專案管理測試”按鈕,如下圖所示:
這時會彈出專案管理和燒錄管理的對話方塊,如下圖:
新建一個專案
注意:這裡截圖使用的hello world專案的燒錄
,燒錄的時候要將指令碼換成本次demo的。
2.5 開始燒錄
選擇780E板子對應的底層core和剛改的main.lua指令碼檔案。下載到板子中。
點選下載後,我們需要進入boot模式才能正常下載,在(3)(4)小節已經介紹瞭如何進入boot模式。
三、驗證功能
3.1 開啟TCP SSL連線測試工具。
3.2 配置埠,tcp連線,是否加密。
3.3 成功連線併傳送資料
四、常見問題
4.1 最多同時支援多少個連線?
socket支援多個連線的, 通常最多支援8個。加密連線(TLS/SSL)需要更多記憶體, 這意味著能容納的連線數會小很多, 同時也更慢。
4.2 可以與mqtt庫同時使用嗎?
支援。
以上就是今天的全部內容,合宙低功耗4G模組Air780E快速入門之跟伺服器之間的加密通訊,你學會了嗎?