【发布时间】:2014-01-05 23:03:32
【问题描述】:
我有循环问题,Lua 中的表格
这是带有变量knx 的表(现在它是静态的)
regTable = {
{ RegEddr=3027, count=2, regType="float", knx="1/1/1"},
{ RegEddr=3029, count=2, regType="float", knx="1/1/2"},
{ RegEddr=3031, count=2, regType="float", knx="1/1/3"},
{ RegEddr=2999, count=2, regType="float", knx="1/1/4"},
{ RegEddr=3001, count=2, regType="float", knx="1/1/5"},
{ RegEddr=3003, count=2, regType="float", knx="1/1/6"},
{ RegEddr=3109, count=2, regType="float", knx="1/1/7"},
{ RegEddr=3083, count=2, regType="float", knx="1/1/8"},
{ RegEddr=3059, count=2, regType="float", knx="1/1/9"},
{ RegEddr=3203, count=4, regType="int64", knx="1/1/10"},
}
function readRegisters()
for idx, register in pairs(regTable) do
if register.regType=="int" then
valueInt = mb:readregisters(register.RegEddr)
grp.write(register.knx, valueInt)
elseif register.regType=="float" then
value1, value2 = mb:readregisters(register.RegEddr,register.count)
if value1 then
valueFloat = bit.lshift(value1, 16) + value2
valueFloat = lmcore.inttohex(valueFloat, 4)
valueFloat = knxdatatype.decode(valueFloat, dt.float32)
grp.write(register.knx, valueFloat)
end
elseif register.regType=="int64" then
valueInt1, valueInt2, valueInt3, valueInt4 = mb:readregisters(register.RegEddr,register.count)
if valueInt4 then
valueInt64 = valueInt4
log(valueInt64)
grp.write(register.knx, valueInt64)
end
end
end --end for
end --end function
从另一个脚本我调用函数readRegisters()
所以我有地址列表,但我不知道用户需要多少地址。如果是 10 或 100。这就是为什么拥有地址列表而不是 +1 步的动态列表不是最佳的原因
1/1/1
1/1/2
...
1/1/255
可以帮我如何创建动态添加地址变量knx到这个表吗?
【问题讨论】:
-
不明白这是什么意思:“如何创建动态添加地址变量knx`到这个表”