???
Математика на уровне МГУ

Страница 1 из 4 1234 КрайняяКрайняя
Показано с 1 по 25 из 77

Тема: LUA. Практика

  1. #1
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    LUA. Практика

    Всем доброго времени суток.
    Что-то тема про LUA заглохла.
    Решил я сделать себе небольшую приблуду, вроде бароспидографа (aka "черный ящик").
    Идея для начала такая выгружать в текстовый файл некоторые параметры, как-то: время, скорость, высоту и т.д. А потом открыть этот файл в Excel, построить графики и делать разбор полета (летаю себе на "чистый" пилотаж). Всяко легче получилось бы, чем после 40 мин. полета 30 минут после просматривать видео...
    Итак, открываю, как указано, файл export.lua
    Ну что, разобраться не сложно, на Си похоже Или на 1С-ный язык

    К тому же разработчики постарались, "рыбу" подготовили. Осталось только раскоментировать нужные строки.
    Файл, который у меня получился здесь: http://arrow.sbn.bz/LUA/export.txt
    Запускаю ЛО, летаю "программу", врезаюсь в землю
    Потирая руки - выхожу, ищу результаты, результатов - 0.
    Файла нет.
    Смотрю код, ага, создание файла не прописано.
    Создаю файл руками, итерация 2.
    Результат ? Пустой файл.

    Лезу в файл Error.txt, кстати вот он: http://arrow.sbn.bz/LUA/Error.txt
    Смотрю и замечаю строчку:
    LuaExport::Lua data export disabled

    Внимание, вопрос: что надо сделать, чтобы ОНО было enabled ???

    С уважением,
    Федин "Arrow" Юрий

  2. #2
    вирпрог Аватар для Dmut
    Регистрация
    14.07.2003
    Адрес
    Минск
    Возраст
    46
    Сообщений
    3,607

    Ответ: LUA. Практика

    приветствую
    вероятнее всего нужно убрать строки "--[[" и "--]]" перед и после функции LuaExportStart(). иначе это комментарий.
    хорошее дело делаешь, пора рабираться с этим экпортом данным. я вот тоже займусь вплотную когда с работой немного разгребусь.

  3. #3
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Хм, может быть...
    Хотя странно - остальные функции такими штуками не обрамлены.
    Кстати, может быть эти "[[" и "]]" выделяют главную функцию ? Хотя на void main() она не похожа...

    К сожалению, теперь проверить смогу только на выходных...
    Если у кого будет время и желание - может проверите ???

  4. #4
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Ха, скорее всего так и есть
    Увидел еще одну строчку
    -- Uncomment this function to enable data export!

  5. #5
    вирпрог Аватар для Dmut
    Регистрация
    14.07.2003
    Адрес
    Минск
    Возраст
    46
    Сообщений
    3,607

    Ответ: LUA. Практика

    кстати, экспорт в файл лучше делать не при каждом LuaExportAfterNextFrame(), а скажем посекундно, а если если лень разбираться с программированием времени в LUA, то хотябы каждые 50 фреймов. иначе будет просто жутко тормозить.

    ps: --[[ и --]] означают составной комментарий, то есть многострочный. их нужно убрать.
    Крайний раз редактировалось Dmut; 30.09.2004 в 08:48.

  6. #6
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Во, нашелся человек знакомый с синтаксисом LUA !!!

    А вывод в файл - это уже каждый для себя самостоятельно напишет, что хочет.
    Самое главное для меня - это получить первые результаты (увидеть, что это вообще работает), а дальше пойдет проще
    Просто для пилотажа, а особенно группового , ИМХО важны эти миллисекунды.

    Хотя внешнюю приблуду и писать не надо - Excel рулит

  7. #7
    Разработчик
    Регистрация
    17.11.2000
    Адрес
    Москва
    Сообщений
    531

    Ответ: LUA. Практика

    Цитата Сообщение от Dmut
    кстати, экспорт в файл лучше делать не при каждом LuaExportAfterNextFrame(), а скажем посекундно, а если если лень разбираться с программированием времени в LUA, то хотябы каждые 50 фреймов. иначе будет просто жутко тормозить.
    Достаточно прочитать комментарии внутри функции LuaExportActivityNextEvent(t). Эта функция специально написана для того, чтобы можно было из скрипта планировать моменты модельного времени, когда она вызывается.
    Валерий Блажнов
    Eagle Dynamics

  8. #8
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Спасибо, Валерий.
    До этого мы просто еще не добрались...

    А по теме топика - мы сделали правильный вывод ?

  9. #9
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    В процессе раздумывания о точках применимости нашего "бароспидографа" возник еще один вопрос.
    А реально выводить в файл координаты самолета относительно земной поверхности (или безотносительно к чему-либо) в каких-либо координатах?
    Имеется в виду, есть ли такие параметры, готовые к выводу ?
    Или придется считать эти параметры как функции времени, скорости, высоты и углов ?

    Конкретное приложение - как в MSFS. Проверить правильность выполнения "коробочки", полета по маршруту, захода по глиссаде, набора высоты, идеальности петли и т.д. Ну ладно, глиссаду сейчас можно посмотреть от высоты. А остальное ?

    2 ALL - а какие еще способы применения такого устройства (регистратор полетных параметров) вы видите ?
    Крайний раз редактировалось Arrow; 30.09.2004 в 11:41.

  10. #10
    Разработчик
    Регистрация
    17.11.2000
    Адрес
    Москва
    Сообщений
    531

    Ответ: LUA. Практика

    Цитата Сообщение от Arrow
    А по теме топика - мы сделали правильный вывод ?
    О раскомментировании функции? Правильный.
    Валерий Блажнов
    Eagle Dynamics

  11. #11
    Разработчик
    Регистрация
    17.11.2000
    Адрес
    Москва
    Сообщений
    531

    Ответ: LUA. Практика

    Цитата Сообщение от Arrow
    А реально выводить в файл координаты самолета относительно земной поверхности (или безотносительно к чему-либо) в каких-либо координатах?
    Имеется в виду, есть ли такие параметры, готовые к выводу ?
    Или придется считать эти параметры как функции времени, скорости, высоты и углов ?
    В эддоне уже есть такая возможность.
    Валерий Блажнов
    Eagle Dynamics

  12. #12
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Итак, всем помогавшим спасибо.
    Первый блин - вышел.
    Кому интересно - прикрепляю свой файл export.lua
    Для использования - заменить существующий в папке LockOn\Config\Export (сделав резервную копию )
    В папке LockOn\Temp создать пустой файл Export.log
    После вылета в нем появятся данные разделенные точкой с запятой. Очень удобно для загрузки в Excel.
    Также привожу результаты обработки в Excel. На картинках графики угла атаки и перегрузки, и высоты (от уровня моря и от земли).

    Что особенно понравилось.
    Можно собирать информацию по трекам - в том числе и по сетевым.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	alt.JPG 
