main.lua文件:一般情况下不要管,默认就好了
--必须在这个位置定义PROJECT和VERSION变量
--PROJECT:ascii string类型,可以随便定义,只要不使用,就行
--VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
PROJECT = "HTTP"
VERSION = "2.0.0"
--加载日志功能模块,并且设置日志输出等级
--如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可
require "log"
LOG_LEVEL = log.LOGLEVEL_TRACE
--[[
如果使用UART输出日志,打开这行注释的代码"--log.openTrace(true,1,115200)"即可,根据自己的需求修改此接口的参数
如果要彻底关闭脚本中的输出日志(包括调用log模块接口和Lua标准print接口输出的日志),执行log.openTrace(false,第二个参数跟调用openTrace接口打开日志的第二个参数相同),例如:
1、没有调用过sys.opntrace配置日志输出端口或者最后一次是调用log.openTrace(true,nil,921600)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false)即可
2、最后一次是调用log.openTrace(true,1,115200)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false,1)即可
]]
--log.openTrace(true,1,115200)
require "sys"
require "net"
--每1分钟查询一次GSM信号强度
--每1分钟查询一次基站信息
net.startQueryAll(60000, 60000)
--加载控制台调试功能模块(此处代码配置的是uart2,波特率115200)
--此功能模块不是必须的,根据项目需求决定是否加载
--使用时注意:控制台使用的uart不要和其他功能使用的uart冲突
--使用说明参考demo/console下的《console功能使用说明.docx》
--require "console"
--console.setup(2, 115200)
--加载网络指示灯和LTE指示灯功能模块
--根据自己的项目需求和硬件配置决定:1、是否加载此功能模块;2、配置指示灯引脚
--合宙官方出售的Air720开发板上的网络指示灯引脚为pio.P2_0,LTE指示灯引脚为pio.P2_1
--require "netLed"
--netLed.setup(true,pio.P2_0,pio.P2_1)
--网络指示灯功能模块中,默认配置了各种工作状态下指示灯的闪烁规律,参考netLed.lua中ledBlinkTime配置的默认值
--如果默认值满足不了需求,此处调用netLed.updateBlinkTime去配置闪烁时长
--LTE指示灯功能模块中,配置的是注册上4G网络,灯就常亮,其余任何状态灯都会熄灭
--加载错误日志管理功能模块【强烈建议打开此功能】
--如下2行代码,只是简单的演示如何使用errDump功能,详情参考errDump的api
require "errDump"
errDump.request("udp://ota.airm2m.com:9072")
--加载远程升级功能模块【强烈建议打开此功能,如果使用了阿里云的OTA功能,可以不打开此功能】
--如下3行代码,只是简单的演示如何使用update功能,详情参考update的api以及demo/update
--PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"
--require "update"
--update.request()
--加载HTTP功能测试模块
require "testHttp"
--启动系统框架
sys.init(0, 0)
sys.run()
接下来是testHttp文件
--- 模块功能:HTTP功能测试.
-- @author openLuat
-- @module http.testHttp
-- @license MIT
-- @copyright openLuat
-- @release 2018.03.23
module(...,package.seeall)
require"http"
local function cbFnc(result,prompt,head,body)
log.info("testHttp.cbFnc",result,prompt)
if result and head then
for k,v in pairs(head) do
log.info("testHttp.cbFnc",k..": "..v)
end
end
if result and body then
log.info("testHttp.cbFnc","bodyLen="..body:len())
end
end
local function cbFncFile(result,prompt,head,filePath)
log.info("testHttp.cbFncFile",result,prompt,filePath)
if result and head then
for k,v in pairs(head) do
log.info("testHttp.cbFncFile",k..": "..v)
end
end
if result and filePath then
log.info("stop",os.time())
local size = io.fileSize(filePath)
log.info("testHttp.cbFncFile","fileSize="..size)
--输出文件内容,如果文件太大,一次性读出文件内容可能会造成内存不足,分次读出可以避免此问题
if size<=4096 then
log.info("testHttp.cbFncFile",io.readFile(filePath))
else
end
end
--文件使用完之后,如果以后不再用到,需要自行删除
if filePath then os.remove(filePath) end
end
local function downloadfiles()
log.info("start",os.time())
http.request("GET","http://域名或者ip/download.zip",nil,nil,nil,30000,cbFncFile,"download.zip")
end
sys.timerStart(downloadfiles,20000)
最后:下载测试
点击软件的项目管理测试
选择底层core
添加以下文件,以及打钩。
然后点击下载脚本。
接入usb接口下载:
按照如下手法:
详情请参照如下链接
插卡一,显示如下。
插卡槽二才能成功
然后把一个zip文件发送到服务器根目录
大小为291kb
最后可以得出下载一个291kb的文件大概四秒
第二次测试时间为5秒
第三次测试时间为5秒
改变变量:更换带宽大一点点的服务器。还是5秒
不测试了,女盆友呼唤俺了。哈哈哈哈哈
最后分享一个大兄弟开发的emqtt消息缓存到数据库的项目,不要购买商业版也能使用消息缓存到数据库。
https://blog.ezlinker.cn/2020/03/23/wwhai-EMQX%E6%95%99%E7%A8%8B-20200323-EMQX%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B%EF%BC%88%E9%AB%98%E7%BA%A7%E7%AF%87%EF%BC%89/