Каким образом в XML можно задать «и, или»? Хочу сделать чтобы звук проигрывался если давление bleed air возрастает в любом из двух двигателей, но звук проигрывается только если возрастает давление в ENG2. Где я допустил ошибку?
Спасибо автору за прибор, подскажите есть ли у кого после прописки в конфиге панели вылеты из FS Panel Studio при открытии секции в которой прописали прибор?
Edited by DT-75
Bor1
10.12.2010 в 18:08
DT-75, попробую проверить. Правда я никогда не работал с Panel Studo. Какая у вас версия и в какой момент происходит выброс исключения?
DT-75182
10.12.2010 в 18:47
DT-75, попробую проверить. Правда я никогда не работал с Panel Studo. Какая у вас версия и в какой момент происходит выброс исключения?
Выброс происходит при попытке открыть ту секцию, где прописан прибор, например в Ту-144 это [Vcockpit01], но ничего страшного, другие открываются нормально, версия Panel Studo 1.2; XSS-1.0
Вообще сначала показалось не сложно, озвучить тумблер просто, но уже на радиовысотомере … пока не получается в XML в правильном месте поставить правильную строчку.
Edited by DT-75
Bor1
10.12.2010 в 20:03
Вообще сначала показалось не сложно, озвучить тумблер просто, но уже на радиовысотомере … пока не получается в XML в правильном месте поставить правильную строчку.
А, что вы конкретно хотите? Чтобы зачитывалась высота? Дайте ваш кусок кода для затравки.
Edited by Bor
DT-75182
10.12.2010 в 20:46
А, что вы конкретно хотите? Чтобы зачитывалась высота? Дайте ваш кусок кода для затравки.
Радиовысотомер РВ-5 от SCS Ту-134, прикручен к Ан-24, при включении уходит бланкер (rv_blanker.bmp), должен подаваться сигнал 400гц в течении 3-5 сек. и загорается жёлтая лампа (rv_lamp.bmp), при снижении на установленной в нём высоте (зелёный треугольник rv_des.bmp) также должен звучать сигнал и горит лампа.
Ну тут можно оптимизировать, чтобы дважды на стек не класть RV_POWER можно или сразу это условие обрабатывать,
или дублировать его значение на стеке, я просто в симовском ХМЛ не силен.
Далее, в файле который вы привели, необходимо выполнять обработку некоторых условий, я сильно не вникал в тот код,
предлагаю алгоритм:
завести флаг взведенного высотомера L:RV_ARMED, bool сперва он false.
И такой код:
-если высотомер включен и флаг не взведен и высота больше Decision height + еще метров 10-15, взвести флаг (10-15 метров или футов обеспечивают петлю гистерезиса);
-если высотомер включен и флаг взведен и высота меньше Decision height, выставить сигнал RV_SOUND, сбросить флаг, выставить сигнал лампы
Ну это так приблизительно. Код по идее должен быть такой:
это первый шаг, ну тут я мог перепутать местами (надо СДК смотреть) (A:Radio height, meters) (A:Decision height, meters), что там со стеком и как проверяется.
Ещё вопрос: есть лапма сигнализации SSOS, срабатывает при крутом снижении (более 7 м/с ниже ВПР, установленной радиовысотомером), есть звук с названием «SSOS» и строка, которую нужно изменить, чтобы одновременно с загоранием лампы звучал сигнал.
Подскажите пожалуйста, как должна выглядеть эта строка, чтобы всё заработало?
Edited by DT-75
Bor1
30.12.2010 в 07:35
Ещё вопрос: есть лапма сигнализации SSOS, срабатывает при крутом снижении (более 7 м/с ниже ВПР, установленной радиовысотомером), есть звук с названием «SSOS» и строка, которую нужно изменить, чтобы одновременно с загоранием лампы звучал сигнал.
Подскажите пожалуйста, как должна выглядеть эта строка, чтобы всё заработало?
Ну наверное так… Опять делаем или берем незацикленный звук. А потом просто получившийся результат загоняете в звуковую переменную и все:
(>L:ALARM_SOUND, bool)
konsni548
03.02.2011 в 19:30
Скажите, а не планируется ли адаптация XSS для работы в Flight Simulator X?
BM_906131
10.02.2011 в 17:21
У меня тоже проблема с вылетом из ФС панель студио…и симулятор отказывается грузить модель с прописанным в панели прибором а мне очень бы хотелось пошаманить с озвучкой некоторых агрегатов… в чем может быть проблема? подскажите если не сложно!
С Уважением Константин
Рюрикович-1540
27.02.2011 в 03:20
Вот есть у меня код на HML какую строчку можно добавить, что бы раздавался щелчек тумблера?
1) Используя библиотеку XSS версии 1.0.0, всё работает нормально. При опции Reset «true» воспроизведение остановить нельзя, оно прекратится только после полного проигрывания; при «false» — звук остановить можно.
2) Используя библиотеку XSS версии 1.2.0, звук упорно не хочет останавливаться пока не проиграет до конца. Установка опции Reset в true/false не даёт изменений.
В связи с результатом по п.2, вопрос — что делаю не так? Может есть hidden опция в cfg, которая разблокировывает ручную остановку звука?
Bor1
01.02.2012 в 04:29
Так, почитал я свои комментарии к этой версии. Скажите пожалуйста, Lavrik, в этом звуковом файле «sound_1» есть семплы? Если нет семплов, то, звук автоматически считается однократно проигрываемым.
Вот что у меня в коде, я наверное забыл указать это в сопроводиловке:
// определяется режим автосброса XML переменной (Reset=true/false;),
// если семплов нет, то переменная должна сбрасываться,
// так-как она не проигрывается циклически
// теперь в конфигурационном файле нет необходимости
// определять опцию Reset=... , но для совместимости
// она оставлена как незначащая.
Я исходил из того, что зацикленный звук имеет семплы и им нужно управлять, если звук семплов не имеет, то он не управляется и проигрывается только один раз и все, опция Reset в версии 1.2.0 не имеет смысла.
Решение: зациклите звук семплами и он станет управляемым
Edited by Bor
BG12341
01.03.2016 в 21:06
Что то не могу сделать ,уже голова кругом, Прошу помощи . Взял за основу от ту-144 . Короче всё щёлкает и переключается, звук есть, но проблема появилась, что дёйствие думплера пропало . Тоесть у меня думплер автомата тяги. Если его включать (звук есть) , но не стала включаться кнопка скорости . Кнопка скорости и думплер тяги работают вместе. вот начальная XML — ка думплера
:clapping: классно, тоже работает ! Вопрос такого типа — вот для кнопки мыши такой код — <Cursor Type=»Hand»/> Для ролика мыши такой — <Cursor Type=»DownArrow»/> или так — <Cursor Type=»UpArrow»/> А вот какой код у кнопки клавиатуры , или у кнопки джостика ?
Доброго времни суток!
Каким образом в XML можно задать «и, или»? Хочу сделать чтобы звук проигрывался если давление bleed air возрастает в любом из двух двигателей, но звук проигрывается только если возрастает давление в ENG2. Где я допустил ошибку?
<Value>(A:TURB ENG1 BLEED AIR, psi) 35 == (A:TURB ENG2 BLEED AIR, psi) 35 < if{ 0 (>L:PACKS_SOUND,bool) } els{ 1 (>L:PACKS_SOUND,bool) }</Value>Спасибо!
Edited by Bombaklat
<Value>(A:TURB ENG1 BLEED AIR, psi) 35 < (A:TURB ENG2 BLEED AIR, psi) 35 < && if{ 0 (>L:PACKS_SOUND,bool) } els{ 1 (>L:PACKS_SOUND,bool) }</Value>
Спасибо!
Да, так и читаю строку дополнительных параметров:
void FSAPI cbf_sound_engine( PGAUGEHDR pgauge, SINT32 service_id, UINT32 extra_data) { switch( service_id ) { case PANEL_SERVICE_PRE_INSTALL: break; case PANEL_SERVICE_CONNECT_TO_WINDOW: break; case PANEL_SERVICE_POST_INSTALL: InitSoundEngine(pgauge->parameters); break; case PANEL_SERVICE_PRE_KILL: UninitSoundEngine(); break; case PANEL_SERVICE_PRE_UPDATE: if( g_pXMLSoundServer ) g_pXMLSoundServer->Process(); break; case PANEL_SERVICE_POST_UPDATE: break; case PANEL_SERVICE_PRE_DRAW: break; case PANEL_SERVICE_POST_DRAW: break; } }а еще согласно SDK ее можно тут взять:
typedef struct GAUGEHDR { UINT32 gauge_header_version; char *gauge_name; PPELEMENT_HEADER elements_list; PQUERY_ROUTINE query_routine; PINSTALL_ROUTINE install_routine; PINITIALIZE_ROUTINE initialize_routine; PUPDATE_ROUTINE update_routine; PGENERATE_ROUTINE generate_routine; PDRAW_ROUTINE draw_routine; PKILL_ROUTINE kill_routine; char reserved_1[4]; UINT32 size_x_mm; char reserved_2[40]; PMOUSERECT mouse_rect; PGAUGE_CALLBACK gauge_callback; UINT32 user_data; PVOID parameters; char* usage; char reserved_3[16]; } GAUGEHDR, *PGAUGEHDR, **PPGAUGEHDR;Edited by Bor
Спасибо автору за прибор, подскажите есть ли у кого после прописки в конфиге панели вылеты из FS Panel Studio при открытии секции в которой прописали прибор?
Edited by DT-75
DT-75, попробую проверить. Правда я никогда не работал с Panel Studo. Какая у вас версия и в какой момент происходит выброс исключения?
Выброс происходит при попытке открыть ту секцию, где прописан прибор, например в Ту-144 это [Vcockpit01], но ничего страшного, другие открываются нормально, версия Panel Studo 1.2; XSS-1.0
Вообще сначала показалось не сложно, озвучить тумблер просто, но уже на радиовысотомере … пока не получается в XML в правильном месте поставить правильную строчку.
Edited by DT-75
А, что вы конкретно хотите? Чтобы зачитывалась высота? Дайте ваш кусок кода для затравки.
Edited by Bor
Радиовысотомер РВ-5 от SCS Ту-134, прикручен к Ан-24, при включении уходит бланкер (rv_blanker.bmp), должен подаваться сигнал 400гц в течении 3-5 сек. и загорается жёлтая лампа (rv_lamp.bmp), при снижении на установленной в нём высоте (зелёный треугольник rv_des.bmp) также должен звучать сигнал и горит лампа.
<Gauge Name=»A-037″ Version=»1.0″>
<Image Name=»rv_back.bmp» Luminous=»Yes» ImageSizes=»220,220,0,0″/>
<Element>
<Position X=»110″ Y=»110″/>
<Image Name=»rv_needle.bmp» Luminous=»Yes» ImageSizes=»27,99,0,0″>
<Axis X=»14″ Y=»85″ PointsTo=»East»/>
</Image>
<Rotate>
<Value Minimum=»0″ Maximum=»800″>(L:RV power,bool) if{ (G:Var1) if{ 15 } els{ (A:Radio height, meters) 3 — } } els{ 0 }</Value>
<Nonlinearity>
<Item Value=»0″ Degrees=»0″/>
<Item Value=»20″ Degrees=»31″/>
<Item Value=»40″ Degrees=»62″/>
<Item Value=»60″ Degrees=»93″/>
<Item Value=»80″ Degrees=»126″/>
<Item Value=»100″ Degrees=»159″/>
<Item Value=»300″ Degrees=»208″/>
<Item Value=»500″ Degrees=»255″/>
<Item Value=»700″ Degrees=»303″/>
</Nonlinearity>
<Delay DegreesPerSecond=»90″/>
<Failures>
<SYSTEM_ELECTRICAL_AVIONICS Action=»Freeze»/>
</Failures>
</Rotate>
</Element>
<Element>
<Position X=»159″ Y=»33″/>
<Image Name=»rv_blanker.bmp» Luminous=»Yes» ImageSizes=»42,62,0,0″>
<Axis X=»0″ Y=»0″/>
</Image>
<Rotate>
<Value>(A:Radio height, meters) 4000 > (L:RV power, bool) ! ||</Value>
<Nonlinearity>
<Item Value=»0″ Degrees=»-29″/>
<Item Value=»1″ Degrees=»0″/>
</Nonlinearity>
<Delay DegreesPerSecond=»120″/>
</Rotate>
</Element>
<Element>
<Position X=»0″ Y=»0″/>
<Image Name=»rv_upper.bmp» ImageSizes=»220,220,0,0″/>
</Element>
<Element>
<Position X=»110″ Y=»110″/>
<Image Name=»rv_des.bmp» Bright=»Yes» ImageSizes=»16,91,0,0″>
<Axis X=»8″ Y=»91″/>
</Image>
<Rotate>
<Value Minimum=»0″ Maximum=»700″>(A:Decision height, meters)</Value>
<Nonlinearity>
<Item Value=»0″ Degrees=»0″/>
<Item Value=»20″ Degrees=»31″/>
<Item Value=»40″ Degrees=»62″/>
<Item Value=»60″ Degrees=»93″/>
<Item Value=»80″ Degrees=»126″/>
<Item Value=»100″ Degrees=»159″/>
<Item Value=»300″ Degrees=»208″/>
<Item Value=»500″ Degrees=»255″/>
<Item Value=»700″ Degrees=»303″/>
</Nonlinearity>
<Delay DegreesPerSecond=»90″/>
</Rotate>
</Element>
<Element>
<Position X=»182″ Y=»181″/>
<Select>
<Value>(L:RV power, bool) if{ (A:Decision height, meters) (A:Radio height, meters) > (G:Var1) || } els{ 0 } </Value>
<Case Value=»1″>
<Image Name=»rv_lamp.bmp» Bright=»Yes» ImageSizes=»24,24,0,0″/>
</Case>
</Select>
</Element>
<Element>
<Position X=»194″ Y=»193″/>
<Image Name=»rv_triangle.bmp» ImageSizes=»24,24,0,0″>
<Axis X=»12″ Y=»12″/>
</Image>
<Rotate>
<Value Minimum=»0″ Maximum=»700″>(A:Decision height, meters) 10 /</Value>
</Rotate>
</Element>
<Mouse>
<Area Left=»15″ Top=»187″ Width=»16″ Height=»16″>
<Cursor Type=»Hand»/>
<Click Kind=»LeftSingle+LeftRelease+Leave»>
(M:Event) ‘LeftSingle’ scmp 0 == if{ 1 (>G:Var1) }
(M:Event) ‘LeftRelease’ scmp 0 == if{ 0 (>G:Var1) }
(M:Event) ‘Leave’ scmp 0 == if{ 0 (>G:Var1) }
</Click>
</Area>
<Area Left=»195″ Top=»181″ Width=»15″ Height=»30″>
<Tooltip>VPR %( (A:Decision height, meters) )%!d!</Tooltip>
<Cursor Type=»UpArrow»/>
<Click Repeat=»Yes»>(A:Decision height, meters) 700 < if{ 0 (>K:INCREASE_DECISION_HEIGHT) }</Click>
</Area>
<Area Left=»180″ Top=»181″ Width=»15″ Height=»30″>
<Tooltip>VPR %( (A:Decision height, meters) )%!d!</Tooltip>
<Cursor Type=»DownArrow»/>
<Click Repeat=»Yes»>(A:Decision height, meters) 0 > if{ 0 (>K:DECREASE_DECISION_HEIGHT) }</Click>
</Area>
</Mouse>
</Gauge>
Edited by DT-75
Ну сделайте гудок, или возьмите где нибудь гудок 400 Гц и нужной длительности. Не зацикливайте его.
Там где у вас озвучка тумблера при включении высотомера поставьте его включение:
<Click>(L:RV power, bool) ! (>L:RV power, bool) 1 (>L:TOGGLE_SOUND,bool) (L:RV power, bool) if{ 1 (>L:RV_SOUND,bool) } </Click>Ну тут можно оптимизировать, чтобы дважды на стек не класть RV_POWER можно или сразу это условие обрабатывать,
или дублировать его значение на стеке, я просто в симовском ХМЛ не силен.
Далее, в файле который вы привели, необходимо выполнять обработку некоторых условий, я сильно не вникал в тот код,
предлагаю алгоритм:
завести флаг взведенного высотомера L:RV_ARMED, bool сперва он false.
И такой код:
-если высотомер включен и флаг не взведен и высота больше Decision height + еще метров 10-15, взвести флаг (10-15 метров или футов обеспечивают петлю гистерезиса);
-если высотомер включен и флаг взведен и высота меньше Decision height, выставить сигнал RV_SOUND, сбросить флаг, выставить сигнал лампы
Ну это так приблизительно. Код по идее должен быть такой:
<Value> (L:RV power, bool) (A:Radio height, meters) (A:Decision height, meters) 10 + > (L:RV_ARMED, bool) ! && && if{1 (>L:RV_ARMED,bool)} </Value>это первый шаг, ну тут я мог перепутать местами (надо СДК смотреть) (A:Radio height, meters) (A:Decision height, meters), что там со стеком и как проверяется.
<Value> (L:RV power, bool) (A:Radio height, meters) (A:Decision height, meters) < (L:RV_ARMED, bool) ! && && if{1 (>L:RV_SOUND,bool) 0 (>L:RV_ARMED,bool)} </Value>Где то так, код не проверял.
Edited by Bor
Ещё вопрос: есть лапма сигнализации SSOS, срабатывает при крутом снижении (более 7 м/с ниже ВПР, установленной радиовысотомером), есть звук с названием «SSOS» и строка, которую нужно изменить, чтобы одновременно с загоранием лампы звучал сигнал.
<Value>(L:RV power, bool) (A:Circuit general panel on, bool) if{ (L:AnnCheck,bool) (A:Decision height, feet) (A:Radio height, feet) > (A:Radio height, feet) 100 < || (A:Vertical speed,feet per minute) -1400 < && ||}</Value>
Подскажите пожалуйста, как должна выглядеть эта строка, чтобы всё заработало?
Edited by DT-75
Ну наверное так… Опять делаем или берем незацикленный звук. А потом просто получившийся результат загоняете в звуковую переменную и все:
Скажите, а не планируется ли адаптация XSS для работы в Flight Simulator X?
У меня тоже проблема с вылетом из ФС панель студио…и симулятор отказывается грузить модель с прописанным в панели прибором
а мне очень бы хотелось пошаманить с озвучкой некоторых агрегатов… в чем может быть проблема? подскажите если не сложно!
С Уважением Константин
Вот есть у меня код на HML какую строчку можно добавить, что бы раздавался щелчек тумблера?
<Element>
<Visible>(L:SYSTEM_POWER,bool)</Visible>
<Select>
<Value>(L:ENG_2_BLEED_VALVE,bool)</Value>
<Case Value=»0″>
<Image Name=»onn2.bmp» Bright=»Yes»/>
</Case>
</Select>
</Element>
<Mouse>
<Tooltip>ENG 2 BLEED VALVE</Tooltip>
<Cursor Type=»Hand»/>
<Click>8 (>L:tu124_schelc.waw) (L:ENG_2_BLEED_VALVE,bool) ! (>L:ENG_2_BLEED_VALVE,bool)</Click>
</Mouse>
</Gauge>
Звук находится в папке programm files/msfs2004/sound/tu124/schelc.waw
помогите сделать звук всу на ил-76 Варнавского!
Вам сюда
http://www.avsimrus….39#entry1713839
Есть такой код:
// инициализация m_xml_var_unit = get_units_enum("BOOL"); m_xml_var_id = register_named_variable("sound_1"); ... // воспроизведение звука по нажатию кнопки №1 set_named_variable_typed_value(m_xml_var_id, 1, m_xml_var_unit); ... // остановка звука по нажатию кнопки №2 set_named_variable_typed_value(m_xml_var_id, 0, m_xml_var_unit);Звук незацикленный.
Результат:
1) Используя библиотеку XSS версии 1.0.0, всё работает нормально. При опции Reset «true» воспроизведение остановить нельзя, оно прекратится только после полного проигрывания; при «false» — звук остановить можно.
2) Используя библиотеку XSS версии 1.2.0, звук упорно не хочет останавливаться пока не проиграет до конца. Установка опции Reset в true/false не даёт изменений.
В связи с результатом по п.2, вопрос — что делаю не так? Может есть hidden опция в cfg, которая разблокировывает ручную остановку звука?
Так, почитал я свои комментарии к этой версии. Скажите пожалуйста, Lavrik, в этом звуковом файле «sound_1» есть семплы? Если нет семплов, то, звук автоматически считается однократно проигрываемым.
Вот что у меня в коде, я наверное забыл указать это в сопроводиловке:
Я исходил из того, что зацикленный звук имеет семплы и им нужно управлять, если звук семплов не имеет, то он не управляется и проигрывается только один раз и все, опция Reset в версии 1.2.0 не имеет смысла.
Решение: зациклите звук семплами и он станет управляемым
Edited by Bor
Что то не могу сделать ,уже голова кругом, Прошу помощи .
Взял за основу от ту-144 . Короче всё щёлкает и переключается, звук есть, но проблема появилась, что дёйствие думплера пропало . Тоесть у меня думплер автомата тяги. Если его включать (звук есть) , но не стала включаться кнопка скорости .
Кнопка скорости и думплер тяги работают вместе.
вот начальная XML — ка думплера
*********************************************здесь всё работает
терерь я делаю так
**********************************всё ,кнопка скорости тут уже не работает .
сама XLM от кнопки скорости такая
Может кто то поможет, за ранее спасибо .
Edited by BG1234
Конечно, у вас же тут самого ивента на переключение нет, а в первом и последнем есть.
Могли бы вы по конкретнее показать, что как прописать ?
нашёл решение, работает на 100% , и звук есть и действие осталось !)) :dance4:
Всё гораздо проще:
<Click>0 (>K:AUTO_THROTTLE_ARM) 1 (>L:Il-96_tumbler,number)</Click>
:clapping: классно, тоже работает !
Вопрос такого типа — вот для кнопки мыши такой код — <Cursor Type=»Hand»/>
Для ролика мыши такой — <Cursor Type=»DownArrow»/> или так — <Cursor Type=»UpArrow»/>
А вот какой код у кнопки клавиатуры , или у кнопки джостика ?