UdpGraph
 Загрузить UdpGraph v2.0.15 (195.0Kb) Последнее обновление: 03/01/2011.


UpdGraph это небольшая утилита, которая позволяет отображать и записывать в лог файл данные параметров (так же возможно применение простейших формул для вычисления различных промежуточных результатов) самолета игрока Ил-2 Забытые Сражения версии 2.0.1 или выше. Для получения данных используется интерфейс связи Ил-2 со сторонними программами - DeviceLink. По умолчанию интерфейс DeviceLink запрещен. Для того, чтобы его разрешить необходимо отредактировать файл конфигурации Ил-2 conf.ini и добавить в него секцию [DeviceLink]. Для лучшего понимания как работает DeviceLink и какие параметры самолета он позволяет получать необходимо ознакомится с содержанием DeviceLink.txt, который находится в основном каталоге Ил-2.

Примечание: DeviceLink не может использоваться для режима on-line.

UdpGraph удобно использовать для отображения значений параметров самолета и двигателя, недоступных через настройки самого Ил-2. Вот пример, как может выглядеть экран Ил-2 с UdpGraph. Здесь запущено две копии UdpGraph - у одной в командной строке указан файл Engine.ini с параметрами двигателя, у вторая копий в командной строке прописан файл Main.ini для отображения азимута, скорости и высоты. Примечание: есть в командной строке имя файла не указано UdpGraph будет пытаться загрузить UdpGraph.ini.


Для редактирования файлов настроек кликните правой кнопкой мыши на окне UdpGraph и выберете пункт Settings из контекстного меню.


Выбирая с помощью комбобокса Settings необходимую страницу настроек вы может отредактировать любые свойства UdpGraph:

 * General settings
 * Window settings
 * Log settings
 * Graphs settings

General settings:

 Server определяет IP адрес машины, на которой запущен Ил-2. Если вы запускаете Ил-2 и UdpGraph на одной машине, то установите адрес 127.0.0.1.

 Port определяет номер UDP порта, который Ил-2 использует для получения сообщений (эти два параметра - адрес сервера и номер порта должны совпадать со значениями указанными в секции [DeviceLink] конфигурационного файла Ил-2 conf.ini).

 Localhost используется если у вас в компьютере несколько сетевых карт и вам необходимо выбрать какую сеть вы хотите использовать для связи с Ил-2. Если сетевая карта только одна, то укажите 127.0.0.1.

 Update Interval определяет как часто UdpGraph запрашивает у Ил-2 данные. По умолчанию это 500 миллисекунд. Примечание: в действительности данные будут опрашиваться не точно каждые 500 миллисекунд, а в пределах от 450 до 600. Это связано с особенностями реализации механизма отслеживания временных интервалов в UdpGraph. Точное значение интервала между опросами можно получить используя глобальную переменную (о глобальных переменных читайте ниже).


Window settings:

 Show window title определяет показывать или нет заголовок окна. В заголовке отображается название самолета игрока.

 Colors задает цвет фона для окна UdpGraph и цвет сетки для области графиков.

 Style задает как отображать данные - в виде графиков (Graph) или в виде текстовой таблицы (Text).
Если выбран режим графиков то доступными становятся дополнительные свойства:  Show scale определяет отображать или нет справа от графиков текущие значения. Dynamic scale определяет как их отображать - статически или привязывать вертикальное положение данных к текущему значению на графике.

 Display mask задает длину поля вывода значений шкалы. Примечание: если маска для шкалы слишком мала то будут отображаться только заданное количество знаков. Например, если маска задана как xxx, а текущее значение какого-то параметра 1000 то будут отображены только три нуля 000.

 Font позволяет выбрать тип и размер шрифта для отображения значений шкалы.


Log file settings:

 Log active если этот флажок установлен UdpGraph записывает в файл все данные, у которых в свойствах есть отметка о записи в лог файл.

 Log path определяет каталог для хранения лог файлов

 Hotkey задает комбинацию клавиш с помощью которой можно включать/выключать запись в лог не переключаясь на окно UdpGraph.

 Timestamp определяет записывать в лог файл первой колонкой текущее время или нет. Остальные параметры задают формат времени. Standard выбирает привычный формат HH:MM:SS. Decimal задает формат, в котором хранится время внутри игры: HH.XXXX час и тысячные доли часа. Milliseconds - миллисекунды, целое число.
