2025-02-18 15:40:42 +08:00

3.2 KiB

介绍

使用python脚本将后台生成的json格式的数据模版文件转为c代码文件。 极大的减少了用户的开发工作,同时保证了终端设备,网关设备上数据定义的一致性。 请使用python3解释器运行。

目录结构

interpret_json_dt
├─config                                # 配置文件目录
  └─dt.conf                            # INI配置文件
├─src                                   # 脚本文件目录
  ├─dt_fixed_content                   # 固定代码文件目录 
     └─dt_ble_action                  # ble action部分固定代码 
     └─dt_ble_event                   # ble event部分固定代码
     └─dt_ble_property                # ble proerty部分固定代码 
     └─dt_ble_prototype               # ble 函数原型
     └─dt_gateway_action              # gateway action部分固定代码 
     └─dt_gateway_event               # gateway event部分固定代码 
     └─dt_gateway_property            # gateway property部分固定代码 
     └─dt_gateway_prototype           # gateway 函数原型   
  ├─interpret_dt_ble.py                # 转换json脚本生成ble sdk代码
  ├─interpret_dt_gateway.py            # 转换json脚本生成网关代码   
  ├─example.json                       # 示例文件           

代码生成原理

采取动态生成 + 固定写入的方式来生成代码。

  • 动态生成:通过脚本解析json文件,将数据模版转换为对应的代码
  • 固定写入:数据模版的操作函数是固定不变的,从静态文件读取写入,达到简化脚本的目的

头文件生成

  1. 按照LLSync协议定义写入公共定义,包括数据类型定义,消息类型定义等
  2. 解析json文件,将字符串id转换为枚举类型id
  3. 将每个id对应的值根据其类型进行转换
    • 对于枚举类型,将其枚举值转换为枚举类型
    • 对于整数类型或浮点数类型,将其最大值,最小值,起始值,步进转换为宏定义
    • 对于字符串类型,将其最大长度,最小长度转换为宏定义
  4. 写入不同数据类型的结构体定义
  5. 写入不同数据类型的函数声明,函数声明从dt_gateway_prototype中读

BLE C文件生成

  1. 解析json文件,根据id生成其操作函数,操作函数需要用户按照需求实现
  2. 解析json文件,生成数据模版的结构数组
  3. 读取静态文件,写入固定操作函数

网关C文件生成

  1. 解析json文件,生成数据模版的结构数组
  2. 读取静态文件,写入固定操作函数

使用方法

BLE SDK

  1. 从物联网平台下载数据模版json文件
  2. 执行python3 interpret_dt_ble.py <your_json_file>来生成对应的数据模版文件
  3. 按照数据特性实现ble_qiot_template.c中的操作函数
  4. 将生成文件拷贝到data_template目录编译即可

网关

  1. 从物联网平台下载数据模版json文件
  2. 执行python3 interpret_dt_gateway.py <your_json_file>来生成对应的数据模版文件
  3. 将生成文件拷贝SDK编译即可。