0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于Air780E:与服务器的加密通信操作方法

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-10-12 07:31 次阅读

​今天我们来学习合宙低功耗4G模组Air780E快速入门之跟服务器之间的加密通信,伙伴们,一起学起来!

一、编写脚本

1.1 准备资料

Air780E开发板购买

Air780E开发板设计资料

LuatOS-Air780E/网络加密通信程序源码demo

合宙的 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 联网后,创建联网成功后,对收发数据事件的处理函数

local function sockettest()

-- 等待联网

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

    文章

    8811

    浏览量

    84881
  • 加密通信
    +关注

    关注

    1

    文章

    11

    浏览量

    2746
收藏 人收藏

    评论

    相关推荐

    【合宙Air780E开发板趣味应用】Air780E开发板方言打麻将

    合宙10月份推出的Air780E模组,是一款LTE Cat.1 bis通信模块,采用移芯EC618平台,支持4G全网通。合宙也推出了相应的开发板,别看开发板身材小,价格低,但是身手不差。合宙
    发表于 01-04 13:45

    合宙Air780E开发板趣味应用开发:方言打麻将

    合宙10月份推出的Air780E模组,是一款LTE Cat.1 bis通信模块,采用移芯EC618平台,支持4G全网通。 合宙也推出了相应的开发板,别看开发板身材小,价格低,但是身手不差。 合宙
    的头像 发表于 01-09 19:55 2903次阅读

    【趣味开发】合宙Air780E开发板趣味应用开发:方言打麻将

    合宙10月份推出的Air780E模组,是一款LTE Cat.1 bis通信模块,采用移芯EC618平台,支持4G全网通。 合宙也推出了相应的开发板,别看开发板身材小,价格低,但是身手不差。 合宙
    的头像 发表于 01-18 08:20 2170次阅读

    基于Air780E的远程报警方案

    恒博A780E-S智能远程报警方案板,基于合宙低功耗4G Cat.1模组Air780E设计,支持LuatOS二次开发,无需额外添加单片机;可以帮助行业客户快速搭建远程报警产品及其配套系统,并提供客户端软件
    发表于 03-01 11:51 1773次阅读

    低成本!基于Air780E的恒博智能远程报警/控制方案

    系统方案服务商,已基于Air780E推出了远程报警/控制系列方案。文末【阅读原文】链接,了解更多Cat.1应用方案。1基于Air780E
    的头像 发表于 02-13 16:06 3227次阅读
    低成本!基于<b class='flag-5'>Air780E</b>的恒博智能远程报警<b class='flag-5'>器</b>/控制<b class='flag-5'>器</b>方案

    Air780E硬件设计手册

    电子发烧友网站提供《Air780E硬件设计手册.pdf》资料免费下载
    发表于 04-14 09:57 15次下载

    Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析简介本文档适用于合宙Air780E
    的头像 发表于 07-19 15:37 449次阅读
    <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模块遇到死机问题如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到内存死机如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到内存死机如何分析简介本文档适用于合宙Air780E
    的头像 发表于 07-19 16:07 375次阅读
    <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模块遇到内存死机如何分析

    合宙 Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析

    Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析简介本文档适用于合宙Air780E
    的头像 发表于 08-01 17:27 556次阅读
    合宙 <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模块遇到死机问题如何分析

    基于合宙Air780E开发板集成ec11旋转编码实例

    一个基于Air780E开发板,集成ec11旋转编码的实例。
    的头像 发表于 08-08 10:13 507次阅读
    基于合宙<b class='flag-5'>Air780E</b>开发板集成ec11旋转编码<b class='flag-5'>器</b>实例

    合宙Air780E硬件设计手册02

    合宙低功耗4G模组Air780E硬件设计介绍
    的头像 发表于 09-06 12:02 269次阅读
    合宙<b class='flag-5'>Air780E</b>硬件设计手册02

    合宙4G模组Air780E开发板使用手册

    合宙开发板Air780E使用说明
    的头像 发表于 09-09 18:22 404次阅读
    合宙4G模组<b class='flag-5'>Air780E</b>开发板使用手册

    干货篇:低功耗4G模组Air780E的串口通信

    ​ 今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法,小伙伴们,学起来吧!
    的头像 发表于 10-05 14:38 219次阅读
    干货篇:低功耗4G模组<b class='flag-5'>Air780E</b>的串口<b class='flag-5'>通信</b>

    低功耗4G模组Air780E的固件的远程升级操作方法

    ​今天我们学习Air780E快速入门之固件的远程升级,小伙伴们,学起来吧! 一、 生成差分包 合宙的远程升级支持使用合宙云平台和自建服务器,此例程使用的是合宙云平台。 1.1 准备新旧版的core
    的头像 发表于 10-12 07:04 105次阅读
    低功耗4G模组<b class='flag-5'>Air780E</b>的固件的远程升级<b class='flag-5'>操作方法</b>

    超级干货!Air780E的串口通信分享

    ​ 猛然发现,Air780E的串口通信还没分享,难怪已经有小伙伴提出了要求! 那我们来讲解低功耗4G模组 Air780E 的串口通信的基本用法,小伙伴们,学起来吧! 一、硬件准备 ​
    的头像 发表于 10-15 10:47 98次阅读
    超级干货!<b class='flag-5'>Air780E</b>的串口<b class='flag-5'>通信</b>分享