我正在使用具有一些 Lua 实现并在 BACnet 中通信的第三方设备。该文档非常简陋,没有为任何更高级的编程想法提供任何帮助。很简单,“这就是你设置变量的方式......”。所以,我只是想弄清楚,希望大家能提供帮助。
我需要将一长串变量设置为某些值。我有一个用户数据“ME”,有一堆名为 MVXX 的变量(例如 - MV21、MV98、MV56 等)。
(这是 BACnet 的各种背景。) BACnet 中的变量都有 17 个“优先级”,即每个 BACnet 变量实际上是一个由 17 个值组成的列表,优先级 16 是默认值。因此,通常情况下,如果我说ME.MV12 = 23
MV12 的优先级 16 设置为所需的值 23。
但是,我需要将优先级设置为 17。我可以在提供的 Lua 实现中通过说ME.MV12_PV[17] = 23
. 我可以通过索引那个 PV 来设置我想要的任何优先级。(推论——什么是 PV?什么是下划线?我如何获得这些对象?或者它们只是从 Lua 解释为后端 C 中的某个函数?)
话虽如此,我需要使该变量名动态化,以便我可以根据其他一些代码设置我需要设置的任何值。我已经做了几次尝试。
这告诉我 object( MV12_PV[17]
) 不存在:
x = 12
ME["MV" .. x .. "_PV[17]"] = 23
但这很好用,将优先级 16 设置为 23:
x = 12
ME["MV" .. x] = 23
我试图尝试某种我认为称为评估或评估的方法。但是,这只是打印出function
一些随机的 8 位数字:
x = 12
test = assert(loadstring("MV" .. x .. "_PV[17] = 23"))
print(test)
有什么帮助吗?抱歉,如果我不清楚 - tbh,我远远落后于 8 球,我几乎抓住了稻草。