在 Lua 中获取动态数据

我使用 NVIDIA UI Composer Studio 构建了一个仪表板。为了控制动画,它使用 Lua 脚本语言。我对 Lua 还很陌生,我的问题如下:

我在 Lua 中有以下代码序列,用于控制我的速度表:

self.vehicleSpeedData = {} -- 许多值都放在这里

function self.speedSim( inFrame, theController )

local timeInSec, dummy
timeInSec, dummy = getElapsedTime()
-- data based on 60fps
actualFrameNumber = math.floor(timeInSec * 60)
local theSample = ((actualFrameNumber-1) % #self.vehicleSpeedData) + 1
theController.value = self.vehicleSpeedData[theSample] *0.06

在这个示例中的数组为空。所以你能看到,这个函数读取了数组的值。

但是我需要的是,我可以从外部资源(例如 RS232 或 CAN 模拟)获取这些数据......我想尝试的是,我是否可以将例如 C#中的数据放到Lua脚本中。

很难解释我想要什么。我的想法是,这个 Lua 脚本上面监听和读取数据,我可以在 C# 中动态读取我的数据来源。

非常感谢您的帮助。这项工作是为了我本科学位,我在这个问题上卡了很长时间,我的想法快用完了。

点赞
用户513763
用户513763

这一切都取决于 Nvidia 的东西向用户公开了哪些内容(以 API 和 Lua 基础库为例)。

假设它可用,您可以使用 io.read 从另一个源中读取数据文件(比方说 csv),然后将其自己解析成表格。如果您可以预处理文件以具有有效的 Lua 语法(例如添加 return {,将值用逗号分隔,并以 } 结尾),那么您可以使用 loadstring 直接加载字符串。

如果他们允许您,您可以使用外部库来与 RS232、Excel、套接字等进行交互。

PS:它是 Lua 而不是 LUA(不是首字母缩写,而是葡萄牙语中的“Moon”名词;))

编辑:示例 mkfifo

因此,在 Linux 中,它的操作如下:用 mkfifo fff 创建一个 FIFO,并输入一些东西 echo ' '> fff 以防止 Lua 阻塞。

在 Lua 中:

fh=io.open('fff','rb')
while true do
    res = fh:read()
    if res then
        print(res)
    end
end

无论将任何内容输送到 fff(例如 cat 10 > fff),都将在 Lua 中输出。这样,您就可以读取任何可用的值并在每次运行函数时使用它们。

另一个选项是使用标准输入,但我不确定这个“composer”能否让您这样做。

2013-01-31 11:57:08