Jump to content

Bor

Members
  • Content Count

    239
  • Joined

  • Last visited

Community Reputation

1 Нейтральная

About Bor

  • Rank
    Продвинутый

Дополнительная информация

  • Место в рейтинге
    5659

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Есть че поделать? А то у меня сублимация....Хочется ченить пописать...
  2. Может у кого нибудь остались ссылки на эти фонты?
  3. Я немного почитал сообщения выше - по поводу нескольких проигрываемых одновременно звуков: могут проигрываться одновременно несколько звуков, но они должны быть на разных каналах! На каждом канале свой звук.
  4. Приборы на ХМЛ это не мое, мое это приборы на Си. Мне кажется, что это очень трудно реализовать достойно авиационные системы только при помощи ХМЛ. А вам могу посоветовать вычислять логическое условие при котором возможен запуск ВСУ, с учетом всего, и выставлять в 1 признак того, что оно работает и этот же признак кидать в звуковую переменную. Кстати, код ХМЛ, для работы со стеком сильно напоминает Forth http://ru.wikipedia.org/wiki/Forth.
  5. Минимальный xss.cfg файл для вашего случая с одним звуком тумблера: [Options] [sounds] // Тумблер TOGGLE_SOUND { soundFile = "switch.wav"; Volume = -50; Reset = true; } Звуки прописываются в секции [sound] Прописан один звук находящийся в файле switch.wav, имя XML переменной, за которой будет следить сервер - TOGGLE_SOUND. Громкость: '-50', для справки '0' - самый громкий, '-10000' - самый тихий. Опция Reset = true говорит о том, что звук проиграется один раз после того, как вы установите переменную TOGGLE_SOUND в '1', в момент проигрывания эта переменная автоматически установится в '0'. Далее привожу XML файл прибора использующий тумблер со звуком, самый небольшой accu1_sw.xml, в Panel.cfg он прописан так: gauge13=An-24!accu1_sw, 24,41,8,50 Текст прибора: <Gauge Name="ACCU1_SW" Version="1.0"> <Element> <Select> <Value>(L:ACCU1_SW,bool)</Value> <Case Value="0"> <Image Name="sw_nd.bmp"/> </Case> <Case Value="1"> <Image Name="sw_nu.bmp"/> </Case> </Select> </Element> <Mouse> <Cursor Type="Hand"/> <Click> (L:ACCU1_SW,bool) ! (>L:ACCU1_SW,bool) 1 (>L:TOGGLE_SOUND,bool) </Click> </Mouse> </Gauge> XML переменная, которая не относится к звуку, а хранит положение выключателя аккумулятора (всего два положения) имеет имя 'ACCU1_SW' Картинки, которые опять же не имеют к xss серверу никакого отношения, имеют имя 'sw_nd.bm' для изображения тумблера в нижнем положении и 'sw_nu.bmp' для изображения тумблера в верхнем положении. Реакция на мышь описана в между тегами <Mouse> и </Mouse> <Mouse> <Cursor Type="Hand"/> <Click> (L:ACCU1_SW,bool) ! (>L:ACCU1_SW,bool) 1 (>L:TOGGLE_SOUND,bool) </Click> </Mouse> если бы нам не был нужен звук, то реакция описывалась бы еще проще, вот так: <Mouse> <Cursor Type="Hand"/> <Click> (L:ACCU1_SW,bool) ! (>L:ACCU1_SW,bool) </Click> </Mouse> то есть, кладем на стек переменную 'ACCU1_SW' (L:ACCU1_SW,bool) инвертируем ее: ! снимаем значение со стека обратно в переменную 'ACCU1_SW': (>L:ACCU1_SW,bool) но так как нам еще нужно при любом переключении тумблера установить звуковую переменную в '1', то код слегка дополняется: 1 (>L:TOGGLE_SOUND,bool) то есть, мы кладем на стек '1' и записываем это значение в переменную 'TOGGLE_SOUND' После чего в соответствии с тегами <Element>, <Case>, <Image> перерисовывается тумблер, а звуковой сервер проиграет файл 'switch.wav' с которым ассоциирована переменная 'TOGGLE_SOUND'.
  6. Многие используют, в частности проект Ту-144. Некоторые разрабатываемые проекты. Тумблеры, инверторы, ВСУ, озвучивают вроде бы без особых проблем. Вы поконкретнее, что именно не получается, в каком месте? Я так понимаю, основная проблема это использование скриптов ХМЛ в симе.
  7. Да отследить мимо сервера нельзя, он пока не выдает наружу служебную информацию. Над расширением надо подумать, хорошо бы в ХМЛ оставить только одну переменную, но на чтение выдавать значение одной внутренней переменной (играет не играет и может еще ченить) , а при установке изменять значение другой внутренней переменной.
  8. Вообще первоначальная идея была дать сишным программерам библиотеку для работы с амбиент звуками, там разумеется предусмотрена возможность полного контроля за состоянием звука, но потом как-то более общий метод через ХМЛ переменные одержал победу. Переменной - флага, проигрывается звук или нет, действительно не хватает, не вводил по простой причине - оптимизация производительности. К сожалению оч. мало времени на толковое обдумывание и кодирование.
  9. Ну в моей терминологии - если звук имеет семплы (зациклен), то он становится управляемым то есть его можно остановить, запустить. Если звук не имеет семплов (незацикленный), то управлять им нельзя, он проигрывается один раз и все. Ну вернуть то опцию можно, это не проблема, главное логически обосновать это решение. Вот вы записали звук, в нем пара фраз, если его остановить посередине, то получится, что тому кто их произносил как-бы "заткнули рот" на полуслове. Хотя конечно можно плавное этот звук фейдить. Я подумаю. Принимаю разумную аргументацию.
  10. Так, почитал я свои комментарии к этой версии. Скажите пожалуйста, Lavrik, в этом звуковом файле "sound_1" есть семплы? Если нет семплов, то, звук автоматически считается однократно проигрываемым. Вот что у меня в коде, я наверное забыл указать это в сопроводиловке: // определяется режим автосброса XML переменной (Reset=true/false;), // если семплов нет, то переменная должна сбрасываться, // так-как она не проигрывается циклически // теперь в конфигурационном файле нет необходимости // определять опцию Reset=... , но для совместимости // она оставлена как незначащая. Я исходил из того, что зацикленный звук имеет семплы и им нужно управлять, если звук семплов не имеет, то он не управляется и проигрывается только один раз и все, опция Reset в версии 1.2.0 не имеет смысла. Решение: зациклите звук семплами и он станет управляемым
  11. Ну наверное так... Опять делаем или берем незацикленный звук. А потом просто получившийся результат загоняете в звуковую переменную и все: (>L:ALARM_SOUND, bool)
  12. Ну сделайте гудок, или возьмите где нибудь гудок 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> Где то так, код не проверял.
  13. А, что вы конкретно хотите? Чтобы зачитывалась высота? Дайте ваш кусок кода для затравки.
×
×
  • Create New...