Jump to content

Вопрос по cчитыванию данных.


ander

Recommended Posts

Уважамемые камрады.Выношу этот вопрос на обсуждение в этот раздел,поскольку не знаю где его задать.
Необходим пинок в нужном мне направлении.Я новенький и поэтому в полных непонятках.Вопрос очень простой:

Откуда можно считывать данные с этой панели и как до них добраться,мне нужен тангаж(картинка)

Долго лазил по форумам,нашел тему которую открыла девчонка(Xenia)там что то похожее:

https://forum.dcs.world/topic/118288-dcs-bios-discussion-thread/page/56/

Ей дали пинка в сторону github...

Камрады,а можно как то немного поконкретнее,что ли. Если кто то располагает хоть какой то информацией,
поделитесь пожалуйста.Буду по гроб жизни признателен.Замаялся искать...

                                                                                          Спасибо за внимание.С уважением.Аnder.
 

тагаж.png

  • Like 1
Link to comment
Share on other sites

9 часов назад, ander сказал:

Уважамемые камрады.Выношу этот вопрос на обсуждение в этот раздел,поскольку не знаю где его задать.
Необходим пинок в нужном мне направлении.Я новенький и поэтому в полных непонятках.Вопрос очень простой:

Откуда можно считывать данные с этой панели и как до них добраться,мне нужен тангаж(картинка)

Долго лазил по форумам,нашел тему которую открыла девчонка(Xenia)там что то похожее:

https://forum.dcs.world/topic/118288-dcs-bios-discussion-thread/page/56/

Ей дали пинка в сторону github...

Камрады,а можно как то немного поконкретнее,что ли. Если кто то располагает хоть какой то информацией,
поделитесь пожалуйста.Буду по гроб жизни признателен.Замаялся искать...

                                                                                          Спасибо за внимание.С уважением.Аnder.
 

тагаж.png

Верной дорогой идёте, товарищ. В той теме, в крайнем сообщении, ссылка на гитхаб с нужным вам инструментом. Users guide там тоже присутствует.

  • Like 1

Серверы КВАС. Железо: I9-9900k, 32GB DDR4, SSD, RTX 2080super

Link to comment
Share on other sites

1 час назад, ctajiuh58 сказал:

Верной дорогой идёте, товарищ. В той теме, в крайнем сообщении, ссылка на гитхаб с нужным вам инструментом. Users guide там тоже присутствует.

Не могу поверить.Неужели поперло...Всю жизнь в...этом самом,а тут такая лафа...А Вы случайно не ошиблись,дорогой товарищ?
Типа,если пройти по этой ссылке у меня реально есть шанс найти данные которые отбражаются eсли клацнуть,скажем F2?
Эти самые?Что на картинке? Или это лишь предположение?

Извини за дубль,камрад,но не могу поверить а свое счастье,дело в том,что я там его искал,и наверно проишачил...Не всех же господь вразумил...(я о себе)

Попробую еще раз...

F2.png

Link to comment
Share on other sites

53 минуты назад, ander сказал:

Не могу поверить.Неужели поперло...Всю жизнь в...этом самом,а тут такая лафа...А Вы случайно не ошиблись,дорогой товарищ?
Типа,если пройти по этой ссылке у меня реально есть шанс найти данные которые отбражаются eсли клацнуть,скажем F2?
Эти самые?Что на картинке? Или это лишь предположение?

Извини за дубль,камрад,но не могу поверить а свое счастье,дело в том,что я там его искал,и наверно проишачил...Не всех же господь вразумил...(я о себе)

Попробую еще раз...

F2.png

Посмотрите файл  ***/DCS World OpenBeta/Scripts/Export.lua.

Там есть, в том числе, функция LoGetADIPitchBankYaw().

А вообще ответ зависит от того зачем вам нужен тангаж.

  • Like 1

Верните короновирус в качестве главной проблемы, спать в маске буду, обещаю.

Скрытый текст

Hardware: AMD 5900x, 64Gb RAM@3200MHz, NVidia RTX3070 8Gb, Monitor 3440x1440(21:9), Samsung 980pro 1Tb NVMe SSD, VKB Gunfighter+MCGU, Virpil Throttle CM3, VKB T-Rudder, TrackIR.

 

Link to comment
Share on other sites

38 минут назад, Blackfyre сказал:

