SOS: вопросы по приборам на XML — Панели и приборы

Здравствуйте, уважаемые коллеги!

 

Есть такой вопрос:

В ГПК-48, при запуске полёта в 2D панели шкала прибора устанавливается левым краем по центру окна.

post-54262-0-09388200-1308313755_thumb.jpg

При этом в ВК шкала стоит примерно в положении 2*.

post-54262-0-86931800-1308313872_thumb.jpg

При включении электропитания шкала в 2D принимает такое же положение, что и шкала в ВК. Далее после включения собственного тумблера ГПК прибор работает нормально (после повторного отключения прибора и электропитания шкала отображается тоже нормально). В коде прибора ничего объясняющего такое поведение шкалы не нашел:

 

 

— <Gauge Name=»GPK-48″ Version=»1.0″>

<Image Name=»gpk_back.bmp» Luminous=»Yes» ImageSizes=»240,300,0,0″ />

— <Element>

— <MaskImage Name=»gpk_mask.bmp» ImageSizes=»240,300,0,0″>

<Axis X=»125″ Y=»69″ />

</MaskImage>

— <Image Name=»gpk_scale.bmp» Luminous=»Yes» ImageSizes=»1218,59,0,0″>

— <Nonlinearity>

<Item Value=»360″ X=»106″ Y=»0″ />

<Item Value=»180″ X=»610″ Y=»0″ />

</Nonlinearity>

</Image>

— <Failures>

<SYSTEM_ELECTRICAL_PANELS Action=»Freeze» />

</Failures>

— <Shift>

<Value>(L:GPK switch,bool) if{ (A:Plane heading degrees gyro,degrees) } els{ 0 }</Value>

</Shift>

</Element>

 

Пробовал удлиннить шкалу влево на 35-40* — Всё равно прибор ставит её левым краем в центр.

В аналогичном ГПК (например на Як-12) при запуске полёта шкалу видно полностью. Правда там нет отдельного включения прибора (Возможно, корень проблемы в этом?).

 

Вроде мелочь конечно и влияния на работу прибора не оказывает, но общее впечатление портится.

Не подскажете, как можно было бы исправить этот недостаток?


Edited by Kazachek

И будет выставлять, так как (смотрим код прибора) при выключенном питании ГПК шкала должна встать на 0, а этой величины в таблице нелинейности нет.

 

ИМХО, во избежание таких ошибок вначале пишем описание величины, по которой двигаем:

 

<Value>(L:GPK switch,bool) if{ (A:Plane heading degrees gyro,degrees) } els{ 0 }</Value>

 

А уже потом — таблицу нелинейности:

 

<Nonlinearity>

__<Item Value=»360″ X=»106″ Y=»0″ />

__<Item Value=»180″ X=»610″ Y=»0″ />

</Nonlinearity>

 

Все это должно быть окружено тегами выполнемого перемещения (в данном случае — сдвиг — shift ):

 

<Shift>

_<Value>(L:GPK switch,bool) if{ (A:Plane heading degrees gyro,degrees) } els{ 0 }</Value>

_<Nonlinearity>

___<Item Value=»360″ X=»106″ Y=»0″ />

___<Item Value=»180″ X=»610″ Y=»0″ />

___<Item Value=»0″ X=»…» Y=»0″ /> <— это надо вписать!

_</Nonlinearity>

</Shift>

 

Я бы сделал так, ИМХО…:umnik2:


Edited by Alexander Belov

Вот ведь выдал: Шкалу взялся удлиннять. Ну и методы…

 

…Я бы сделал так, ИМХО…:umnik2:

 

Александр, всё встало на свои места.

Благодарю Вас за отзывчивость и бесценный опыт, которым Вы так щедро делитесь!

Утилиту не подскажу, я просто после редактирования панели или XML прибора заново выбираю в меню сима тот же самолёт, он перезагружается уже со всеми изменениями. В fsx это происходит довольно быстро, а в 2004-м вообще моментально.

 

Можно на сочетание клавиш это дело вывести, там в меню настройки клавиатуры есть пункты «перезагрузка самолёта» и «перезагрузка сцены». При этом рекомендуется траффик отключать, если он этот самолёт или эти приборы задействует.

Уважаемые приборостроители.

Вот решил поделится с Вами своими наблюдениями.

Практически во всех приборах на XML обнаружил, что центр прибора берётся между пикселями.

Т. е. диаметр прибора, как правило чётное количество пиксель.

Не кажется ли Вам, что этим самым заведомо вводится погрешность в показаниях.

Указывая ось вращения, берутся координаты именно пикселя, а не промежутка между ними.

Тоже самое относится и к стрелкам.

Когда попробовал исправить это, приборы становятся намного «симпатичней».

И что самое главное. Нигде в «постулатах» на это не заостряется внимание.

Хотелось бы услышать Ваше мнение ???

Согласен с Вами, погрешность в показаниях будет.

 