System time
- использовать текущее время компьютера для штамповки данных. Time of day - использовать время, которое определяется игрой. Since start of log - время с начала записи в лог файл. Use milliseconds - использовать миллисекунды для штампа времени.


Graphs settings:

 В этом окне отображается список всех точек, которые используются для отображения или расчетов. Щелчок правой кнопкой вызывает контекстное меню с помощью которого этим списком можно управлять: Properties... - открыть окно свойств элемента. Insert new - добавить новый элемент в список. Move up - переместить элемент на позицию вверх. Move down - переместить на одну позицию вниз. Delete - удалить элемент. Двойной щелчок на любом элементе списка открывает окно настройки его свойств.


Properties:

 Name задает имя элемента. Это имя используется при отображении шкалы графиков или текстовой таблицы. Может быть изменено только для новых элементов. При расчетах UdpGraph автоматически создает глобальную переменную добавляя к имени элемента символ @.

 Visible определяет отображать или нет элемент в окне UdpGraph. Если элемент используется для промежуточных расчетов его можно скрыть убрав этот флажок.

 Save to log определяет записывать или нет данный элемент в лог файл. Примечание: запись элемента в лог начинается не сразу, а только со при следующем соединении, например, при проигрывании следующего трека.

 Color задает цвет, которым элемент будет отображаться на графике или в таблице.

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

 DeviceLink key открывает список все ключей DeviceLink, определенных в файле dlkeys.ini. Имя ключа, выбранного из списка, будет вставлено в позицию курсора поля ввода Function.

 Function позволяет ввести формулу, которую UdpGraph будет использовать для расчета значения элемента на каждом интервале расчета. Самая простая формула может состоять всего из одного имени ключа DeviceLink или имени глобальной переменной, например, altimeter. Для более сложных расчетов можно использовать встроенные функции, глобальные константы и переменные перечисленные ниже.

 Autorange определяет как UdpGraph отображает данные в режиме графиков. Если флажок Autorange установлен, то UdpGraph будет автоматически масштабировать данные. Если флажок сброшен, то UdpGraph будет использовать значения, заданные в полях Min и Max, при этом может произойти отсечение слишком маленьких или слишком больших величин.

Формулы расчета данных в UdpGraph v2.0.

При вводе формулы расчета можно использовать знаки арифметических действий +-*/ и знак возведения в степень ^.

Как уже было сказано выше, простейшая формула для расчета может состоять просто из имени ключа DeviceLink. Так же может быть использовано имя глобальной переменной или имя любого элемента с префиксом @. Глобальной является считается переменная, имя которой начинается с символа $.
В UdpGraph уже определены некоторые глобальные константы и переменные:

Математические константы:

  $E
$LOG2E
$LOG10E
$LN2
$LN10
$PI
$PI_2
$PI_4
$PI_180
$1_PI
$2_PI
$2_SQRTPI
$SQRT2
$SQRT1_2
2.71828182845904523536
1.44269504088896340736
0.434294481903251827651
0.693147180559945309417
2.30258509299404568402
3.14159265358979323846
1.57079632679489661923
0.785398163397448309616
0.017453292519943295769
0.318309886183790671538
0.636619772367581343076
1.12837916709551257390
1.41421356237309504880
0.707106781186547524401

Примечание: При необходимости другие константы могут быть добавлены в секцию [globals] файла UdpGraph.ini.

Глобальные переменные:
 
$TRMSEC
$TRSEC
$TRCLOCK
$TOD
$TODSEC
$TODCLOCK
интервал времени между опросами данных, секунды
время с начала трека, миллисекунды
время с начала трека, секунды
время с начала трека в формате HH.MMSS
время суток игры в формате HH.xxxx, где xxxx - доли часа
время суток игры, секунды
время суток игры в формате HH.MMSS

Значение любого элемента также доступно как глобальная переменная если к имени добавить символ @. Например, если существует элемент с именем tas в поле Function которого задана фукнция для вычисления TAS, то это значение можно получить в других элементах через глобальное имя @tas. Для более полного примера рассмотрим такой список элементов:

  Имя Формула