А вообще ответ зависит от того зачем вам нужен тангаж.

От камрадов у меня секретов нет. Мечтаю собрать то,что на картинке.Производственные мощности есть,мозги вроде тоже,но не в том объеме как хотелось бы...

Проблема в том,чтобы рскрутить кокпит на 360 градусов по тангажу...А здесь вылазят огранчения.Скажем у TF-51 они составляют 57 градусов(радиан)Поэтому

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

Понимаю,что изложил все слишком сжато,но коли есть желание участвовать в обсуждении,отвечу на все вопросы без исключения...Только это ближе к вечеру,

сейчас на работу бежать надобно...

 

Fly motion.png

Link to comment
Share on other sites

4 часа назад, Blackfyre сказал:

Посмотрите файл  ***/DCS World OpenBeta/Scripts/Export.lua.

Там есть, в том числе, функция LoGetADIPitchBankYaw().

А вообще ответ зависит от того зачем вам нужен тангаж.

Несмотря на горячий оптимизм по поводу файла Export.lua 🙂, с точки зрения выполняемых им функций, он - ... пустой! А конкретно содержит одни лишь комментарии, позволяющие ознакомиться с именами тех функций, которые способен экспортировать симулятор "DCS World". Т.е. никаких иных функций, кроме чисто ознакомительных, этот файл не несет. Тому свидетельством является как то, что к нему нет никаких обращений из самолетных модулей, так и то, что он может быть безболезненно удален или переименован без малейшего ущерба для работы DCS-BIOS.

Что касается функции LoGetADIPitchBankYaw(), то она действительно присутствует в списке экспортируемых функций, с которым нас знакомят комментарии внутри Export.lua. Однако вот парадокс - функция LoGetADIPitchBankYaw() негде не используется (!), кроме как в модуле "FC3.lua" для бесплатного самолета Su-25T. Тогда как все остальные самолеты DCS-BIOS отслеживает без обращения к этой функции (для пущей убедительности "файл FC3.lua" может быть удален, чтобы упоминания функции LoGetADIPitchBankYaw() нигде больше не было). Выходит, что DCS-BIOS замечательно обходится без этой функции, а достает данные по тангажу, крену и всему прочему, каким-то другим путем.