Но она будет невелика. Пусть размер фоновой битмапки прибора составляет 300 — 400 пикселей. Да, есть приборы (кстати, это относится почти ко всем приборам дефолтных моделей), где размер фоновой битмапки меньше. Но работать с ними, считывая сколь-нибудь точные данные, нельзя. Такие приборы используются, скорее, для «ориентировки» в данных. Смещение стрелки на 0.5 пикселя даст погрешность менее четверти процента. Кроме того, нужно учитывать, что приборы в панелях практически всегда ставятся с сильным уменьшением. Например, при размере фона прибора в 300 пикселей, в панели он будет иметь видимый размер редко когда более 100 пикселей. В таких условиях «дробными частями пикселя», ИМХО, можно пренебречь.

В продолжении темы о XML приборах.

Извините. Может я повторюсь, но вразумительного ответа на мой вопрос я не нашёл.

Для редактирования XML кода приборов я использую редактор MSFS_ASMEditor.

Но в SDK по приборам присутствуют два файла-схем.

Наверно было бы удобно их использовать. Чтобы редактор сам предлагал

доступные атрибуты того или иного элемента.

Но к каким редакторам я не пробовал их подключить, у меня не получается.

(XML Notepad, XML Notepad 2007, Stylus Studio 2011).

Может кто-нибудь поделится своими знаниями и опытом по этому вопросу ?

Или посоветует более удобный программный продукт (кроме Блокнота) ?

ИМХО, UltraEdit — лучшее средство. Синтаксис он знает, теги контролирует, а все остальное зависит от программиста. И код компактнее, и разбираться легче — структурную схему нарисовал — и все понятно.

 

Вообще-то, «на вкус и цвет все фломастеры разные» © не мой.

 

Привычка, знаете ли, еще с ПиДиПоидов осталась…

ИМХО, UltraEdit — лучшее средство. Синтаксис он знает, теги контролирует, а все остальное зависит от программиста.

И код компактнее, и разбираться легче — структурную схему нарисовал — и все понятно.

 

Спасибо за совет Александр. Попробую.

А родной ACE чем плох?

А родной ACE чем плох?

Извините. Если можно поподробней. Что это за «зверь» ?

И где с ним можно познакомиться ?

 

UltraEdit v. 15.10.0.1031 поставил. Попробовал.

Может быть к нему надо привыкнуть.

Но мне пока, он показался уж слишком «навороченным».

 

А у меня пожелания совсем скромные.

Простой. Удобный для редактирования XML кода.

(кроме приборов есть ещё и сценарии)

С возможностью подключения стандартных файлов-схем от SDK,

для проверки правильности и подсказок возможностей.

Извините. Если можно поподробней. Что это за «зверь» ?

И где с ним можно познакомиться ?

Заглянуть в документацию к FSX SDK (вроде в 9ке его нету).

А у меня пожелания совсем скромные.

Простой. Удобный для редактирования XML кода.

(кроме приборов есть ещё и сценарии)

С возможностью подключения стандартных файлов-схем от SDK,

для проверки правильности и подсказок возможностей.

MS XML Notepad 2007

Заглянуть в документацию к FSX SDK (вроде в 9ке его нету).

 

MS XML Notepad 2007

Действительно. Мы наверное не поняли друг друга. Я использую MFS2004.

А Notepad 2007 не воспринимает файлы-схемы с расширениями *.xdr и *.dtd,

которые присутствуют в Panels_SDK MFS2004. Ему нужны файлы-схемы с

расширением *.xsd. Если я правильно понимаю — это более современные.

Странно. Столько уважаемых людей. Так долго делаются XML приборы.

Неужели никто не использует эти файла gauges.dtd и gauges.xdr ???

А рекомендованный Вами редактор от FSX будет их воспринимать ?

делаю прибор в хмл..: «температура воздуха в карбюраторе или температура карбюратора» битмап сделал расчитал координаты теперь пишу хмл…покажите где наити эту переменную в СДК?

спасибо!

делаю прибор в хмл..: «температура воздуха в карбюраторе или температура карбюратора» битмап сделал расчитал координаты теперь пишу хмл…покажите где наити эту переменную в СДК?

спасибо!

 

Panel SDK, файл Parameters.doc, раздел Aircraft Engine data — все они там.

спасибо за ответ нашел.

Первый прибор в моей кариере приборостроителя |)) ….прибор уже готовый…делал одну сутку..по мануалу александра вишнякова …больше всего мучился с битмапом..а так хмл написал за 5 минут (и это много)

прошу заценить битмап…и поправлять хмл если че не так…вечерком буду тестить прибор.

 

carbheat.png

 

 

<Gauge Name=»Carbtemp» Version=»2.0″>

<Image Name=»CARBHEAT.bmp»/>

 

<!— =======================Strelka s nizu========================== —>

<Element>

<Position X=»108″ Y=»151″/>

<Image Name=»carbheatind.bmp» PointsTo=»North»>

<Axis X=»198″ Y=»1274″/>

</Image>

<Rotate>

<Value Minimum=»-50″ Maximum=»50″>(A:RECIP CARBURETOR TEMPERATURE,celsius)</Value>

<Failures>

<SYSTEM_ELECTRICAL_PANELS Action=»-1″/>

</Failures>

<Nonlinearity>

