# Технические подробности о программе GoodLanding

## Контроль версий библиотеки SimConnect

Версия библиотеки SimConnect.dll является существенной. Эта библиотека хранится в «глобальном кэше сборок» WindowsTM (папка WinSxS -- side-by-side folder). Этот кэш позволяет иметь несколько версий библиотеки на одном компьютере, что называется параллельная конфигурация приложения. Оригинальный релиз Microsoft® Flight Simulator X (так называемый RTM) редко встречается в дистрибуции. Как правило, у пользователей исходные диски с релизом уже включающем пакет обновлений Service Pack 1.

SimConnect.dll для Microsoft® Flight Simulator X RTM, в русской локализации имеет версию 10.0.60905.0.

SimConnect.dll для Microsoft® Flight Simulator X Service Pack 1, в русской локализации, имеет версию 10.0.61355.0 (в папке 10.0.61242.0).

Большинство современных дополнений для Microsoft® Flight Simulator X требует наличия пакета обновлений Service Pack 2, который включен в Microsoft® Flight Simulator X: Acceleration Pack или может быть загружен отдельно.

SimConnect.dll для Microsoft® Flight Simulator X Service Pack 2 (Acceleration Pack), в русской локализации, имеет версию 10.0.61355.0 (в side-by-side папке 10.0.61242.0).

При компиляции приложений использующих SimConnect в программу по умолчанию внедряется файл манифеста, указывающий требуемую версию библиотеки. Эта версия прописана в директиве препроцессора #pragma comment(linker,"/manifestdependency и т.д.) в файле SimConnect.h который включен в сборку. Если целевая версия не отсутствует на компьютере пользователя. Пользователь получает ошибку с сообщением: «Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна». Следовательно, надо распространять дистрибутив требуемой версии SimConnect.dll вместе с приложением.

При компиляции приложений использующих SimConnect с помощью Microsoft® Flight Simulator X SDK так же требуется строго определенная последовательность установки SDK. Вне зависимости от версии установленного симулятора.

Смысл в том, что каждая новая версия Microsoft® Flight Simulator X SDK требует наличие предыдущей, но при установке удаляет ее. Первой всегда должная устанавливаться версия SDK для RTM. Пакет SDK для SP1a требует наличия SDK RTM, но удаляет ее. Пакет SDK SP2 (Acceleration) требует наличия SD SP1a, но удаляет ее при установке.

Применительно к программе GoodLanding все сказанное относится так: программа использует функцию SimConnect_Text которая доступна только для SimConnect версии 10.0.61242.0 (и соответственно 10.0.61355.0 в русской локализации). Таким образом, для работы программы требуется установленный Service Pack 1,что как правило выполнено (см. выше), а для компиляции - Microsoft® Flight Simulator X SDK SP1a.

Если Вы используете Ту-154Б-2 для FSX от «Проект Туполев», Вы сможете найти установщик SimConnect Service Pack 1 в «Корневая папка Сима\Project Tupolev\SimConnect-SP1\».

пастота обновления этих переменных совпадает с частотой чтения ввода от джойстика.

## Почему выбрана частота записи именно 6 раз в секунду?

Данные от сервера (т.н. Flight Simulator) запрашиваются с помощью функции SimConnect_RequestDataOnSimObject, в которую передается параметр типа SIMCONNECT_PERIOD, определяющий как часто данные будут отсылаться клиенту, т.е. нашему приложению. Варианты такие: данные отсылаются однократно (при этом их можно получать периодически, если вызывать периодически данную функцию); данные отсылаются при обновлении визуального кадра; данные отсылаются при обновлении движка сима (вне зависимости от того обновляется визуальный кадр или нет); данные отсылаются каждую секунду.

Как именно надо вызывать функцию SimConnect_RequestDataOnSimObject не понятно? Для себя я решил этот вопрос так: для приборов – частота движка сима; для программ, работающих с графикой – частота обновления визуального кадра; для программ, отслеживающих изменение динамики – частота возможного отклонения управляющих поверхностей самолета т.н. частота ввода от джойстика.

Такая частота записи выбрана потому, что именно с такой частотой симулятор считывает ввод от джойстика. Дело в том, что во многих случаях незаметные отклонения руля высоты и элеронов создаются за счет «шума» джойстика. Конечно в реале летчик так же может непроизвольно «раскачивать» самолет, но все же усилия страгивания, усилия перемещения и амплитуда хода штурвальной колонки больше чем джойстика. Большой временной интервал как бы отфильтровывает «дрожание» джойстика. Библиотека SimConnect предлагает следующие временные интервалы запроса переменных симулятора: 4 сек, 1 сек и 6 Герц (6 раз в секунду).

В программе функция SimConnect_RequestDataOnSimObject вызывается 6 раз в секунду реального времени с параметром однократного запроса данных от симулятора. Таким образом, учитывается весь потенциальный ввод от джойстика, а вся «высокочастотная» информация отбрасывается. Полноценно проблема фильтрации ввода от джойстика решена в сервисном приборе Степана Грицевского.

## Компиляция исходных кодов

Для компиляции программы из исходных кодов могут быть использованы Microsoft ® Visual C++ 2005 или Microsoft ® Visual C++ 2005 Express Edition или более поздние версии.

В частности, свободно распространяемая версия Express Edition может быть найдена здесь:

www.microsoft.com/vstudio/express

www.msdn.microsoft.com/coding4fun

Обновления SDK утилиты, примеры и документация для разработки дополнений для Microsoft® Flight Simulator X может быть загружена здесь:

http://www.fsinsider.com/