(inSky)

 找回密码
 立即加入

QQ登录

只需一步,快速开始

查看: 3765|回复: 7

[技术交流] export.lua学习

[复制链接]
发表于 2011-3-9 20:41:36 | 显示全部楼层 |阅读模式
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/
  


  
  
  


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即加入

x
回复

使用道具 举报

发表于 2011-3-10 08:43:18 | 显示全部楼层
大学时我的C语言差点挂科了,现在对单片机忘的差不多了 [s:30]
回复 支持 反对

使用道具 举报

发表于 2011-3-10 09:56:06 | 显示全部楼层
这个一定要顶,吃透代码后就可以用液晶显示器做仪表舱了。[s:19]
回复 支持 反对

使用道具 举报

发表于 2011-3-10 10:00:03 | 显示全部楼层
这个一定要顶, 福籁不是这方面的达人, 不过福籁慧眼识英雄。

一定要顶!
回复 支持 反对

使用道具 举报

发表于 2011-3-10 21:03:35 | 显示全部楼层
我专业就是学这一块的...不过单片机部分还没学
先收藏,学了再看[s:19]
回复 支持 反对

使用道具 举报

发表于 2011-4-3 18:39:36 | 显示全部楼层
过于专业,推广普及通俗点。
增长见识
感谢了
回复 支持 反对

使用道具 举报

发表于 2011-4-4 06:47:00 | 显示全部楼层
楼主,我只想说,你知道的太多了
回复 支持 反对

使用道具 举报

发表于 2011-4-4 11:23:00 | 显示全部楼层
[s:17]  SOCKET方式感觉更舒服,实时性更好。毕竟文件操作的话可能会有延迟写入的问题,除非你不停的flush。。。那样的话硬盘读写次数又太多。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

小黑屋|手机版|Archiver|(inSky)

GMT+8, 2024-5-10 19:02 , Processed in 0.023982 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表