本帖最后由 lixupengdel 于 2011-3-10 21:06 编辑
export.lua学习 打开Lock On\ Config\export的export.lua文 function LuaExportStart() -- Works once just before mission start.
-- Make initializations of your files or connections here. -- For example: -- 1) File --
--local file = io.open("./Temp/Export.log", "w") --if file then --io.output(file) end (为了对输入输出的更全面的控制,可以使用完全模式。完全模式的核心在于文件句 柄(file handle)。该结构类似于C 语言中的文件流(FILE* ),其呈现了一个打开的文件 以及当前存取位置。打开一个文件的函数是io.open。它模仿C 语言中的fopen 函数,同 样需要打开文件的文件名参数,打开模式的字符串参数。模式字符串可以是 "r"
(读模式),"w"
(写模式,对数据进行覆盖),或者是 "a" (附加模式)。并且字符 "b" 可附加在后面表示以二进制形式打开文件。正常情况下open 函数返回一个文件的句柄。如果发生错误,则返回nil)详看
Lua中文教程170页 首先在这里按上面的例子写段代码 (--是注释掉代码) 创建一个lockontest.txt文件 local file = io.open("./Temp/lockontest.txt", "w")
--创建lockontest.txt
if file then
io.output(file)
--打开文件
end
再找到LuaExportAfterNextFrame函数把下面的- -注释去掉 function LuaExportAfterNextFrame() -- Works just after every simulation frame. -- Call Lo*() functions to get data from Lock On here. -- For example:
local t = LoGetModelTime()
local name = LoGetPilotName()
local altBar = LoGetAltitudeAboveSeaLevel()
local altRad = LoGetAltitudeAboveGroundLevel()
local pitch, bank, yaw = LoGetADIPitchBankYaw()
local engine = LoGetEngineInfo()
local HSI
= LoGetControlPanel_HSI()
把-- 1) File下面的注释去掉 如下 -- Then send data to your file or to your receiving program: -- 1) File
io.write(string.format("t = %.2f, name = %s, altBar = %.2f, altRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f\n", t, name, altBar, altRad, 57.3*pitch, 57.3*bank, 57.3*yaw))
io.write(string.format("t = %.2f ,RPM left = %f
fuel_internal = %f \n",t,engine.RPM.left,engine.fuel_internal))
io.write(string.format("ADF = %f
RMI = %f\n ",57.3*HSI.ADF,57.3*HSI.RMI)) -- 2) Socket --
socket.try(c:send(string.format("t = %.2f, name = %s, altBar = %.2f, alrRad = %.2f, pitch = %.2f, bank = %.2f, yaw = %.2f\n", t, name, altRad, altBar, pitch, bank, yaw))) End 再到LuaExportStop()下把-- 1) File下的--
io.close()注释去掉 function LuaExportStop() -- Works once just after mission stop. -- Close files and/or connections here. -- For example: -- 1) File
io.close()
-- 2) Socket --
socket.try(c:send("quit")) -- to close the listener socket --
c:close() End 好了,现在运行游戏进入一个任务玩几秒后按s暂停回到桌面到 LOCKON\Temp\下打开lockontest.txt文件看看是不是可以看到数据啊,记得有个帖子上说把数据可以发送到单片机上然后再驱动其他仪表^_^ ,不知道能不能把多功能显示器的数据用TFT显示出来^_^. (此方法也适合DCS ) LUA相关资料 http://www.luaer.cn/ |