Автор | Сообщение |
|
Отправлено: 13.07.11 12:47. Заголовок: Конгресс-система Bosch DCN
Кто-нибудь встречал модуль или протокол управления?
|
|
|
Ответов - 111
, стр:
1
2
3
4
5
6
All
[только новые]
|
|
|
Отправлено: 29.07.15 08:23. Заголовок: BOSCH DCN CCU2 Коман..
BOSCH DCN CCU2 Команда включения микрофона председателя под номером 513: цитата: | \x03\x22\x00\x43\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x01\x02\x01 |
| К сожалению, иного пути, кроме как подключиться напрямую к CCU2 по Ethernet, отправить через CCU_DDTK команду включения и выключения председательского пульта и просмотреть через Wireshark десяток посылок, -- не нашлось.
|
|
|
|
Отправлено: 23.08.15 16:45. Заголовок: Появился еще вопрос:..
Появился еще вопрос: совместим ли модуль управления, представленный на сайте applicationmarket.crestron.com с контроллерами третьей серии?
|
|
|
|
Отправлено: 23.08.15 17:38. Заголовок: ph1l74, вполне сносн..
ph1l74, вполне сносно работало с CP3. Ничто не мешает открыть модуль и перекомпилировать его.
|
|
|
|
Отправлено: 23.08.15 23:25. Заголовок: Igor Игорь спасибо,..
Igor Игорь спасибо, небольшие трудности возникли. Уже все в порядке.
|
|
|
|
Отправлено: 02.09.15 16:43. Заголовок: Подскажите, какова с..
Подскажите, какова ситуация с пультами переводчиков в ccu2? Протокол обмена у них аналогичен пультам делегатов или опять специфичный как у пультов председателя? (нужно будет лишь статус активен или не активен)
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 03.09.15 14:45. Заголовок: Вячеслав, зачем вам ..
Вячеслав, зачем вам управление пультами переводчиков?
|
|
|
|
Отправлено: 04.09.15 17:21. Заголовок: Мне нужен пока тольк..
Мне нужен пока только статус активен или нет.
|
|
|
|
Отправлено: 27.10.15 15:27. Заголовок: Bosch DCN CCU2 Replace Notification
Добрый день, Появился интересный вопрос: а как считать статус того, что микрофон заменен (режим Override)? В протоколе есть команда MM_C_SPK_REPLACE_ON_PC, но что-то она не ловится. Пакет получился следующим для второго микрофона (ID 512): \x05,\x11,\x00,\x43,\x14,\x00,\x00,\x00,\x00,\x00,\x00,\x00,\x00,\x00,\x00,\x00,\x11,\x00,\x02,\x00 Дело в том, что статус микрофона при его замещении не меняется, то есть он отображается включенным даже если был замещен.
|
|
|
|
Отправлено: 30.11.15 02:28. Заголовок: ?
Неужели так и не победили управление председателем (председателями - их может быть в CCU2 больше чем один)?
|
|
|
|
Отправлено: 16.12.15 07:55. Заголовок: woody_mc пишет: Неу..
woody_mc пишет: цитата: | Неужели так и не победили управление председателем (председателями - их может быть в CCU2 больше чем один)? |
| Победили, решение просто тут не опубликовали. Может, позже расскажу.
|
|
|
|
Отправлено: 16.12.15 10:12. Заголовок: Если разобрать *.usp..
Если разобрать *.usp-файл модуля управления Bosh, то можно заметить, как формируется посылка: цитата: | String_Function DCN_Send(string Send_Cmd, string Send_HiByte, string Send_Parms) { string s_field[255]; integer s_chk, s_idx, s_len; s_len = len(Send_Parms) + 18; s_field = csMDSC_REMOTEPROCEDURE_REQ + Send_Cmd + Send_HiByte + "\x43" + chr(low(s_len)) + chr(high(s_len)) + "\x00\x00" + csRESERVED1 + csRESERVED2 + Send_Cmd + Send_HiByte; s_field = s_field + Send_Parms; return(s_field); } |
| Нас интересует в частности вот эта сумма: s_field = csMDSC_REMOTEPROCEDURE_REQ + Send_Cmd + Send_HiByte + "\x43" + chr(low(s_len)) + chr(high(s_len)) + "\x00\x00" + csRESERVED1 + csRESERVED2 + Send_Cmd + Send_HiByte; А все переменные указаны в заголовке файла: Скрытый текст
цитата: | #SYMBOL_NAME "Bosch DCN IP Microphone Management v1.0" // #HINT "" #DEFINE_CONSTANT csRESERVED1 "\x00\x00\x00\x00" #DEFINE_CONSTANT csRESERVED2 "\x00\x00\x00\x00" #DEFINE_CONSTANT csEND "\x0D\x0A\x0A" #DEFINE_CONSTANT csMDSC_REMOTEPROCEDURE_REQ "\x03" #DEFINE_CONSTANT csMDSC_REMOTEPROCEDURE_RSP "\x04" #DEFINE_CONSTANT csMDSC_NOTIFY "\x05" //Application Headers #DEFINE_CONSTANT csDCNC_APP_AT "\x09" #DEFINE_CONSTANT csDCNC_APP_SI "\x11" #DEFINE_CONSTANT csDCNC_APP_SC "\x10" #DEFINE_CONSTANT csDCNC_APP_MM "\x00" //Microphone Management Application Commands #DEFINE_CONSTANT csMM_C_START_MM "\x1E" #DEFINE_CONSTANT csMM_C_STOP_MM "\x1F" #DEFINE_CONSTANT csMM_C_GET_SETTINGS "\x20" #DEFINE_CONSTANT csMM_C_SET_SETTINGS "\x21" #DEFINE_CONSTANT csMM_C_SET_MIC_OPER_MODE "\x34" #DEFINE_CONSTANT csMM_C_SET_ACTIVE_MICS "\x35" //Speaker List Function Commands #DEFINE_CONSTANT csMM_C_SET_MICRO_ON_OFF "\x22" #DEFINE_CONSTANT csMM_C_SPK_APPEND "\x30" #DEFINE_CONSTANT csMM_C_SPK_REMOVE "\x31" #DEFINE_CONSTANT csMM_C_SPK_CLEAR "\x2F" #DEFINE_CONSTANT csMM_C_SPK_GET "\x2E" //Request to Speak List Function Commands #DEFINE_CONSTANT csMM_C_SHIFT "\x23" #DEFINE_CONSTANT csMM_C_RTS_APPEND "\x3E" #DEFINE_CONSTANT csMM_C_RTS_REMOVE "\x27" #DEFINE_CONSTANT csMM_C_RTS_CLEAR "\x26" #DEFINE_CONSTANT csMM_C_RTS_GET "\x25" //Operation Modes #DEFINE_CONSTANT csMM_C_OPERATOR_WITH_REQ_LIST "\x00\x00" #DEFINE_CONSTANT csMM_C_DELEGATE_WITH_REQ_LIST "\x01\x00" #DEFINE_CONSTANT csMM_C_DELEGATE_WITH_OVERRIDE "\x02\x00" #DEFINE_CONSTANT csMM_C_DELEGATE_WITH_VOICE "\x03\x00" #DEFINE_CONSTANT csMM_C_OPERATOR_WITH_COMMENT_LIST "\x04\x00" //Notify Events #DEFINE_CONSTANT csMM_C_SET_MIC_OPER_MODE_ON_PC "\x12" #DEFINE_CONSTANT csMM_C_SET_ACTIVE_MICS_ON_PC "\x13" #DEFINE_CONSTANT csMM_C_SET_SETTINGS_ON_PC "\x15" #DEFINE_CONSTANT csMM_C_MICRO_ON_OFF "\x01" #DEFINE_CONSTANT csMM_C_SPK_SET_ON_PC "\x0C" #DEFINE_CONSTANT csMM_C_SPK_CLEAR_ON_PC "\x0D" #DEFINE_CONSTANT csMM_C_SPK_APPEND_ON_PC "\x0E" #DEFINE_CONSTANT csMM_C_SPK_REMOVE_ON_PC "\x0F" #DEFINE_CONSTANT csMM_C_SPK_INSERT_ON_PC "\x10" #DEFINE_CONSTANT csMM_C_SPK_REPLACE_ON_PC "\x11" #DEFINE_CONSTANT csMM_C_RTS_SET_ON_PC "\x04" #DEFINE_CONSTANT csMM_C_RTS_CLEAR_ON_PC "\x05" #DEFINE_CONSTANT csMM_C_RTS_REMOVE_ON_PC "\x06" #DEFINE_CONSTANT csMM_C_RTS_FIRST_ON_PC "\x14" #DEFINE_CONSTANT csMM_C_RTS_INSERT_ON_PC "\x07" #DEFINE_CONSTANT csMM_C_RTS_REPLACE_ON_PC "\x08" //Other constants #DEFINE_CONSTANT ciNUMSTATIONS 200 #DEFINE_CONSTANT ciSPEAKERSIZE 4 #DEFINE_CONSTANT ciREQUESTSIZE 10 #DEFINE_CONSTANT ciDELEGATE 2 #DEFINE_CONSTANT ciMUTE 2 #DEFINE_CONSTANT ciUNIT 1 |
|
| Команда включения микрофона председателя: цитата: | \x03\x22\x00\x43\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x01\x02\x01 |
| Команда выключения микрофона председателя: цитата: | \x03\x22\x00\x43\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x01\x02\x00 |
| Статус включения микрофона председателя: цитата: | \x05\x01\x00\x43\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x02\x01\x00\x03\x00 |
| Статус выключения микрофона председателя: цитата: | \x05\x01\x00\x43\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x02\x02\x00\x03\x00 |
| Понятное дело, что готовыми командами удобно пользоваться, но лучше в свободное время почитать и разобраться, как же все это работает. К сожалению, это самое свободное время у меня появилось только после выполнения проекта.
|
|
|
|
|
Отправлено: 10.02.16 16:44. Заголовок: Подскажите, кто разо..
Подскажите, кто разобрался. Есть ли единый список пультов председателей и делегатов или косвенный инструмент его получения в порядке активации пультов? Уж очень хотелось допилить еще наведение камер малой кровью не заморачиваясь созданием объединенного собственного списка.
|
|
|
|
Отправлено: 16.02.16 09:29. Заголовок: Вячеслав , А какой а..
Вячеслав , А какой алгоритм автонаведения Вы хотите реализовать? Я понимаю, что речь идет о камерах. Но есть разные принципы работы. По поводу списка. vtsay выше пишет, что вроде как разобрался с получением SPK-List'a. У меня была подобная проблема на AMX'е, но там список микрофонов я составлял сам. В зависимости от полученного пакета, понимал, какой микрофон включен. Дальше в стэк записывался номер микрофона, вызывался нужный пресет на камере. Когда же микрофон выключался, просто исключал его номер из стэка. И вызывал пресет пресет, который шел раньше. На SIMPL+ не писал.
|
|
|
|
Отправлено: 16.02.16 14:33. Заголовок: Алгоритм такой: Если..
Алгоритм такой: Если активирован микрофон N: 1.Выбрать камеру (аналоговый выход) номер которой сохранен для данного микрофона N 2.Загрузить preset N (в режиме Npreset=Nmic) или пресет сохраненный для данного микрофона (в режиме manualPreset). Второй вариант удобен при использовании встроенных пресетов камер, так как они как правило ограничены малым числом (аналоговый выход). Если микрофон N выключен: 1.Проверяем был ли он включен последним. Если да то выбираем камеру и пресет для предпоследнего все еще активного микрофона. Либо просто удаляем микрофон из очереди активных микрофонов с корректировкой последовательности включения у оставшихся. 2.Если активных микрофонов не осталось, выбираем камеру общего плана зала и пресет общего плана (оба значения использую как параметры модуля) Дополнительно в режиме OPEN при достижении максимально количества одновременно активных микрофонов и присутствии микрофонов находящихся в очереди ожидания, при выключении одного из активных. Чтоб камеру не крутить зря (на предпоследний активный) перед включением нового после выключения старого проверяем это условие. И наводим сразу на вновь включенный (самый старый "мигающий" из списка очереди RST) //поправил Модуль S+ совмещенный с управлением наведением на указанной логике я уже написал. Очередь микрофонов делегатов и председателей в этот раз не стал делать, придумал более простое решение с параметром очередности.
|
|
|
|
Отправлено: 19.02.16 22:14. Заголовок: :sm52: Сегодня, над..
Сегодня, надеюсь закончил программировать модуль для CCU2. На все про все ушло дней 16 точно. Ничего не занимало еще так много времени. Кому надо, обращайтесь (не за дорого ;) Ссылку не выкладываю, дабы устава не нарушать. Демо версия имеет ограничение по количеству команд и до 6 микрофонов. Но будет хорошим подспорьем для самостоятельного программирования в качестве примера исполнения да и команды подсмотреть можно. Есть весь "обвес" с интерфейсом для управления и сохранением пресетов. Возможности: 1.Синхронизацию при подключении к CCU2 2.Режим override полноценной с индикацией как на ССU2 3.Режим OPEN (request) полноценной с индикацией как на ССU2 4.Режим PTT полноценной с индикацией как на ССU2 5.Режим VOICE без управления и индикации (т.к. нет fb CCU2) 6.Поддержку пультов председателей в любом количестве и в любой позиции инициализации (+поддержка нажатия кнопки приоритета) 7.Файл справки вызываемый по F1 ....и последнее, но не в последнюю очередь: 8.Автоматическое определение номеров подключенных микрофонов 9.Встроенный алгоритм управления наведением камер P.S. Обладателю радио микрофонных пультов по результатам теста скидка 100%. Принимаются предложения по усовершенствованию, пока ещё я могу читать эту hex "матрицу".
|
|
|
|
Отправлено: 05.12.16 13:42. Заголовок: Добрый всем день! П..
Добрый всем день! Помогите пожалуйста: Не могу понять из этой строки s_field = csMDSC_REMOTEPROCEDURE_REQ + Send_Cmd + Send_HiByte + "\x43" + chr(low(s_len)) + chr(high(s_len)) + "\x00\x00" + csRESERVED1 + csRESERVED2 + Send_Cmd + Send_HiByte; Следующее: Send_Cmd + Send_HiByte + chr(low(s_len)) + chr(high(s_len)). Подскажите как они формируются. И еще не понятно следующее из примера. \x03\x22\x00\x43\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x01\x02\x01 - последние три значения. x01\x02\x01. Я понял что это Send_Parms; А вот как он формируется не понял.
|
|
|
|
Отправлено: 05.12.16 14:53. Заголовок: А когда то я как в м..
А когда то я как в матрице читал такие строки налету )) Когда модуль писал Теперь уже вспоминать надо, но насколько я помню \x01\x02\x01 это похоже на включение микрофона (\x01\x02 \x01) с номером \x02\x01 ( \x01\x02\x01) В нумерации микрофона младший байт следует первым. т.е. \x01\x02 это на самом деле \x02\x01 (он же первый проводной микрофон в системе с десятичным номером 513) У меня для команды включения микрофона формируется так: sParam = chr(low(tmp_num_mic)) + chr(high(tmp_num_mic))+"\x01"; to_bosch = DCN_Send(csMM_C_SET_MICRO_ON_OFF, csDCNC_APP_MM, sParam); описание функции отправки любой команды: String_Function DCN_Send(string Send_Cmd, string Send_HiByte, string Send_Parms) { string s_field1[255],s_field2[255]; integer s_len; s_field1 = csMDSC_REMOTEPROCEDURE_REQ+Send_Cmd+Send_HiByte+"\x43";//csMDSC_REMOTEPROCEDURE_REQ="\x03" s_field2 ="\x00\x00"+reserv+reserv+ Send_Cmd + Send_HiByte+ Send_Parms; //reserv="\x00\x00" s_len = len(s_field1)+len(s_field2)+ 2; s_field1 = s_field1 +chr(low(s_len)) + chr(high(s_len))+ s_field2; return(s_field1); }
|
|
|
|
Отправлено: 05.12.16 16:48. Заголовок: Вячеслав Спасибо бол..
Вячеслав Спасибо большое.. попробую собраться с мыслями. И понять что написано. Везет Вам, Вы их хоть читали.
|
|
|
|
Отправлено: 05.12.16 17:23. Заголовок: Вячеслав а эта строк..
Вячеслав а эта строка chr(low(s_len)) + chr(high(s_len)) что данном случае значит. Исходя из вышеприведенного примера. \x03\x22\x00\x43\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x01\x02\x01 csMDSC_REMOTEPROCEDURE_REQ=\x03 + Send_Cmd = (csMM_C_SET_MICRO_ON_OFF) \x22 + Send_HiByte = ? + "\x43" - с этим понятно + chr(low(s_len)) = ? + chr(high(s_len)) = ? + "\x00\x00" - с этим понятно + csRESERVED1 = \x00\x00\x00\x00 + csRESERVED2 = \x00\x00\x00\x00 + Send_Cmd = (csMM_C_SET_MICRO_ON_OFF) \x22 + Send_HiByte = ? ; s_field - это то что выше. + Send_Parms = \x01\x02\x01 (где \x01\x02 это номер пульта) а \x01 - это включить или \x00 ; - выключить. Вот это я понял вроде. А вот то, что отметил вопросами не могу понять а делать нужно. Хотя бы. чтобы включить выключить и получить состояние пульта. Ведь через Serial I/O я смогу это сделать ?
|
|
|
|
| постоянный участник
|
|
|
Отправлено: 05.12.16 17:47. Заголовок: KelorVs, что у вас н..
KelorVs, что у вас не получается? Опишите пожалуйста попроще, пришлю свой модуль.
|
|
|
Ответов - 111
, стр:
1
2
3
4
5
6
All
[только новые]
|
|