Тема для тех у кого собран MJoy-16 и нет зарегистрированного модуля FSUIPC4. Самая большая проблема в том, что есть события в симе, на которые нет возможности назначить комбинацию кнопок. Меня в частности прильщала возможность задействовать четыре энкодера в симе в блоке автопилота. В симе не выведены в настройки такие функции как увеличение-уменьшение высоты (автопилот), увеличение-уменьшение скорости…. список необходимых и вместе с тем недоступных функций достаточно большой… Слышал о том что такое заложено в SimConnect. Информации о его использовании для решения данной проблемы не нашел.
Используя примеры из SDK вобщем то за один неполный день разобрался как это работает. На С++ програмить не умею, но тем не мение на текущий момент есть набросок програмки, которая позволяет назначить на определенные действия фиксированную комбинацию кнопок.
Используя примеры из SDK вобщем то за один неполный день разобрался как это работает. На С++ програмить не умею, но тем не мение на текущий момент есть набросок програмки, которая позволяет назначить на определенные действия фиксированную комбинацию кнопок.
это удобно повесить на один тумблер:
Ctrl+F5 — AP On
Shift+F5 — AP Off
…………………………………………
а это на энкодеры:
Shift+F2 Ias/Mach —
Ctrl+F2 Ias/Mach +
Shift+F3 Heading —
Ctrl+F3 Heading +
Shift+F4 Altitude —
Ctrl+F4 Altitude +
Все бы ничего, но есть много вопросов. В частности не могу найти переменные сима, которые отвечают за Course. Кроме того намного удобнее иметь не фиксированную комбинацию кнопок, а иметь возможность назначать их как в той же FSUIPC…
Вобщем кому интересно — вышлю для пробы готовую програмку, или исходники для продолжения работы.
p.s. разработано под 10-й сим с сервиспаком, с установленным симконнектом…
Сообщение отредактировал imitator: 29 June 2007 — 23:35
Flyrus (30.06.2007 10:09) писал:
С другой стороны , чтобы оживить Mjoy энкодер из под собственной программы , по мойму необходимо писать обработчик этог энкодра и уже потом давить на батоны и дергать рычаги из симконнекта
Хотя и то и то прекрасно осуществимо в любой среде разработки. Удачи..
Ну энкодеры то уже заработали, тут вот проблемы возникают такого плана: Есть события, имеющие две команды, например Вкл/Выкл Автопилот… То тут все просто, на первую команду (Вкл. Автопилот) — одну комбинацию клавиш, на вторую (Выкл. Автопилот) команду — другую комбинацию, вешаем все на один тумблер и все прекрасно. Есть события имеющие одну команду, например Автотяга, но с параметрами, как я понимаю — Вкл. или Выкл. Вот тут пока не понятно: как дать команду с параметрами, но это уже сложности языка, причем ковырять приходится одновременно и С++ и SDK (мало мне 1С
Тут даже не понятно пока чем события от переменных отличаются в симе 
С другой стороны , чтобы оживить Mjoy энкодер из под собственной программы , по мойму необходимо писать обработчик этог энкодра и уже потом давить на батоны и дергать рычаги из симконнекта
Хотя и то и то прекрасно осуществимо в любой среде разработки. Удачи..
Вот те курс.
Для Вкл/Выкл автопилота и heading клавиши и в симе назначаются.
Да и вместо C++ можно C# пользовать, все попроще.
_ak (30.06.2007 12:32) писал:
Вот те курс.
Для Вкл/Выкл автопилота и heading клавиши и в симе назначаются.
Да и вместо C++ можно C# пользовать, все попроще.
Спасибо, слово «OBS» — было ключевое. Нашлись события!
KEY_VOR1_OBI_DEC — VOR1_OBI_DEC (Decrements VOR 1’s OBS setting)
и…
KEY_VOR1_OBI_INC — VOR1_OBI_INC (Increments VOR 1’s OBS setting)
… так что все четрые энкодера задействованы!
Сообщение отредактировал imitator: 30 June 2007 — 17:48
Flyrus (30.06.2007 13:25) писал:
Хорошо, с этим в целом понятно, а как быть с такой ситуацией:
Нужно включать Автотягу одной комбинацией клавиш, а /выключать другой.
Есть переменная AUTOPILOT THROTTLE ARM
есть событие AUTO_THROTTLE_ARM
…..
для автопилота сделал так:
hr = SimConnect_MapInputEventToClientEvent(hSimConnect, INPUT0, «ctrl+f5», AUTOPILOT_ON);
hr = SimConnect_MapInputEventToClientEvent(hSimConnect, INPUT0, «shift+f5», AUTOPILOT_OFF);
но у автопилота две переменные, а у автотяги одна
Переменные от евентов отличаются тем что евент — это событие , типа шасси вверх или вниз. Или событие — прибавить на 1 газку , или убавить на 1 газку.. Бывают эвенты , в параметрах которых ты указываеш на сколько единиц прибавить throttle или убавить.. Но это все комманды — тоесть events.
С переменными ты работаеш в «живом виде» и переменные имеют свой диапазон . Скажем переменная Throttle имеет диапазон от 0 до 100% .. Мало того , в каком виде предсталять переменную ( в процентах или скажем в метрах или в градусах) ты заказываеш сам , когда подготавливаеш эту переменную к общению.
Так вот , чтобы изменить throttlle от 0 до максимума , с евентами тебе надо пошагово каждый раз давать евент — Throttle set+1
столько раз сколько требует модель самолета. ( тут ты никогда не узнаеш реально сколько раз надо подать в симконнект этот евент и тем более никогда не узнаеш в каком положении находится в данный момент throttle)
А вот с переменными делаеш просто —
подаеш переменную Throttle engine 1 в процентах — скажем 100 . И всё. Ручка throttle не максимум.. Тоесть евенты — это прямое общение с переменными с их фактическими значениями…
В своих утилитах я пользую и переменные и евенты. Например выпуск шасси — переменная есть такая , только она указывает физический угол выпуска шассии у самолета (анимация) .. Чтобы выпустить шасси через переменную из собственой программы , я должен в програмном цикле «проиграть» переменную от 0 до 100 …. И таким образом анимировать выпуск шасси собственными силами. Однако используя евенты я не заморачиваюсь этим и просто посылаю событие — выпустить шасси , а движок сима сам все за меня делает.. Очень удобно…
Переменные можно читать , и моджифицировать.. А вот евенты прочитать никак нельзя , однако есть какието евенты которые позволяют прочитать свои данные..
Кстати , многие переменные и евенты не работают . Имейте ввиду. Например скорость изменения симуляции сима SimRate — не пашет… Или нет переменной ZOOM .. Есть только евент — ZOOM IN или ZOOM OUT …
В этом случае ваша утилита должна «слушать клавиши» и по нажатию на оной выдавать в сим коннект нужные события в обход конфигуратора. Тогда на одну клавишу можно повесить хоть 200 событий ..А то что вы делает — это даете просто коману для сима переназначить событие ctrl+5 на AUTOPILOT_ON без какой либо логики вэтом случае симконнект ругается. По мойму было так
_ak (30.06.2007 17:55) писал:
Ну это можно конечно. Но тогда возникает необходимость согласовывать положение тумблера на физической панели с тумблером в симе. Иначе может быть веселая картина: у меня тумблер в положении вверх, а в симе — вниз. Вот с автопилотом такой проблемы нет, так как там два евента, один на включение, а другой на выключение. Мне вот интересно, а может те евенты, которые имеют одну команду могут выполняться с параметрами? Ну например: включить автотягу (1)… включить автотягу (0)…
И еще… если никаких параметров нет, тогда можно прописать логику, основываясь на положение тумблера в симе. Но тут мне нужно знать значение переменных. А я пока не представляю как это сделать…
Только не везде так есть, местами только _TOGGLE
Они более гибки ! И читаются параметры !
sahob (30.06.2007 19:47) писал:
Почта дошла? Получилось запустить?
Flyrus (1.07.2007 09:56) писал:
Они более гибки ! И читаются параметры !
Не все переменные позволяют запись
imitator (1.07.2007 23:03) писал:
sahob (30.06.2007 19:47) писал:
Почта дошла? Получилось запустить?
Спасибо, сегодня получил и начну завтра же копаться, постараюсь разобраться.
1) Запускаем сим.
2) Запускаем MJoy Mapper.
3) Запускаем мою програмку.
MJoy Mapper эмулирует нажатие определенных комбинаций кнопок, програмка перехватывает эти нажатия и посылает команды в сим…
Все!
Плюсы:
1) Работают энкодеры.
2) Назначенные утилитой комбинации кнопок имеют приоритет перед настройками сима, следовательно в самом симе эти комбинации если и назначены на что-то другое — игнорируются.
Минусы:
1) Консольное… выглядит некрасиво
2) Нельзя никак переназначить комбинацию кнопок. (только переписание и перекомпиляция программы)
3) Нельзя добавить функционал (см. пункт 2…)
з.ы. может кому интересно: через некоторое время планируется виндовое приложение, с настройками. Но это как сложится