Изготовил часть компонентов FSBus. Оригинальный COM, Display, EZ_Led, EZ_Keyboard.
Нашел даже частично офсеты к PMDG Boeing 737. Такие как AP Altitude, HDG, V/S, Course ну и еще биты Alt Hold, VNAV, LNAV и т.д.
Что я имею теперь. Я имею полную визуализацию MCP. То есть, выводятся на дисплеи Высота, скорость, HDG, курс, вертикальная скорость, при активации разных режимов а/п загораются соответствующие светодиоды.
Если я меняю значения при помощи мыши на вирт. панели MCP, меняется и значение на реальных дисплеях.
Но!
При попытке при помощи энкодера поменять значение например высоты, значение переменной меняется (меняется на сответствующем физическом дисплее, а на виртуальной панели оно остается неизменным! То же самое и с HDG и Course, и с верт. скоростью и со скоростью. Причем, с HDG и Course вообще все сложно.. Потому что при изменении значения при помощи энкодера после значения 359 не следует 0, как это должно быть, а следует 361, 362 и т.д до значения 65535..
Попробовал все это проделать на дефолтном боинге, все работает преотлично. Пробовал на NG менять значения частот COM, NAV, ADF при помощи энкодера на FSBUS, тоже работает (там стандартные переменные)
В общем, понятно, что можно реализовать это при помощи MJoy, использовать его энкодеры, промапить его через FSUIPC,
все будет работать.
Может быть кто-то с этой проблемой сталкивался? И если да, то как решали?
Не дайте коллеге разочароваться!
Jazz, on 26 August 2009 — 18:33, said:
keystrokes в ПТ не работали. Проверено. В notepad-е печатают, в ПТ нет. Может в 737NG заработают, хотя непонятно о каком ЭНДЖЫ идет речь 🙂
vitabutch, on 27 August 2009 — 00:04, said:
To vitabutch. Речь идет об PMDG 737NG, а можно поподробнее про keystrokes, что это? И как это мне может помочь?
Ivan_Pletnev, on 26 August 2009 — 16:07, said:
Изготовил часть компонентов FSBus. Оригинальный COM, Display, EZ_Led, EZ_Keyboard.
Нашел даже частично офсеты к PMDG Boeing 737. Такие как AP Altitude, HDG, V/S, Course ну и еще биты Alt Hold, VNAV, LNAV и т.д.
Что я имею теперь. Я имею полную визуализацию MCP. То есть, выводятся на дисплеи Высота, скорость, HDG, курс, вертикальная скорость, при активации разных режимов а/п загораются соответствующие светодиоды.
Если я меняю значения при помощи мыши на вирт. панели MCP, меняется и значение на реальных дисплеях.
Но!
При попытке при помощи энкодера поменять значение например высоты, значение переменной меняется (меняется на сответствующем физическом дисплее, а на виртуальной панели оно остается неизменным! То же самое и с HDG и Course, и с верт. скоростью и со скоростью. Причем, с HDG и Course вообще все сложно.. Потому что при изменении значения при помощи энкодера после значения 359 не следует 0, как это должно быть, а следует 361, 362 и т.д до значения 65535..
Попробовал все это проделать на дефолтном боинге, все работает преотлично. Пробовал на NG менять значения частот COM, NAV, ADF при помощи энкодера на FSBUS, тоже работает (там стандартные переменные)
В общем, понятно, что можно реализовать это при помощи MJoy, использовать его энкодеры, промапить его через FSUIPC,
все будет работать.
Может быть кто-то с этой проблемой сталкивался? И если да, то как решали?
Не дайте коллеге разочароваться!
если оффсеты верны, возможно Вы не учитываете их формат ( десятичный или BCD ). В СИОКЕ для их преобразования есть команды TOBCD и FROMBCD. Я бы посоветовал найти скрипт для MCP PMDG и посмотреть какие оффсеты задействованы там и как организовано их чтение/запись.
Ivan_Pletnev, on 27 August 2009 — 05:13, said:
Keystrokes это такая «фича» роутера SIOC, которая может назначить определенному событию SIOC-а, например, нажатию кнопки, состоянию переменной, вызову процедуры и т.д. подпрограмму, которая эмулирует нажатие определенной последовательности клавиш. Последовательности определяются в sioc.ini
Мне сложно сказать как это может Вам помочь, т.к. чтобы работать с вводом-выводом SIOC, надо иметь хотя-бы одну мастер-плату IOCARDS. Т.к. Вы выбрали FSBus, то тут SIOC ничем помочь не может.
Мне кажется Вам нужно поискать по сети примеры скриптов для PMDG 737го, благо что моделька старая и уже кто-то наверняка работал с ней через смещения FSUIPC.
У меня есть еще подозрение, что в нелицензионных (триальных) FSUIPC некоторые «специальные» смещения могут быть закрыты. Т.е. Ваш роутер шлет значения в FSUIPC, но FSUIPC может блокировать эти изменения из-за лицензии. Попробуйте поискать в описании на FSUIPC про это.
vitabutch, on 27 August 2009 — 09:44, said:
Не совсем так. На самом деле SIOC можно состыковать с FSBUS через незадействованные оффсеты FSUIPC.
601, on 27 August 2009 — 14:24, said:
Получается задержка в 1.5 секунды, у меня щас как раз PMDG решил проблему через эмуляцию нажатий на клавиши во всюпике, а для точности сделал дополнительную плату, где каждому энкодеру соотв. две ноги(прошивку и файл печатной платы могу кинуть)
Также можете попробовать мой софт для плат FSBUS, но он еще сыроват, возможны глюки.
DellR, on 27 August 2009 — 18:41, said:
Полторы секунды — это как-то очень много. В файле sioc.ini имеет смысл поиграться параметром FSUipcRefresh…
DellR, on 27 August 2009 — 18:41, said:
В смысле, для точности? В любой плате (и в ИОКАРДС в том числе) каждому энкодеру соответствуют две ноги (+земля). В чем проблема с родными энкодерами?
DellR, on 27 August 2009 — 23:41, said:
Также можете попробовать мой софт для плат FSBUS, но он еще сыроват, возможны глюки.
Интересно-интересно, что за плата??? Киньте пожалуйста! Ivan_Pletnev собака mail точка ru.
И про софт не менее интересно.
Да, кстати, внимательно изучил скрипт SIOC для PMDG737, там действительно управление всеми переменными, которыми у меня через FSBus управлять не получается, осуществляется через keystrokes.
Сообщение отредактировано Ivan_Pletnev: 28 Август 2009 — 08:10
Ivan_Pletnev, on 28 August 2009 — 05:28, said:
И про софт не менее интересно.
Да, кстати, внимательно изучил скрипт SIOC для PMDG737, там действительно управление всеми переменными, которыми у меня через FSBus управлять не получается, осуществляется через keystrokes.
Тогда Вам стоит попробовать сделать как предложил 601й. СИОК очень быстрая штука. Вам осталось найти оффсеты FSUIPC, который свободны.
vitabutch, on 28 August 2009 — 12:18, said:
Ну что ж, тогда вопрос к 601! Вы давно уже занимаетесь этим вопросом, подскажите, какие офсеты под это дело можно использовать, мне их надо-то несколько штук всего.. Заранее благодарю!
Ivan_Pletnev, on 28 August 2009 — 08:55, said:
Есть свободная область (достаточно большая) начиная с $4000. Можно также использовать области, зарезервированные для Project Magenta, если вы его не используете. Возможно есть и другие области — навскидку не вспомню…
Вот тут есть пример сиоковской модели системы впрыска воды, предназначенная для работы с FSBUS, которую я писал для Александра: http://www.avsim.su/…post__p__828360
Сообщение отредактировано 601: 28 Август 2009 — 17:10
Ivan_Pletnev, on 28 August 2009 — 15:31, said:
Да.
Хотя в случае с энкодером при такой схеме теоретически могут иметь место заметные задержки, поскольку SIOC опрашивает FSUIPC раз в какое-то время. Предполагаю, что FSBUS также общается с FSUIPC по таймеру (поправьте, кто знает). Т.е. мы будем иметь дело с суммарной задержкой. Если при работе с тумблерами, кнопками и лампами это особого значения не имеет, то в случае с энкодером может кровь попортить.
Сообщение отредактировано 601: 28 Август 2009 — 18:48
Связка энкодер — индикатор работает напрямую, минуя сим, только при запуске программы значение на «железном» индикаторе должно соответствовать значению на мониторе, в АРК , например, это делается чтением оффсетов FSUIPC при обоих положениях тумблеров выбора каналов, в ТКС подаётся подаётся пачка импульсов для поворота шкалы до упора а затем конкретное число импульсов в обратном направлении для установки в конкретное наиболее часто используемое положение, всё это делается автоматически скриптом при запуске СИОКА. Возможно, в каких то случаях сам сим стартует всегда при одном определённом значении на индикаторах, ещё лучше.
Дальше всё просто. После поворота энкодера и нажатии его кнопки скрипт вычисляет знак и величину приращения и посылает соответствующее число импульсов в назначенную вами мышиную зону.Задержка знкодер-индикатор отсутствует в принципе, стандартный алгоритм обработки сигналов энкодера позволяет работать с акселерацией, а пропуск клика остаётся внутри скрипта,т.к. вычисляется разница между предыдущим и новым значением, уже дошедшим на индикатор,энкодер можно крутить с любой приемлемой для глаз скоростью, черепашья скорость обмена с FSUIPC остаётся за кадром, естественно, если вы не поклонник 3D кабины , там этот способ не приемлем. Пример скрипта я приводил в теме о IOCARDS, не знаю только поможет ли это пользователям FSBUS.
vitabutch, on 27 August 2009 — 22:13, said:
Я для FSBUS сделал, также есть, динамическая индикация и оси(пока в железе не пробовал) все совместимо с EZ_BUS. Скину в понедельник, щас на даче.
Какого размера незадействованные офсеты? Я имею ввиду область, про которую говорил уважаемый 601ый..