Впрочем, даже у самолета Su-25T, чей модуль поддержки содержит вызов функции LoGetADIPitchBankYaw(), на последнюю есть нарекания. Например, этот самолет способен выполнить бочку, когда крен на табло (фото которого приведено было ander'ом) последовательно проходит все 360° (углы свыше 180° считает отрицательными). Тогда как функция LoGetADIPitchBankYaw() выдает крен лишь в пределах радиана в ту и другую сторону (от -57° до +57°), упираясь в крайние значения шкалы. Оправданием тому могут являться недостатки прибора ADI у этого самолета, имеющего ограниченный диапазон индикации, но тогда вопрос выливается в форму, ранее озвученную ander'ом, - как получить данные о крене и тангаже из табло, которое всегда отображает их правильно, даже за пределами шкалы прибора ADI.

Что касается github'а, куда меня послали 🙂 с предыдущим вопросом, то там я обнаружила целых два "конкурирующих" друг с другом проекта:
https://github.com/dcs-bios/dcs-bios/ (этот постарше)
https://github.com/DCSFlightpanels/ (этот моложе)
Сама же до сих пор пользовалась первым из них - так исторически сложилось, поскольку в названии первого есть слово "dcs-bios" - google-поиск нашел его первым. Тем не менее, второй проект я тоже смотрела и с первым сравнивала, но каких-то кардинальных изменений не обнаружила - там и там функция LoGetADIPitchBankYaw() используется только (!) для самолета Su-25T (и его группы "FLAMING CLIFFS").

Теперь удовлетворю любопытство относительно моих целей 🙂. Дело в том, что у меня на компьютере есть "Искусственный интеллект (ИИ)" собственного приготовления, который тоже хочет не только полетать (с этим и автопилот справится), но и поучаствовать в боях 🙂. Поэтому Arduino мне без надобности - у нее ни мозгов, ни скорости не хватит, чтобы стать ИИ, когда многоядерный десктоп едва с этой задачей справляется (при лимите времени). Поэтому я пока соединила два COM-порта драйвером (виртуальный нуль-модем) и читаю через второй COM-порт тот поток данных, который посылает DCS-BIOS Ардуине. Отсюда и задача тот поток расшифровать.

Между тем расшифровка потока оказалась совсем простым делом, но вот полученной информацией я сильно недовольна. А недовольна, прежде всего, тем, что в потоке вижу лишь выборочные данные из приборной панели, не имея возможности получить данные из табло. Т.е. и тут крен и тангаж получаю с углом, ограниченным в 1 радиан.

Общую картину я пока представляю так: DCS-BIOS хакает (или получает легально) данные у симулятора "DCS World", а затем рассовывает их по разным адресам (в зависимости от типа самолета и особенностей его приборного оснащения), а затем периодически сбрасывает эту информацию в COM-порт (адрес-длина-блок данных). Тогда как Ардуина (а точнее ее библиотека) со своей стороны "фильтрует" этот поток, вызывая местные функции, связанные с теми адресами, которые ей знакомы. Отсюда возникает та трудность, что у каждого самолета эти функции называются различно, и нигде не видно разъяснения, к чему эти функции относятся. Например YAW есть у самолета Su-25T, тогда как у TF-51D этот параметр нигде не упоминается. Или, скажем, у самолета F-16C есть функция "YAW TRIM Knob", но, судя по названию, это кнопка, а не измерительный прибор. И таких функций с витиеватыми названиями, неподдающихся расшифровке, там масса. Однако на сегодняшний день наиболее актуальным для меня является получение данных по тангажу, чтобы мертвую петлю можно было контролировать на всех ее этапах, а не только в пределах одного радиана.


Edited by Xenia
  • Like 4
Link to comment
Share on other sites

Непонятны претензии к комплектному export.lua. Это как кусок документации, не более того.

Если не нужна Ардуина, зачем работать через COM-порт? DCS-BIOS'ный export.lua работает по TCP/IP.

А эту штуку - 

можно использовать как пример работы с Локоновскими функциями.

То, что DCS-BIOS предоставляет работу только с приборными панелями, и даже не с РУС'ом и РУД'ом, не говоря о  других вещах ... ну, вот что у нас, то у нас и есть, другого нет и, скорее всего, не будет. А если что-то сделают, то не для нас и не по нашим просьбам.

 

  • Like 2
Link to comment
Share on other sites

1 час назад, vvm13 сказал:

Если не нужна Ардуина, зачем работать через COM-порт? DCS-BIOS'ный export.lua работает по TCP/IP.

Не вижу никакого преимущества TCP/IP над COM-портом, когда игра, DCS-BIOS и программа-получатель информации находятся на одном и том же компьютере. Какой смысл по сети друг дружке депеши слать? Тогда как COM-порт - наиболее удобное средство связи с DCS-BIOS внутри одного компьютера, тем более что альтернативы ему не видно.

Однако сама проблема не в том, что  связь через COM-порт плоха, а через TCP/IP она станет лучше. Какой интерфейс связи ни возьми, хоть WiFi, BlueTooth или  радиомодуль, но если передатчик (он же источник информации) передает данные о тангаже лишь в пределах одного радиана, но это средствами связи исправить нельзя.

 

1 час назад, vvm13 сказал:

А эту штуку - можно использовать как пример работы с Локоновскими функциями.

Спасибо за ссылку - буду смотреть, что это за функции такие 🙂 .


Edited by Xenia
  • Like 1
Link to comment
Share on other sites

DCS-BIOS так или иначе работает с TCP/IP. Когда работает с Ардуиной, другая программа затем принимает эти пакеты и отправляет на COM-порт. Если Ардуина не нужна, то это промежуточное звено - лишнее. (По крайней мере, так было до недавних пор. Последние несколько лет я за ним не следил). Кроме того, так проще перенаправить на ноутбук, планшет, raspberry pi...

Вот ещё Икарус "на порыться":

Очевидно, там тоже используется свой вариант export.lua.

И Helios неподалёку - https://github.com/BlueFinBima/Helios

Хотя, по идее, надо лезть те в lua, что идут в DCS, и рыться в них. Но это занятие не для моих нервов.

 

  • Like 1
Link to comment
Share on other sites

После пространного поста Хenia и добавить особо нечего...Сходные проблемы и у меня.Замечу только,что очень радует появление в наших рядах леди - вирпила. 

Хenia,на прикрепленной фотке не Вы случайно? (извините за шутку)

 

х.png

Link to comment
Share on other sites

1 час назад, vvm13 сказал:

И Helios неподалёку - https://github.com/BlueFinBima/Helios

Да, Helios это круто!

 

1 час назад, vvm13 сказал:

Хотя, по идее, надо лезть те в lua, что идут в DCS, и рыться в них. Но это занятие не для моих нервов.

А у меня наоборот - на самолете летать не хватает нервов, а рыться в программном коде люблю 🙂.

 

2 минуты назад, ander сказал:

Хenia,на прикрепленной фотке не Вы случайно? (извините за шутку)

Не похожа - у меня нет такой бородавки на левой щеке 🙂.


Edited by Xenia
  • Like 1
Link to comment
Share on other sites

2 минуты назад, Xenia сказал:

Не похожа - у меня нет такой бородавки на левой щеке

Приношу свои извинения за ошибочное предположение...🥴

Link to comment
Share on other sites

16 minutes ago, Xenia said:

А у меня наоборот - на самолете летать не хватает нервов, а рыться в программном коде люблю

На странном языке, с диким форматированием/структурированием и без отладчика???

 

  • Like 1
Link to comment
Share on other sites

3 часа назад, Xenia сказал:

Несмотря на горячий оптимизм по поводу файла Export.lua 🙂, с точки зрения выполняемых им функций, он - ... пустой! А конкретно содержит одни лишь комментарии, позволяющие ознакомиться с именами тех функций, которые способен экспортировать симулятор "DCS World". Т.е. никаких иных функций, кроме чисто ознакомительных, этот файл не несет. Тому свидетельством является как то, что к нему нет никаких обращений из самолетных модулей, так и то, что он может быть безболезненно удален или переименован без малейшего ущерба для работы DCS-BIOS.

Вы все же внимательно его прочитайте, мне кажется это именно то, что вам нужно😉

Цитаты оттуда:

--- This file is for reference purposes only
--- All user modifications should go to $HOME\Saved Games\DCS\Scripts\Export.lua

-- Expand the functionality of following functions for your external application needs.

Т.е. там явно написано, что с ним надо сделать, чтобы он "заработал" и почему он больше нигде не используется.

DCS-BIOS вроде ничего не хакает, а использует именно этот механизм экспорта через Export.lua. Все данные получаются через вызовы Lo*функций. После прочтения их можно писать в сокет или файл или вызывать свою dll, как делает например Tacview. DCS-Bios не использовал как именно он передает данные своему приложению не знаю. Но точно можно почитать его lua исходники, чтобы понять как он их кодирует, тогда и с раскодировкой проблем уже не будет.

Но, я уверен, что и вам и @ander лучше разобраться с тем как работает Export.lua, а потом уже использовать/не использовать dcs-bios или аналоги.

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

LoGetObjectById() -- (args - 1 (number), results - 1 (table))
 Returned object table structure:
 { 
	Name = 
	Type =  {level1,level2,level3,level4},  ( see Scripts/database/wsTypes.lua) Subtype is absent  now
	Country   =   number ( see Scripts/database/db_countries.lua
	Coalition = 
	CoalitionID = number ( 1 or 2 )
	LatLongAlt = { Lat = , Long = , Alt = }
	Heading =   radians
	Pitch      =   radians
	Bank      =  radians
	Position = {x,y,z} -- in internal DCS coordinate system ( see convertion routnes below)
	-- only for units ( Planes,Hellicopters,Tanks etc)
	UnitName    = unit name from mission (UTF8)  
	GroupName = unit name from mission (UTF8)
        Flags = {
		RadarActive = true if the unit has its radar on
		Human = true if the unit is human-controlled
		Jamming = true if the unit uses EMI jamming
		IRJamming = -- same for IR jamming
		Born = true if the unit is born (activated)
		AI_ON = true if the unit's AI is active
		Invisible = true if the unit is invisible
		Static - true if the unit is a static object
        }
 }

P.S. Недоумение vvm13 по поводу COM-порта разделяю, зачем, когда есть TCP/IP и куча средств для работы с ним? Если бы у вас железка какая была только с ком-портом, тогда еще можно было бы понять...

7 часов назад, ander сказал:

От камрадов у меня секретов нет. Мечтаю собрать то,что на картинке.Производственные мощности есть,мозги вроде тоже,но не в том объеме как хотелось бы...

Круто! Желаю успехов!

  • Like 1

Верните короновирус в качестве главной проблемы, спать в маске буду, обещаю.

Скрытый текст

Hardware: AMD 5900x, 64Gb RAM@3200MHz, NVidia RTX3070 8Gb, Monitor 3440x1440(21:9), Samsung 980pro 1Tb NVMe SSD, VKB Gunfighter+MCGU, Virpil Throttle CM3, VKB T-Rudder, TrackIR.

 

Link to comment
Share on other sites

6 минут назад, Blackfyre сказал:

Круто! Желаю успехов!

Если таковые и будут, достижение общее - без команды я не разберусь...

Лучшее место на земле -небо  ©  😀

Link to comment
Share on other sites

Xenia,Вы не против,если я буду каким то образом использовать ответы,адресованые лично Вам? Без спроса как то неудобно...

Link to comment
Share on other sites

Леди и джентелтмены..."Леди" в единственном числе (Xenia у нас одна)Поздравляю всех с профессиональным праздником 7 мая!

Самые лучшие пожелания и чистого неба всем!!! 🤩

Link to comment
Share on other sites

  • 4 weeks later...
06.05.2022 в 18:02, Blackfyre сказал:

Но, я уверен, что и вам и @ander лучше разобраться с тем как работает Export.lua

Здравствуйте.Разбирались вместе с леди Xenia.Вроде ничего не упустили.В том то и фишка,что данные из кабины считыаются махом...

Возможнно я не смог правильно донести задачу...Мне нужны данные из информационной строки. Поэтому и разработчиков игры потревожил.

Мы то с Xenia новенькие...А разработчикам эта задача - всего лишь легкий мозговой штурм,и только...

А может существует более конкретная тема,где обсуждаются эти вопросы.Тогда может быть подскажете где она есть?

                                                                                          Спасибо за участие в обсуждении.   

        

Pich.Roll..png


Edited by ander
Link to comment
Share on other sites

20 hours ago, ander said:

Здравствуйте.Разбирались вместе с леди Xenia.Вроде ничего не упустили.В том то и фишка,что данные из кабины считыаются махом...

Возможнно я не смог правильно донести задачу...Мне нужны данные из информационной строки. Поэтому и разработчиков игры потревожил.

Мы то с Xenia новенькие...А разработчикам эта задача - всего лишь легкий мозговой штурм,и только...

А может существует более конкретная тема,где обсуждаются эти вопросы.Тогда может быть подскажете где она есть?

                                                                                          Спасибо за участие в обсуждении.   

        

Pich.Roll..png

 

Даже проверил, LoGetSelfData() возвращает именно эти числа. Отдельно отмечу, что тангаж в диапазоне от -90 до 90. Во время мертвой петли в крайних верхней и нижней точках крен меняется на 180 градусов. Что логично, так как эти числа вместе с направлением(heading) заменяют собой вектор положения самолёта.

P.S. Для F-16 (и любого кликабельного) данные из кабины еще можно через GetDevice() получать. Я например данные с MFD читаю. Правда как оттуда тангаж и крен получить - хз, не разбирался можно ли, ибо оно мне не надо. Точно можно со standy ADI, lля F18 вызов будет такой: GetDevice(32):get_pitch().

Quote

А может существует более конкретная тема,где обсуждаются эти вопросы.Тогда может быть подскажете где она есть?

Какой-то одной отдельной темы не видел, их много, разной степени полезности. Я искал просто гуглом, часто начиная поиск просто по имени конкретной фунции, типа LoGetSelfData. Ну и читал код того же DCS-BIOS и еще каких-то аналогов.

  • Like 1

Верните короновирус в качестве главной проблемы, спать в маске буду, обещаю.

Скрытый текст

Hardware: AMD 5900x, 64Gb RAM@3200MHz, NVidia RTX3070 8Gb, Monitor 3440x1440(21:9), Samsung 980pro 1Tb NVMe SSD, VKB Gunfighter+MCGU, Virpil Throttle CM3, VKB T-Rudder, TrackIR.

 

Link to comment
Share on other sites

9 минут назад, Blackfyre сказал:

Даже проверил, LoGetSelfData() возвращает именно эти числа.

Тогда я что то просмотрел...Извините что побеспокоил.Большое спасибо за поддержку.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...