Эх, боюсь соврать- давно это было, но что-то с осями не так... Кажись руль направления не опрашивается. Еще за один запрос обороты на многомоторных самолетах нельзя получитьЦитата:
Сообщение от Avc
Вид для печати
Эх, боюсь соврать- давно это было, но что-то с осями не так... Кажись руль направления не опрашивается. Еще за один запрос обороты на многомоторных самолетах нельзя получитьЦитата:
Сообщение от Avc
Проверил. Руль опрашивается нормально, а вот из триммер элеронов вроде не работает - не устанавливается (во всяком случае не заметно) и всегда возвращает 0.0 - нейтральное положение. Я тут по ходу дела правлю DeviceLink - какие значения чему соответствуют, ну и комментарии по поводу глюков. Если кому-то будет интересно, то могу потом подправленный вариант выложить.
Угу, давай. Я перешлю "куда следует". И Prop Pitch проверь еще ;)Цитата:
Сообщение от Avc
Проверил. Не работает. Всегда отвечает 1.00 чего бы на него не слал.
По совету Hruks проверил работу prop pitch еще раз, но уже с включенным полным управлением двигателем - в этом случае prop pitch работает и на запись и на чтение. Если полное управление выключено, но работает только на чтение. С триммерами элеронов вроде тоже самое - не на всех самолетах они просто есть. Это проверю завтра и тогда напишу.
Вроде летает шарманка. Пробовал на одномоторных самолетах. Взлетают нормально (без моего вмешательства) Як-9УТ и Ла-7. Из немецких одномоторных тоже какой-то попробовал - взлетел. Если сегодня успею доделать чтение скрипта взлета из файла, тогда выложу на общее поигрательство.
Выложил программу. Описание к ней вот в этой ветке:
http://www.sukhoi.ru/forum/showthrea...422#post392422
Народ а для чего автопилот то делать включил встроенный и взлетай
ИМХО, трезвая мысль в этой ветке. Действительно зачем это все, кроме тестов. Искусство для искусства получается.Цитата:
Сообщение от Death_pilot
На случай войны! Если DeviceLink в онлайне включат.
В какой то мере это так. Из любви к искусству я убил два праздничных дня проверяя и тестируя как работает DeviceLink (и ничуть не жалею об этом, ну вот такой я маньяк :D ), но зато теперь есть прога, которая позволит тестировать его гораздо быстрее и удобнее, а значит перейти от искусства к вещам более приземленным (или наоборот, более полетным ;) ) Ведь этот DeviceLink можно использовать не только для автопилота, но и для управления камерой, а значит можно написать кучу скриптов для управления обзором - справа-налево, слева-направо, восьмеркой или по синусоиде. То есть в NewView можно будет добавить много чего нового, да и вообще много чего внешнего подключить.Цитата:
Сообщение от FAE
Нет ну все понятно, конечно, можно и из .... пулю слепить, однако (я в этом не спец), но первое ощущение от devicelink'а - ощущение кривизны. Странно в памятном флэйме, когда появился еще первый "читовский" udpspeed Олег сказал, что все это очень криво, мы мол сейчас помудрим и предложим вам круть. Я тогда, грешным делом, подумал, ну вот сейчас появится альтернативные виды приборной доски изменение угла зрения полупрозрачная РУС и т.п.
Однако, ИМХО, то что мы имеем сейчас - это какой-то зародыш или даже еще менее чем зародыш.
Нда, читаю я тут это все и фигею потихоньку... автопилоты, жэ-пи-эсы ...
А самую дельную мысль то и пропустили. Это я про энергометр (эм-жэ-аш плюс эм-вэ -квадрат).
И как раз таки для офф-лайна, для новичков было бы полезно. Лучше б это написали, имхо более пользы бы было.
Сделать можно все угодно, я уже подумываю добавить объявление переменных и калькулятор в il2dl чтобы в скриптах можно было делать вычисления.Цитата:
Сообщение от SLI=SHURIK_25=
Думаю, многие работают в скриптовом направлении. Кроме непосредственно управления по DeviceLink, скрипт должен также позволять управлять расположением информации на экране, на прозрачном экране...Цитата:
Сообщение от Avc
Пользователь сам запрограммирует всякие автопилоты, автозакрылки, видимую на экране информацию, ее расположение, зависимость набора датчиков от конкретного самолета и т.п.
Самое трудоемкое здесь разработать скрипт. К нему предъявляются следующие требования:
- гибкость использования,
- минимальное и эффективное использование машинных ресурсов, т.к. в большинстве случаев подобные программы будут запускаться на том же самом компьютере, что и игра.
Что есть "гибкость"? Сейчас в il2dl у меня пока сделаны из "гибких" только if и goto - этого мне пока достаточно чтобы "огибать" те углы, которые возникают при описании скрипта. Еще можно добавить объявление процедур и переменных. Ну, а где переменные, там нужны и вычисления.Цитата:
Сообщение от Vorobey
Из циклов хотя бы while нужен. Пока думаю остановиться на простых вещах - основные операции с двумя переменными, потом можно будет добавить и калькулятор посложнее.
То есть где-то примерно так:
dim alt ; переменная alt - double, целые вроде ни к чему
read altimeter alt ; прочитать и запомнить значение альтиметра
ну, а потом по ходу дела можно ждать вот так
wait altimeter alt + 25 ; ждать пока поднимемся на 25 метров
2 Avc:
Я не критикую, а делюсь своими соображениями, рассказываю путь по которому сам собираюсь идти. Вот уже общий формат скрипта придумал. Это будет программирование в глобальных переменных.
Ключи DeviceLink будут представлять из себя что-то вроде регистров, регистрами же представляются и отображаемые на экране индикаторы, можно заводить свои переменные.
Скрипт будет состоять из последовательности инструкций.
Каждая инструкция должна завершаться символом точка с запятой. Инструкция начинается с объявления необязательных меток, не более одного условия и не более одной команды.
Метка - это идентификатор завершающийся символом двоеточия
Условие - это предикат, который принимает параметром выражение, заканчивается знаком вопроса. Если предикат дает истину, выполняется команда инструкции, если нет - только инкрементируется счетчик инструкций (исполняется пустая команда). Условие не изменяет состояние переменных и регисторов.
Команда - это некоторое действие, которое изменяет значение счетчика инструкций и может изменять состояние регистров и переменных. Команда может принимать параметром несколько выражений.
Выражение - это... Вот над выражениями я сейчас и ломаю голову... :)
Не силен я в интерпретаторах, надо будет литературу какую-нибудь почитать.
Хочется сделать этот интерпретатор:
- достоточно простым в иcпользовании;
- достаточно гибким для решения различных задач автоматического управления самолетом и индикацией;
- достаточно эфферкивным и не требовательным к ресурсам, чтобы пользователь мог запускать его одновременно с игрой и не ощущал при этом дискомфорта.
Целые очень даже к чему, многие ключи DeviceLink используют целые. Всего я там насчитал три типа: строка, целое, действительное.
Строки тоже очень нужны. Представь себе такой сценарий. При загрузке миссии определяется тип самолета (строка), в зависимости от значения вызывается соответствующая подпрограмма с заточенными под этот самолет индикацией и автоматами.
Критика тоже вещь полезная, только пока вроде критиковать нечего :)Цитата:
Сообщение от Vorobey
Да, у меня так и сделано. Только ключи DL прописываются в отдельном файле, а переменные определяем по ходу скрипта.Цитата:
Сообщение от Vorobey
Вы смотрели первую версию моей il2dl? Я ее выложил вчера у себя на сайте. Описание как запускать вот тут:Цитата:
Сообщение от Vorobey
http://sukhoi.ru/forum/showpost.php?...2&postcount=36
Описание на скрип - в комментариях самого скрипта. Сегодня возможно добавлю объявления переменных в скрипт. Если не смотрели, посмотрите, пожалуйста, и дайте тогда уже конкретные замечания по реализации. Только графики пока никакой обещать не могу - пока все будет только в текстовой консоли - до тех пор пока все не отработаю что хотелось бы.
Целые без всякого ущерба для скрипта можно представить как действительное. Сейчас у меня для ключа его тип хранится, и обрабатывается при получении ответа тоже вроде правильно. Строковые не реализованы, но место под них застолблено - тип такой есть, так что их обработку тоже можно будет добавить. Вот, хочу изменить поведение оператора connect в скрипте - чтобы он возвращал как раз имя самолета. То есть запускаем скрипт и во первых строка говорим - connect xxx.xxx.xxx.xxx - этот connect ждет запуска мисии и первым делом получает имя самолета, как только имя получено скрипт начинает выполнение.Цитата:
Сообщение от Vorobey
Выложил исправленную версию http://www.avcsite.ru/bin/il2dl.zip. Теперь может работать и на одной машине. Спасибо Hruks за то, что нашел эту досадную ошибку.
:) не делаю я никаких замечаний по конкретно твоей реализации.
Это размышления на тему "Какой я хочу скрипт". Этот скрипт я хочу не от кого-то, а от себя самого. А ты делай, как тебе самому нравится.
Твою программу я не запускал, только посмотрел файлы скриптов. Глянул и тут же закрыл. Для разработчика там мало интересного, оттуда можно получить только обрывочное представление о синтаксисе и семантике. Меня же больше интересует описание синтаксиса в BNF, подробная семантика, описание модели среды исполнения.
Да, вот чего там не найти, так это BNF. :) Впрочем, ни BNF ни NBNF как таковых и в исходниках то нет. Строки в файле читаются последовательно, выделяется первый токен, ищется в списке, если найден, то запускается процедура разбора остатка строки. Если не найден, то строка просто игнорируется. Вот как буду писать калькулятор тогда может и BNF появится ;)Цитата:
Сообщение от Vorobey
Еще замечание. Уж очень не удобно опрашивать параметры чтобы получить текущее значение, явно не хватает возможности подписаться-отписаться от мониторинга изменений. Может сделать промежуточный сервер, который будет цепляться к IL2, а клиенты будут уже цепляться к этому промежуточному серверу? Причем формат запросов должен быть точно таким же как и у IL2, только добавить еще парочку префиксов: S (subscribe)- подписаться, U (unsubscribe) - отписаться. Тогда можно в начале скрипта подписаться на все необходимые ключи и начать получать по ним изменения. Хотя это все легко реализуется и внутри самого клиента.
Ну, у меня в конфигурационных файлах тоже никакого BNF нет. :) Читаю их по-рабоче-крестьянски :) Однако встраивание калькулятора, интерпретатора и т.п. несомненно потребует организации грамотной трансляции.
У меня проблем с нотификацией нет, т.к. я уже сделал (почти :) ) гуевый интерфейс. Там при парсинге ответа от DeviceLink можно будет посылать виндовые команды (WM_COMMAND) c параметром, указывающим, что поменялось.
вчера тоже побаловался с UDP клиентом - работает, только мне кажется не нужно мешать всё в кучу. ИМХО должно быть три отдельных части - сам DeviceLConnect.dll (чистый UDP клиент с внешней настройкой DeviceLConnect.ini) реализующий общие функции Open,Send,Receive,Close а также возможно функции формирования пакетов (я имею в виду длинные строки запросов R\...\...) и их парсинга (хотя мож они и не нужны) 2я часть - модуль "отображения" состояния "переменных" в какой-то вид - в приборы со стрелочками, в траспарент окно цифрами и т.д. (кому что нравится) 3я часть - модуль "управления" - здесь думаю надо взять готовую реализацию скрипта(VB,java,pas,C) а также на основе файлов *.ai содержащих набор входных параметров и конрольных значений, пробовать управлять нелинейной системой как собственно и делает Avc - только в скрипте (не аi) должна быть реализована сама логика регулятора
Да, как я посмотрю, работы двужутся полным ходом! Теперь только не хватает чтобы DeviceLink в on-line работал и скоро можно будет устраивать бои скрипт-пилот vs скрипт-пилот :D