<Item Value=»-50″ X=»350″ Y=»110″/>

<Item Value=»-40″ X=»333″ Y=»189″/>

<Item Value=»-30″ X=»303″ Y=»137″/>

<Item Value=»-20″ X=»270″ Y=»272″/>

<Item Value=»-10″ X=»257″ Y=»359″/>

<Item Value=»0″ X=»245″ Y=»449″/>

<Item Value=»10″ X=»249″ Y=»532″/>|

<Item Value=»20″ X=»267″ Y=»619″/>

<Item Value=»30″ X=»300″ Y=»702″/>

<Item Value=»40″ X=»328″ Y=»755″/>

<Item Value=»50″ X=»345″ Y=»780″/>

</Nonlinearity>

<Delay DegreesPerSecond=»25″/>

</Rotate>

</Element>

 

</Gauge>

исправил строку…(A:RECIP CARBURETOR TEMPERATURE,celsius)нa (A:Eng1 recip carburetor temperature,celsius) но всеравно сим не читает переменную….я уверен что неправильно пишу…

 

 

ради интереса поменял переменную ..работает но глючно …залил фаилы битмапов и хмл ..посмотрите пожалуйста что я не так сделал…благодарю

 

http://www.2shared.com/file/Q2CwM8qj/New_Folder.html

 

думаю проблема в масштабности битмапов..


Edited by JeKKa3XX

Может проще подсмотреть?

 

post-56751-0-59594900-1311691760_thumb.jpg

исправил строку…(A:RECIP CARBURETOR TEMPERATURE,celsius)нa (A:Eng1 recip carburetor temperature,celsius) но всеравно сим не читает переменную….я уверен что неправильно пишу…

 

 

ради интереса поменял переменную ..работает но глючно …залил фаилы битмапов и хмл ..посмотрите пожалуйста что я не так сделал…благодарю

 

http://www.2shared.c…New_Folder.html

 

думаю проблема в масштабности битмапов..

 

А почему в примере из архива использована переменная (A:Eng1 manifold pressure,inHg)? Что мы меряем-то? Наддув?

А почему в примере из архива использована переменная (A:Eng1 manifold pressure,inHg)?

 

сим не читает переменную….я уверен что неправильно пишу…

 

 

ради интереса поменял переменную ..работает но глючно

 

на примере прибора Як-а 12-ого понял..спасибо…а можете мне пояснить как задавать направление стрелки с помощью градусов вместо координат?

И еще вопрос…когда масштабирую прибор сделанный мною ,в фспанел координаты меняются и он не правильно работает…что с другими не происходит..что я не так делаю?

спасибо всем кто помогает)

Если стрелка нарисована вертикально, то это для нее 0 градусов, соответственно для прибора подобного измерителю температуры карбюратора -30..40 будет крайне левым положением и +30..40 правым, значения углов можно померять в фотожопе при помощи инструмента «линейка» и еще, значения задавать в порядке по часовой стрелке, даже если сам прибор показывает их против часовой, иначе стрелка будет просто крутиться.

Сам я ФСпанелом не пользуюсь, мне вполне хватает линеек фотожопа и блокнота для расстановки приборов на панели

..посмотрите пожалуйста что я не так сделал…

 

Что сделано не так: ( могу ошибаться, если что поправьте пожалуйста)

За Value уже было сказано. Размеры битмапов: ну очень уж большие…

Для стрелки прибора: Position X, Y — это координаты её центра вращения на CARBHEAT.bmp ( у Вас это что-то другое), Axis X, Y — координаты оси вращения на самой стрелке.

И без Luminous не будет подсветки.

post-56751-0-50918600-1311787014_thumb.jpg


Edited by DT-75

спасибо за столь подробный ответ…по тихоньку осваиваю…как я понял он у вас заработал? можете залить или скинуть на мыло…

буду весьма благодарен…спасибо!

 

iudjin.total90@gmail.com


Edited by JeKKa3XX

Подскажите, пожалуйста, как обойти проблему с некорректно работающей глобальной переменной TIME OF DAY. Вместо заявленных

TIME OF DAY General time of day (enum: 1=Day, 2=Dusk/Dawn, 3=Night) . Выдаёт всегда 1, ночью 3. Двойки нет… Как результат приведённая ниже конструкция правильно работает только днём и ночью. В сумерках при включении освещения подсвечивается дневная текстура.

 

<Gauge Name=»A_340_SmallOverheadl» Version=»1.0″>

<Element>

<Select>

<Value>(A:LIGHT PANEL,bool) 1 == (E:TIME OF DAY,enum) 1 != and</Value>

<Case Value=»0″>

<Image Name=»electro_day.bmp» ImageSizes=»1600,108,1600,108″/>

</Case>

<Case Value=»1″>

<Image Name=»electro_night.bmp» ImageSizes=»1600,108,1600,108″/>

</Case>

</Select>

</Element>

 

А может кто знает какая L: у Вилки в Айрбасах используется для блокирования загрузки ночных текстур панели днём?


Edited by AndrewAE

Л-переменную выскрести из модели вы не сможете.