?今天我們來學習合宙低功耗4G模組Air780E快速入門之跟服務器之間的加密通信,伙伴們,一起學起來!
一、編寫腳本
1.1 準備資料
Air780E開發板購買
Air780E開發板設計資料
合宙的 TCP/UDP 測試服務器
API介紹說明
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 聯網后,創建聯網成功后,對收發數據事件的處理函數
-- 等待聯網
sys.waitUntil("IP_READY")
-- 時間同步
socket.sntp()
-- 開始正在的邏輯, 發起socket鏈接,等待數據/上報心跳
local taskName = "sc"
local topic = taskName .. "_txrx"
log.info("topic", topic)
local txqueue = {}
--[[創建一個任務線程
@param1 function 任務函數名,用于resume喚醒時調用
@param2 string 任務名稱,用于喚醒任務id
@param3 function 接收到非目標消息時的回調函數
@param4 any 任務函數fun的可變參數
@return number 返回該任務的線程號
]]
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
-- 等很久了,沒數據上傳/下發, 發個日期心跳包吧
table.insert(txqueue, os.date())
sys_send(taskName, socket.EVENT, 0)
elseif tp == "uplink" then
-- 上行數據, 主動上報的數據,那就發送呀
table.insert(txqueue, data)
sys_send(taskName, socket.EVENT, 0)
elseif tp == "downlink" then
-- 下行數據,接收的數據, 從ipv6task來的
-- 其他代碼可以通過 sys.publish()
log.info("socket", "收到下發的數據了", #data,"data:",data)
end
end
end
1.2.3 聯網函數
function sockettask(d1Name, txqueue, rxtopic)
-- 打印準備連接的服務器信息
log.info("socket", host, port, 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快速入門之跟服務器之間的加密通信,你學會了嗎?
?審核編輯 黃宇
-
服務器
+關注
關注
12文章
9308瀏覽量
86071 -
加密通信
+關注
關注
1文章
12瀏覽量
2784
發布評論請先 登錄
相關推薦
評論