Просмотров:	81 
Размер:	46.7 Кб 
ID:	30563   Нажмите на изображение для увеличения. 

Название:	AoA&N.JPG 
Просмотров:	94 
Размер:	56.2 Кб 
ID:	30564  
    Вложения Вложения

  13. #13
    вирпрог Аватар для Dmut
    Регистрация
    14.07.2003
    Адрес
    Минск
    Возраст
    46
    Сообщений
    3,607

    Ответ: LUA. Практика

    молодец Arrow, первые шаги всегда важны.
    добавлю лишь, что пустой файл самому создавать не обязательно.
    функция io.open("./Temp/Export.log", "w") его создаст сама.

  14. #14
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Будем писать внешнюю прогу для анализа параметров ?
    Помнится раньше была такая для MSFS 98

    Из личного - в Excel - масштабировать и рассматривать конкретные куски графика неудобно ...

  15. #15
    вирпрог Аватар для Dmut
    Регистрация
    14.07.2003
    Адрес
    Минск
    Возраст
    46
    Сообщений
    3,607

    Ответ: LUA. Практика

    нет, мне построение графиков не очень интересно, я наверное займусь передачей данных по сетке, что бы в режиме реального времени отображать инфу на рядом стоящем ноуте.

  16. #16
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Вопросы нарастают

    Вот пример посадки с небольшим "козлом". График вертикальной скорости.
    Но в чем же она измеряется ???
    Предположения ?
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	VS.JPG 
Просмотров:	83 
Размер:	45.3 Кб 
ID:	30570  

  17. #17
    Прораб пришелец
    Регистрация
    24.11.2000
    Адрес
    EETN
    Сообщений
    1,657

    Ответ: LUA. Практика

    мм/с

  18. #18
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Цитата Сообщение от chp
    мм/с
    Хех, прикольно...

    Это из "тайного знания", или догадка ?
    В таком случае - я не совсем уверен, что остальные параметры в общепризнаных единицах выводятся

  19. #19
    Механик
    Регистрация
    23.11.2000
    Адрес
    Санкт-Петербург
    Возраст
    54
    Сообщений
    457

    Ответ: LUA. Практика

    Разработчиками, вроде как, оговорена размерность получаемых данных.
    LoGetModelTime() -- returns current model time (args - 0, results - 1 (sec))
    LoGetMissionStartTime() -- returns mission start time (args - 0, results - 1 (sec))
    LoGetPilotName() -- (args - 0, results - 1 (text string))
    LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (knots))
    LoGetTrueAirSpeed() -- (args - 0, results - 1 (knots))
    LoGetAltitudeAboveSeaLevel() -- (args - 0, results - 1 (feet))
    LoGetAltitudeAboveGroundLevel() -- (args - 0, results - 1 (feet))
    LoGetAngleOfAttack() -- (args - 0, results - 1 (degrees))
    LoGetAccelerationUnits() -- (args - 0, results - 1 (G))
    LoGetVerticalVelocity() -- (args - 0, results - 1(feet per sec))
    LoGetADIPitchBankYaw() -- (args - 0, results - 3 (degrees))

    Только вот оценить так это, или нет не могу - в export.log пишется черти что...
    Причина, вероятно, в некорректной загрузке одной из библеотек: в errror.log такие строки:
    World::LoadPlugins: Loaded plugin module Aerodyne.dll
    World::LoadPlugins: Can't load plugin module Staff.dll, куча строк вида
    LuaExport::LuaExportAfterNextFrame: ./Config/Export/Export.lua:63: bad argument #3 to `format' (string expected, got nil)
    Как с этим бороться не знаю.
    А начинание твое, Arrow, оченно нужное!

  20. #20
    Не КУРСАНТ Аватар для Arrow
    Регистрация
    05.04.2004
    Адрес
    Russian Federation
    Возраст
    48
    Сообщений
    570

    Ответ: LUA. Практика

    Спасибо, разработчикам и Кристоферу - про размерности-то я и не заметил

    Кристофер - выкладывай свой файл, что-нибудь посоветуем.
    Или возьми мой

    Но это точно не из-за ДЛЛок, у меня такое же пишет в ошибки

  21. #21
    Разработчик
    Регистрация
    17.11.2000
    Адрес
    Москва
    Сообщений
    531

    Ответ: LUA. Практика

    Цитата Сообщение от Kristofer
    Разработчиками, вроде как, оговорена размерность получаемых данных.
    LoGetModelTime() -- returns current model time (args - 0, results - 1 (sec))
    LoGetMissionStartTime() -- returns mission start time (args - 0, results - 1 (sec))
    LoGetPilotName() -- (args - 0, results - 1 (text string))
    LoGetIndicatedAirSpeed() -- (args - 0, results - 1 (knots))
    LoGetTrueAirSpeed() -- (args - 0, results - 1 (knots))
    LoGetAltitudeAboveSeaLevel() -- (args - 0, results - 1 (feet))
    LoGetAltitudeAboveGroundLevel() -- (args - 0, results - 1 (feet))
    LoGetAngleOfAttack() -- (args - 0, results - 1 (degrees))
    LoGetAccelerationUnits() -- (args - 0, results - 1 (G))
    LoGetVerticalVelocity() -- (args - 0, results - 1(feet per sec))
    LoGetADIPitchBankYaw() -- (args - 0, results - 3 (degrees))

    Только вот оценить так это, или нет не могу - в export.log пишется черти что...
    Причина, вероятно, в некорректной загрузке одной из библеотек: в errror.log такие строки:
    World::LoadPlugins: Loaded plugin module Aerodyne.dll
    World::LoadPlugins: Can't load plugin module Staff.dll, куча строк вида
    LuaExport::LuaExportAfterNextFrame: ./Config/Export/Export.lua:63: bad argument #3 to `format' (string expected, got nil)
    Как с этим бороться не знаю.
    Первые два сообщения не имеют отношения к экспорту данных, поэтому их можно проигнорировать. А вот последнее, как я предполагаю, сообщает, что в 63-й строке в 3-й параметр функции format почему-то оказалcя пустым (nil). Либо вы его не получили вообще, либо его вычисление сработало криво. Вставьте в скрипт проверку значений параметров на nil.
    Крайний раз редактировалось Valery; 05.10.2004 в 14:42.
    Валерий Блажнов
    Eagle Dynamics

  22. #22
    Механик
    Регистрация
    21.07.2003
    Адрес
    Russian Federation
    Возраст
    51
    Сообщений
    422

    Ответ: LUA. Практика

    Валерий, а можно выводить значения параметров полёта в других единицах, например, в SI? Пересчитать, конечно, не проблема, но было б приятно
    To be = not to be: is that an equation ?

  23. #23
    Механик
    Регистрация
    23.11.2000
    Адрес
    Санкт-Петербург
    Возраст
    54
    Сообщений
    457

    Ответ: LUA. Практика

    Или возьми мой
    Спасиб я это еще после твоего первого поста здесь так и сделал
    Сейчас, поскипав все неиспользуемое, получил такой вот export.lua:
    ===============================
    function LuaExportStart()
    local file = io.open("./Temp/Export.log", "w")
    if file then
    io.output(file)
    io.write(string.format("t; Hbar; Vind; Vvert;\n"))
    end
    end

    function LuaExportAfterNextFrame()
    local t = LoGetModelTime()
    local Hbar = LoGetAltitudeAboveSeaLevel()
    local Vind = LoGetIndicatedAirSpeed()
    local Vvert = LoGetVerticalVelocity()
    io.write(string.format("%.2f; %.2f; %.2f; %.2f;\n", t, Hbar, Vind, Vvert))
    end

    function LuaExportStop()
    io.close()
    end

    function LuaExportActivityNextEvent(t)
    local tNext = t
    return tNext
    end
    ===============================
    Проверяю: взлет, полубочка, пике в полосу (а глаза на указателе скорости-запоминаю последнее показание прибора), лезу в лог, пересчитываю крайний результат Vind [kts]>[км/ч]... Хе-хе, СХОДИТСЯ!!! Вывод - косяк видимо какойто у меня сидел в export.lua до его зачистки.
    Однако не все так шоколадно - пересчет Vvert [feet/s]>[м/с] дал 1001,76м/c при показаниях вариометра ~50м/с. Непонятно.
    Ко всему прочему Еrror.log опять ругается на 16 строчку:
    ...
    LuaExport::LuaExportAfterNextFrame: ./Config/Export/Export.lua:16: bad argument #3 to `format' (number expected, got nil)
    ...
    а на 16-й строке: io.write(string.format("%.2f; %.2f; %.2f; %.2f;\n", t, Hbar, Vind, Vvert)).
    Сообщение об ошибке повторяется 18 раз...
    Чтобы не быть голословным export.log прицепил.
    Вставьте в скрипт проверку значений параметров на nil.
    Спасибо, Валерий, попробую.
    PS Кстати, Staff.dll в Локоновской папке просто нет.
    добавлено
    по совету Валерия скорректировал скрипт:
    ...
    local Vind = LoGetIndicatedAirSpeed()
    local Vvert = LoGetVerticalVelocity()
    if Vind == nil then return end
    io.write(string.format("%.2f; %.2f; %.2f; %.2f;\n", t, Hbar, Vind, Vvert))
    ...
    Vind, потому как у меня на него лог ругался и порадовался исчезновению сообщений об ошибке
    Вложения Вложения
    • Тип файла: txt Export.txt (17.2 Кб, Просмотров: 34)
    Крайний раз редактировалось Kristofer; 06.10.2004 в 10:51.

  24. #24
    Механик
    Регистрация
    23.11.2000
    Адрес
    Санкт-Петербург
    Возраст
    54
    Сообщений
    457

    Ответ: LUA. Практика. Вертикальная скорость

    Валерий, подскажите пожалуйста, в каких единицах измерения выдает свои результаты функция LoGetVerticalVelocity(). Меня терзают смутные сомнения (с), что всетаки не в feet per sec - повторив несколько раз упрожнение: "`Втыкание` в землю с заданной Vверт=50м/с" (по прибору в кабине) всякий раз получал в export.log крайнее значение Vверт~1000м/с. Судя по графику Vверт при посадке с "козлом", выложенному Arrow, это непонятка не у меня одного.
    Заранее спасибо

  25. #25
    Разработчик
    Регистрация
    17.11.2000
    Адрес
    Москва
    Сообщений
    531

    Ответ: LUA. Практика. Вертикальная скорость

    Цитата Сообщение от Kristofer
    Валерий, подскажите пожалуйста, в каких единицах измерения выдает свои результаты функция LoGetVerticalVelocity(). Меня терзают смутные сомнения (с), что всетаки не в feet per sec - повторив несколько раз упрожнение: "`Втыкание` в землю с заданной Vверт=50м/с" (по прибору в кабине) всякий раз получал в export.log крайнее значение Vверт~1000м/с. Судя по графику Vверт при посадке с "козлом", выложенному Arrow, это непонятка не у меня одного.
    Заранее спасибо
    К сожалению, в этих функциях действительно имеются баги, они найдены тестерами и будут исправлены в версии 1.1. Расхождения, вполне возможно, связаны с тем, что некоторые функции в первом варианте скрипта были жестко привязаны к F-15, а для других самолетов даже не проверялись. Так что, слишком сильно не заморачивайтесь пока что, это был всего лишь экспериментальный скрипт для отработки в первом приближении самой технологии экспорта с конкретными пользователями-программистами, по заказам которых мы эту фитчу и предполагаем развивать в дальнейшем.
    Валерий Блажнов
    Eagle Dynamics

Страница 1 из 4 1234 КрайняяКрайняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •