美文网首页
4G远程更新

4G远程更新

作者: Lupino | 来源:发表于2021-01-06 21:46 被阅读0次

    远程更新对于硬件设备非常的重要,在 4G 的设备上面我们用的是 luat,

    但是它原本的 ota 更新是有问题对的, 在他们的 github 上面提交 issue, 没有人鸟。

    于是干脆自己设计一个。

    我把自己写的应用代码全部都打包到一个文件上面。

    在入口的位置,require 两个不同的文件。

    用一个 safeRequire 如下:

    function safeRequire(file)
        local oldPath = package.path
        package.path = "/?.lua;/?.luac;/?.luae;"..package.path
        local result, para = pcall(require, file .. '_new')
    
        if not result then
            result, para = pcall(require, file)
        end
        package.path = oldPath
        return result, para
    end
    
    --加载功能模块
    local result, _ = safeRequire('sensor')
    
    if not result then
        require"sensor"
    end
    

    我们主要文件名字为 sensor.lua, 我们更新后的文件叫 /sensor_new.lua, 所以也把它加到 package.path 上。

    利用 pcall 的特性去 加载 所需要的 模块。

    我们更新固件的时候只需要把文件写到 /sensor_new.lua, 然后重启一下机器就可以。

    local function updateDoneCb(result, prompt, heads)
        if result then
            sys.timerStart(function()
                sys.restart("UPDATE_DOWNLOAD_SUCCESS")
            end, 1000)
    
        end
    end
    local url = 'https://example.com/path/to/you/sensor.lua'
    http.request("GET", url, nil, nil, nil, 60000, updateDoneCb, '/sensor_new.lua')
    

    相关文章

      网友评论

          本文标题:4G远程更新

          本文链接:https://www.haomeiwen.com/subject/vnwooktx.html