适用于Modbus或者645上下行模板
我在使用lua写一个hook功能,需要实现函数
function(tm,td,ex) return tm end
第一个是上行数据处理函数,其中tm是table格式输入如{"a":10, "b":11},td是数组格式输入如[{"c":3,"v":{"a":0},"i":1},{"c":3,"v":{"b":0},"i":2}],ex是可以自由定义的用户参数table数据,如{"imei":"1224234"},一般情况会使用tm或者td,结合ex, 生成新的table返回;
现在我输入的tm是table
{"temp":25.5,"humi":76.8}, ex是{"csq":31,"vbat":11.988},
需要的结果json格式是如下,
{
"version": "1.0",
"id": "0",
"params": {
"temperature": {
"value": 22.5,
"unit": "°C",
},
"humidity": {
"value": 45,
"unit": "%",
},
"signalStrength": {
"value": 31,
"unit": "RSRP",
},
"voltage": {
"value": 12.6,
"unit": "V",
}
}
},但是实际需要返回table,函数内容要怎么实现
function(tm, td, ex)
local result = {}
local params = {}
-- 将 tm 的键值对添加到 params 中
for key, value in pairs(tm) do
params[key] = value
end
-- 将 ex 中的 imei 添加到 result 中
result["imei"] = ex["imei"]
-- 将 params 添加到 result 中
result["params"] = params
-- 将 result 添加到一个数组中
local output = {result}
-- 返回数组
return output
end
请按照这个格式,生成结果
function(tm, td, ex)
local result = {
version = "1.0",
id = "0",
params = {
temperature = {
value = tm.temp, -- 从 tm 中获取温度值
unit = "°C"
},
humidity = {
value = tm.humi, -- 从 tm 中获取湿度值
unit = "%"
},
signalStrength = {
value = ex.csq, -- 从 ex 中获取信号强度
unit = "RSRP"
},
voltage = {
value = ex.vbat, -- 从 ex 中获取电压值
unit = "V"
}
}
}
return result -- 返回生成的 table
end
需要注意,最后填入的模板不要有函数名称,必须输入function(tm,td,ex)