Форум » » Вопрос по написанию serial driver для управлениея HDMI матрицей » Ответить

Вопрос по написанию serial driver для управлениея HDMI матрицей

Kaveckiy: Доброе время суток, Коллеги! Дано: HDMI матрица 4х4 известного китайского производителя No Name. К ней есть небольшая инструкция по командам управления по протоколу RS232. Опыта в написании драйверов мало (писали на обучении, а потом как-то не приходилось, поэтому многое забыл). Использую Serial I/O, в которое вставляю нужные команды. На тестовой системе практически сразу заработали команды OFF, ON, Inquiry и команды отключения каналов (CA, CB, CC, CD). Но при отправке команд переключения входов (A1, B4 и т.д.) - в дебагере вижу ответ Wrong instruction. Пробовал менять местами букву и цифру (1A, 4B и т.д.) - результат тот же. Можно ли как-то имея живую матрицу вытянуть из нее правильные команды на управление коммутацией?

Ответов - 19

Игорь K.: Из коммутатора ничего не вытащите. Попробуйте внимательнее сформировать команды и учесть дополнительные условия, сразу иногда ничего не работает, или работает плохо. В вашем мануале указано, что нефиг управлять выключенным входом или выходом, а также если на них не подан сигнал. Мануал очень короткий, ничего лишнего в нем нет.

Kaveckiy: Игорь K. попробую завтра подключить на вход источник и выход к телику. Хотелось бы еще обратную связь вытазить. Судя по ответным посылкам - что-то оно таки отдает по запросу статуса, но не расписан формат.

Igor: Kaveckiy пишет:Можно ли как-то имея живую матрицу вытянуть из нее правильные команды на управление коммутацией? После исполнения определенной команды некоторые приборы отдают по RS232 эхо в виде точной копии этой самой команды. Я так боролся с каким-то древним монитором LG лет семь назад - нажимал клавиши на штатном ПДУ и слушал обратку по RS232. Но это скорее исключение чем правило. Попробуйте поэкспериментировать с оконцовкой команд - \x0D, \x0A, \x0D\x0A. Встречались уродцы, команды которых нужно было оконцовывать символом End of text (ETX, \x03).


Kaveckiy: Igor пишет: Попробуйте поэкспериментировать с оконцовкой команд - \x0D, \x0A, \x0D\x0A. Встречались уродцы, команды которых нужно было оконцовывать символом End of text (ETX, \x03). Сейчас стоит demiliter \x0D - выполняются часть команд, а именно: ON, OFF, опрос и выключение каждого из каналов. Я еще вчера исключил из подозреваемых оконцовку - по идее тогда ни одна команда не выполнялась бы.

Igor: Kaveckiy, а приведите полностью ответ коммутатора на запрос текущей раскладки (Inquiry).

p.vladi: Попробуйте Pacing (ms) в настройках порта. И еще, попробуйте через USB > RS232 преоброзователь, и Putty - просто отправить A1 и ввод

Kaveckiy: Igor пишет: а приведите полностью ответ коммутатора на запрос текущей раскладки (Inquiry). Тестовую схему пришлось разобрать, сегодня постараюсь собрать обратно и приведу ответ коммутатора.

Вячеслав: Пробуйте A1\x0D\x0A т.е. delimiter \x0D\x0A это классический Enter должно работать Можно еще попробовать вместо символов их HEX значения использовать т.е. вместо A использовать \x41 \x42 \x43 \x44 для B C D соответственно

Игорь K.: Вячеслав, вы думаете, что изменив представление в дебаггере вы меняете двоичную посылку процессора?

Вячеслав: Бывали странные случаи со слов коллег, когда именно это помогло.

Igor:

Вячеслав: Напрасно вы иронизируете. Вспомните всем известный \x20 Уточнил, на каком устройстве была такая заморочка: ИБП APC при управлении через telenet не воспринимает пробел.

Kaveckiy: Снова собрал тестовую схему. Немного прояснилось: оказывается матрица не хотела переключаться без источников на входе и, возможно, без приемника на выходе. Сейчас заработало переключение входов. Кусок из дебагера при выполнении команды на выключение входов от выхода А https://www.dropbox.com/s/27w23aemqxjy9z4/A%20off.PNG?dl=0 Кусок из дебаггера при включении первого входа на выход А https://www.dropbox.com/s/uomxm6owyvhsy0d/A1.PNG?dl=0 Запрос статуса (вход 1 подключен к выходу А https://www.dropbox.com/s/eg9nxzodf1nm41w/Inquiry.PNG?dl=0 Осталось понять как разобрать ответы и реализовать фидбеки :)

Вячеслав: Зависит от того как вы себе видите фидбэк. Мне привычен по аналогии с DM матрицей. Есть аналоговые выходы по числу выходов матрицы, значение на которых указывает текущий номер скоммутированного на этот выход входа. Как правило дополняю еще сериальными выходами, но там вместо номера ИМЯ входа взятого из параметров модуля. Протокол вашего устройства конечно далек от идеала,напомнил мне Sharp который любит отвечать словом OK. А на что он ответил OK приходится выяснять по признаку ТИП ОТПРАВЛЕННОЙ КОМАНДЫ. Возьмите модуль от шарпа PN-E421 для понимания задачи. В вашем случае вместо OK будет Successful operation Исключением является вариант отключения входа в примере с CA в ответе признак CA продублирован и тут несколько проще для обработки. С запросом статуса из приведенного примера не совсем ясно, не очевиден статус по всем 4 входам. Может не подключенные вообще не отображает. (надо больше вариантов коммутаций) короче, примерно так (без реализации INQUIRY) качать тут Отладку не делал см. сами Обновил!!!

Kaveckiy: Вячеслав спасибо! Буду переключать входы и искать закономерность в ответах на запрос состояния.

Вячеслав: Обновил ссылку (analog initialize по входам). Забыл сразу добавить input_clear c значением 0d для режима отключения.

Kaveckiy: Вячеслав спасибо! Чувствую что пора идти на курс по SIMPL+

Вячеслав: Посещение курса, это скорее для сертификата. Тут лучшее подспорье наставник под рукой. И практика. Опять таки из готовых + модулей с applictionmarket что то можно почерпнуть. Так что там с INQUIRY, удалось понять закономерности в ответе устройства? По одному примеру довольно сумбурно выглядел fb.

Kaveckiy: Вячеслав пишет: Посещение курса, это скорее для сертификата. Тут лучшее подспорье наставник под рукой. И практика. Опять таки из готовых + модулей с applictionmarket что то можно почерпнуть. Все наставники под рукой загружены работой :( Вячеслав пишет: Так что там с INQUIRY, удалось понять закономерности в ответе устройства? По одному примеру довольно сумбурно выглядел fb. Пока тоже не могу выделить время чтобы заняться.



полная версия страницы