1
tas tas2(ispeed,altimeter.dt)
2
dist @tas*
3
dist side(@dist,altimeter.dt)
4
x @x+sind(azimuth)*@dist
5
y @y+cosd(azimuth)*@dist

В строке 1 объявлен элемент tas и задана формула для его расчета - перевод IAS в TAS в м/с (о всех функциях, которые доступны UdpGraph см. ниже) .
В строке 2 вычисляется дистанция, пройденная самолетом за промежуток времени прошедший между текущим и предыдущим вызовом функции. Глобальная переменная обновляется UdpGraph перед каждым вызовом функции и содержит значение этого промежутка в секундах.
В строке 3 вычисляется проекция пройденной дистанции на поверхность земли. Для расчета используется специальная функция вычисления катета прямоугольного треугольника side(), которая принимает в качестве первого параметра гипотенузу нашего треугольника (дистанция, вычисленная на шаге 2) , а вторым параметром - изменение альтитуды самолета за интервал - altimeter.dt.
Примечание:
изменение значения любого ключа DeviceLink или глобальной переменной можно получить добавив к имени ключа или переменной суффикс .dt Для ключей так же можно пользоваться суффиксами .ds - изменение в секунду, и .dm - изменение в миллисекунду.
В строках 4 и 5 вычисляются (и накапливаются в соответствующих переменных) значения смещения самолета относительно первоначальной точки. При вычислениях используются функции sind() и cosd(), которые в отличии от стандартных тригонометрических функций принимают в качестве параметра величину угла в градусах, а не в радианах.
Если теперь при проигрывании трека (или просто во время игры) включить запись значений в лог файл, то потом можно будет использовать полученный csv файл для построения в MS Excel XY диаграммы полета для анализа. Вот, например, как автопилот провел самолет по кругу - взлет и затем посадка на тот же самый аэродром:


Или загрузить этот лог файл в UdpTrack (эта утилита еще в самом начале разработки) и посмотреть на траекторию со всех сторон с помощью OpenGL. На рисунке показана траектория взлета-посадки. Белый цвет - низкая скорость, красный - высокая.



Ну, или наиболее интересный вариант - это отображать вычисляемую траекторию на поверхности карты. Может быть для этого когда-нибудь появится UdpMap :)

В UdpGraph могут быть использованы следующие встроенные функции:
Тригонометрические: sin(), cos(), tan(), asin(), acos(), atan(), sinh(), cosh(), tanh() - принимают в качестве параметра угол в радианах. sind() и cosd() - угол в градусах.

Логарифмы и экспонента: log(), log2(), exp()

Взятие абсолютной величины: abs()

Степенные: sqrt(), pow(). Примечание: при вводе формул pow() можно заменять на знак возведения в степень '^'.

Функции для работы с прямоугольными треугольниками: hypot(sideA,sideB) - вычисление гипотенузы, side(hypot,side) - вычисление катета по длинам гипотенузы и другого катета. Эту формулу удобно использовать для расчета проекции траектории самолета на поверхность земли - первым параметром передается отрезок пути, а вторым - изменение альтитуды самолета.

Специальные функции:
  • cpu() - эта функция возвращает значение текущей загрузки процессора. Если она вызвана без параметров, то возвращает значение общей загрузки процессора. Можно в качестве параметра передать имя процесса - cpu(il2fb), тогда будет возвращаться значение загрузки процессора для этого процесса. Все это больше нужно было для отлатдки и большой точностью эти значения не отличаются.
  • tas() эта функция служит для расчета значения TAS и принимает четыре параметра: IAS (км/ч), высоту (м), давление воздуха (мм ртутного столба), температуру воздуха (С). Возвращаемое значение - TAS (м/сек).
  • tas2() эта функция также служит для расчета значения TAS но принимает два параметра: IAS(км/ч) и высоту (м). Возвращаемое значение - TAS (м/сек). Расчет ведется по упрощенной формуле TAS(м/сек)=IAS/3.6*(1+ALT/15000).
Дата последней модификации страницы 04/01/2011