9.1 APP后端
- APP使用边缘计算中的函数与类型 边缘计算
9.1.1 APP内置变量与定义
9.1.1.1 Application 类型
Application类型为App在C++代码内的类型
class Application{
(string sql);
json ExecSqlbool HasAevice(string code);
(string device_code,string variable_mapped_code);
Variable GeVariable;
string code}
9.1.1.1.1 执行SQL语句
定义:
ExecSql(sql)
分类: 方法
参数:
sql
:string
需要执行的sqlite3语句
返回:
table
sql执行后的结果,key-value组成的map的list,比如[{“id”:1,“name”:“xx”}],如果执行失败则返回空数组[]示例
-- 当前APP为app -- 查询所有的产品 local goods = app:ExecSql("select * from goods;")
9.1.1.1.2 是否存在设备
判断当前APP是否映射有某个设备
* 定义: HasAevice(code)
* 分类: 方法
* 参数:
- code
: string
设备Code
* 返回: bool
存在返回true,不存在返回false
* 示例
```lua
-- 当前APP为app
-- 查询是否有fanuc001设备
local has_fanuc = app:HasAevice("fanuc001")
```
9.1.1.1.3 获得映射后变量的原始变量的指针
定义:
GeVariable(device_code, variable_mapped_code)
分类: 方法
参数:
device_code
:string
设备Codevariable_mapped_code
:string
映射后的变量名
返回:
Variable
原始的采集变量,类型为内置变量的Vairable,不存在返回nil示例
-- 当前APP为app -- 查找prodiuct变量的原始变量 local product = app:GeVariable("fanuc001","product")
9.1.1.1.4 变量的名称
- 定义:
code
- 分类: 属性
- 类型:
string
- 描述: APP的code
9.1.1.2 HttpRequest 类型
API的请求参数,格式如下
---@class HttpRequest
---@field path_arg table<string, string> PathArg
---@field query table<string, string> Query
---@field body any Body
---@field headers table<string, string> Header
9.1.1.2.1 请求的path参数
- 定义:
path_arg
- 分类: 属性
- 类型:
table<string, string>
- 描述:
/test_api/<code>
这类PATH里带<>
变量的解析结果
9.1.1.2.2 请求的query参数
- 定义:
query
- 分类: 属性
- 类型:
table<string, string>
- 描述: /test_api?a=1&b=2 请求里?后面的请求参数
9.1.1.2.3 请求的body参数
- 定义:
body
- 分类: 属性
- 类型:
any
- 描述: HTTP post或put请求的body
9.1.1.2.4 请求的body参数
- 定义:
headers
- 分类: 属性
- 类型:
table<string, string>
- 描述: HTTP 请求的headers
9.1.1.3 HttpResponse 类型
API的返回内容,格式如下
---@class HttpResponse
---@field code integer StatusCode
---@field body any Body
---@field headers table<string, string> Header
9.1.1.3.1 HTTP返回的status_code
- 定义:
code
- 分类: 属性
- 类型:
integer
- 描述: HTTP 返回的code
9.1.1.3.2 HTTP返回的内容
- 定义:
body
- 分类: 属性
- 类型:
any
- 描述: HTTP 返回的body
9.1.1.3.3 HTTP返回的Headers
- 定义:
headers
- 分类: 属性
- 类型:
table<string, string>
- 描述: HTTP 返回的headers
9.1.1.4 MappedDevice 类型
App内映射的设备,格式如下
---@class MappedDevice
---@field code string Device Code
---@field type string Device Type
---@field class string Device Class
9.1.1.4.1 MappedDevice Code
- 定义:
code
- 分类: 属性
- 类型:
string
- 描述: 设备的Code,和基础变量的Device.code对应
9.1.1.4.2 MappedDevice Type
- 定义:
type
- 分类: 属性
- 类型:
string
- 描述: 设备的类型,和基础变量的Device.type对应
9.1.1.4.3 MappedDevice Class
- 定义:
class
- 分类: 属性
- 类型:
string
- 描述: 设备的分类,为APP内部定义字符串
9.1.1.5 TriggerVariable 类型
App内映射的设备,格式如下
---@class TriggerVariable
---@field current integer | number | string | boolean | table 当前采集值
---@field last integer | number | string | boolean | table 上次采集值
9.1.1.5.1 TriggerVariable current
- 定义:
current
- 分类: 属性
- 类型:
integer | number | string | boolean | table
- 描述: 变量当前采集值
9.1.1.5.2 TriggerVariable last
- 定义:
last
- 分类: 属性
- 类型:
integer | number | string | boolean | table
- 描述: 变量上次采集值
9.1.2 脚本格式
APP 最简格式如下
--- test_api 测试API
---@param request HttpRequest -- 请求参数
---@return HttpResponse -- 返回参数
local function test_api(request)
return {}
end
--- Trigger 设备采集后触发函数
---@param device MappedDevice -- 当前设备
---@param data table<string,TriggerVariable> -- 映射后的变量code与变量采集值
---@return table<string,any> -- 返回参数,更新到最终的设备采集数据
function Trigger(device, data)
local result = {}
return result
end
Api = {
{
= "/test_api/<code>",
path = "GET",
method = test_api
func },
}
其中定义如下
9.1.2.1 Trigger 函数
映射到APP的应用,每轮数据采集后都会触发Trigger函数,将设备映射的变量传入
- 定义:
Trigger(device, data)
- 分类: 函数
- 参数:
device
:MappedDevice
当前的设备,这个设备data
:table<string,TriggerVariable>
映射后的变量code与变量采集值
- 返回:
table<string,any>
返回后的数据会直接更新到设备的采集结果里,只有返回值会修改采集结果,直接操作data不会
9.1.2.2 Api 表
Api表中定义对外暴露的http接口,是一个list嵌套的map
- 字段:
path
:string
请求路径,使用<>来设置path参数method
:string
HTTP请求方法func
:function
命中路由后触发的函数
- 返回:
table<string,any>
返回后的数据会直接更新到设备的采集结果里,只有返回值会修改采集结果,直接操作data不会 - 触发函数
入参
: requestHttpRequest
类型返回值
HttpResponse类型