WiFi屏开发环境搭建

WiFi屏厨电开发主要用到两个编辑器,VisualTFTVisual Studio Code

项目结构

  1. main.lua # 主程序入口
  2. ├─dciot_build
  3. ├─Font # 自定义字体文件
  4. ├─Images # 静态资源图片文件
  5. back_main.png
  6. └─selector slides
  7. └─ ── an.png
  8. ├─output # 固件输出目录
  9. DCIOT.PKG
  10. └─truefont
  11. └─Waves

WiFi厨电开发流程

  1. 注册平台账号
  2. 创建我的产品
  3. 定义产品功能和协议配置
  4. 导入示例工程
  5. 准备素材
    将设计图切图后,把素材保存到工程目录下的Images目录内备用

  6. 选择目标尺寸设备

  7. 编辑UI界面
    根据设计图利用UI编辑器进行控件的添加和设计
  8. 填写功能定义
    根据平台的功能定义,对应将名称和数据长度填入device_function对象中,私有协议配置将相应的协议配置写入protocol_config

  9. 对接电控协议
    找到main.lua中电控协议处理部分;重写ProcessUartCommand方法,实现对协议帧格式的解析;重写AnalyzeDeviceFunctionState方法,实现对数据域的解析并赋值到虚拟设备状态中;重写GetDeviceCommand方法,实现控制指令的生成

  10. 对接UI控制逻辑
    重写on_function_state_change事件处理方法,将状态变化的功能联动显示到界面上;在on_control_notify方法中,处理对应的控件交互事件,调用SendFunctionValues方法将设定值生成控制指令并发送给电控板
  11. 编译烧录测试

私有协议配置技巧

开发者私有协议配置自动解析需要在main.lua中做相应配置,具体技巧如下,找到main.lua中的protocol_config变量,修改其定义

  1. protocol_config = {
  2. endian_type=0, --大小端编码规则,0:小端,1:大端
  3. length=9, --帧长,变长填nil,同时指定长度所在的字节范围索引,length_start, length_end
  4. length_offset=nil, --长度相对于整帧长度的偏移值,即length+length_offset=整帧长度
  5. check_type='crc16', --校验算法,sum,crc16...
  6. check_data_start=0, --校验数据起始位置,0开始
  7. check_data_end=-2, --校验数据结束位置,正数:第几个字节,0:末尾,负数:末尾往前几个字节,包含校验数据本身
  8. --帧结构描述,主要用于指令的生成,设置该项后,协议解析库会将数据分别解析设置到各个字段中
  9. --其中Data数据域部分定义和云端定义的虚拟设备不一致,请在此处重写定义
  10. structs={
  11. {name='head', length=1, value={0xA5}},
  12. {name="type", length=2},
  13. {name='data', length=4},
  14. {name='check', length=2}
  15. },
  16. --如果下行帧和上行帧格式有差异,请在此分开定义,否则不要定义任何值
  17. structs_response=nil
  18. }

油烟机开发实例

WiFi屏和油烟机电控板
img

  1. 导入示例工程
    打开VisualTFT软件打开工程文件夹中扩展名为tftprj的文件,如图示
  1. 优化界面效果
    修改UI效果,包括但不限于修改背景图,修改按钮背景图,如图示

  2. 扩展功能按钮
    根据业务需求,扩展不同的功能按钮组件,例如油烟机项目中扩展三挡风按钮,灯光组件和电源按钮

  3. 编译烧录运行
    项目UI搭建完成,编译工程,如图示

将工程目录下的output目录下的DCIOT.PKG文件复制到U盘根目录,将U盘插到板卡上重新上电等待烧录成功,成功后先拔掉U盘再重新上电,如图示

  1. 链接电控测试

开发技巧和建议

调试技巧

串口工具连接调试口, 波特率115200

Lua脚本调试,Visual Studio Code 安装Lua Debug插件,开启Test方法调试自己的方法,调试通过后注释Test方法。
合理规划控件编号,简化程序开发,建议分配规则

  1. 1~20: 保留功能按键,1:电源,2:锁屏,3:Home,4:返回,5:帮助,6:音量,7:亮度…
  2. 21~50:系统状态指示,21:标题,22:当前时间,23:WiFi
  3. 51~100:设备状态指示
  4. 101~200:用于共用控件,x1:上一个,x2:下一个,x3:第一个,x4:最后一个,x5:目标选择或图标控件
  5. 201~300:背景及静态控件
  6. 300以上:动态交互控件