FreeIOE开发文档
  • Introduction
  • 基础介绍
    • FreeIOE是什么
    • 名词解释
  • 开发引导
    • 开发入门
    • 环境搭建
      • 使用网关产品
      • 使用虚拟网关
      • 使用VSCode插件开发
      • 其他应用开发方式
    • 应用开发
      • 应用是什么
      • 快速构建应用
        • 数据采集
        • 数据上云
        • 边缘计算
        • 设备通讯
      • 深入理解应用
        • 应用本质
        • 从零构造
        • 应用配置可视化
      • 注意事项
      • 应用示例
    • 发布应用
      • 申请账户
      • 新建应用
      • 克隆应用
      • 应用打包
      • 应用上传
  • 接口文档
    • 应用接口
      • 应用基础类模块
        • 应用基础类
        • MQTT应用基础类
      • 系统接口
      • 基础接口
      • 设备对象
      • 统计接口
      • 日志接口
      • 事件类型和等级
      • 云配置接口
      • 云配置帮助接口
      • 数据通讯模块
        • 端口模块
        • 帮助模块
        • 端口超时封装
      • 工具类模块
        • 数据订阅计算
        • 数据拼接
        • 数据流缓存
    • 系统服务接口
      • 配置服务
      • 软件分发服务
      • 扩展管理服务
      • 应用管理服务
      • 缓存服务
    • 其它资料 & 文档
      • Lua语言学习
      • 二进制数据操作
      • 文件操作
      • 模块列表
      • IOE模块
      • 串口操作模块
      • 累计量计算模块
      • 工具模块
        • helper模块
        • leds模块
        • gpios模块
        • sysinfo模块
        • 周期计时模块
Powered by GitBook
On this page
  • 从零构造应用
  • 声明应用模块
  • 模块函数列表

Was this helpful?

  1. 开发引导
  2. 应用开发
  3. 深入理解应用

从零构造

Previous应用本质Next应用配置可视化

Last updated 5 years ago

Was this helpful?

从零构造应用

了解了应用本质后,我们着手构造一个不依赖于 FreeIOE 提供的应用基础类的应用。

本章使用了第三方的模块 来构造应用模块。如果您对完全的手工构造应用模块感兴趣,请。

声明应用模块

在实现模块函数前,我们需要进行模块对象声明(definition)

local class = require 'middleclass'
--- 注册对象(请尽量使用唯一的标识字符串)
local app = class('THIS_IS_AN_EXAMPLE_APP_FOR_FREEIOE')
--- 设定应用最小运行接口版本(目前版本为6,为了接口兼容性)
app.static.API_VER = 6

注意: API_VER 是标识当前应用运行的最低 API 版本号需求。当 FreeIOE 无法满足这个版本需求时,将不会尝试启动该应用,避免由于接口不兼容性导致的未知问题。

参考 API Reference获取接口以及其接口版本号要求等信息

模块函数列表

模块需要实现的函数只有极少的数量,列表如下:

  1. 模块对象构建函数

    initialize(name, sys, conf)

  2. 应用实例启动函数

    start()

  3. 应用实例停止/退出函数

    close(reason)

  4. 应用逻辑运行函数 (可选)

    run(time_in_ms)

函数详细说明

  • function app:initialize(name, sys, conf)

    • 参数

      • name: 应用实例名称

      • sys: 系统接口

      • conf: 配置信息

    • 返回值

      • 无

    • 用途

      • FreeIOE 调用此函数,去实例化应用对象,并传入应用初始化所需接口和信息。

    • 注意

      • 应用不应在本函数实现复杂的逻辑。较为耗时和复杂的逻辑需要放到start函数中实现。

  • function app:start()

    • 参数

      • 无

    • 返回值

      • boolean 返回值,如果返回非真,框架则认为初始化失败,从而不再继续执行后续动作。

    • 用途

      • 设定应用回调接口,创建设备对象实例,设备通讯接口初始化以及其他应用所需初始化逻辑

    • 注意

      • 如需要进行比较耗时的操作,请使用 sys:fork 或者 sys:timeout 来开辟新的携程来执行

  • function app:close(reason)

    • 参数

      • reason: 关闭/退出的原因

    • 返回值

      • 无

    • 用途

      • 应用对象实例生命周期结束(非gc)的回调入口,用以应用清理对象等等。

    • 注意

      • 确保此函数不出现一些异常情况,否则会出现一些数据并未正确清理(如设备模型并未被反注册)

  • function app:run(tms)

    • 参数

      • tms:当前周期调用的间隔时间,单位毫秒。第一次调用值为1000毫秒,以后的值为本函数上一次运行的返回值。

    • 返回值

      • 返回下一次调用次函数的时间间隔(单位是毫秒)。

    • 用途

      • 当应用有此接口,框架会周期调用此函数。周期间隔时间取决于本函数的返回值

middleclass
参考