Форум Beholder
http://beholder.ru/bb/

Обратная связь через Sendmessage
http://beholder.ru/bb/viewtopic.php?f=10&t=8291
Страница 1 из 1

Автор:  hexogen [ 16 авг 2009, 14:24 ]
Заголовок сообщения:  Обратная связь через Sendmessage

Через сообщения windows (Sendmessage/Postmessage) предоставляется довольно развлетленное управление Behold TV. Но вот про текущее состояние, кроме уровня громкости и номера ПО, не удастся узнать ничего. Странно... Получается игра в одни ворота, пнул мяч, а попадет он или нет и вообще что с ним дальше - х.з.

Возьмем запись. Для этого есть (отдельно для аудио и видео): триггеры запустить-остановить и пауза-продолжить, команды запустить и остановить. Как легко догадаться состояние триггеров во внешней программе (внешнем управлении) может легко поменяться местами, т.е. вместо останова пойдет запись и наоборот. Это может произойти например при внешнем вмешательстве (нажатии соотв. кнопок в окне Behold) или в силу внутренних причин (останов (сбой) записи, но управляющая программа по-прежнему будет считать что запись ведется, а вторичный посыл тригера, с точки зрения внешнего управляния, для останова, напротив, начнет ее).

Есть еще замечания: команда "остановить запись" обрабатывается всегда, даже при просмотре происходит переинициализация. Сам Behold TV "спасается" от этого только с помощью disable стопа.

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

для этого требуется знать:
1) текущий канал (необходимость этого в форуме уже упоминали), информация о нем (название, частота и т.д.)
2) источник (Tuner, FM, VHS, S-VHS)
3) текущее состояние (просмотр, запись, таймшифт)
4) если запись то что: аудио, видео, серия снимков
5) информация о записи (статистика)
6) общее кол-во каналов

Добавление обработки запроса - пара строчек, странно что это не было сделано ранее. За образцами далеко ходить не надо - SDK Winamp начиная с 2.xx. По аналогии к примеру можно ввести:

WMBH_GETSTATUS возвращать 0 если просмотр, 1 - таймшифт, 2 - запись;
WMBH_GETSOURCE 0 - Tuner, 1 - FM, 2 - VHS, 3 - S-VHS;
WMBH_GETVIDEORECORD (WMBH_GETAUDIORECORD) возвращать 0 - если не идет запись видео (аудио), 1 - пауза записи, 2 - запись;
WMBH_GETCHANNELNUM, WMBH_GETCHANNELFREQ, WMBH_GETCHANNELNAME и т.д.

P.S. правда с возвратом pointer строк (название канала) например в jsript, vbscript и некоторых других - траблы (выше идет речь именно про управление сторонними программами на скриптах, если писать полноценное приложение, то часть, но не все! вопросов естественно снимается), но все равно можно передать строку таким образом:
SendMessage (hBhWnd, WM_BHCMD, WMBH_GETCHANNELNAME, param)
где param=-1 - возвращает ссылку на строку как обычно
param=0 - возвращает длину строки
param=1,2... и т.д. - соответствующий (первый, второй и т.д.) символ строки (таким образом можно последовательно передать строку известной длины в виде массива)

P.P.S. Перечитал. Много я запросил... :roll: но это необходимый полноценный минимум для управления. Может что-то уже введено, но не отражено в API, можете огласить?

P.P.P.S. да еще! по нажатию Enter вызывается видеомикшер в OSD, триггер WMBH_SELVOLMODE - это "старый" вариант, новый вариант в месседж известен?


(пользую Behold TV X7 с версией btv 5.07)

Автор:  Support [ 17 авг 2009, 11:00 ]
Заголовок сообщения:  Re: Обратная связь через Sendmessage

писал(а):
P.P.S. Перечитал. Много я запросил... :roll:

Да нет, в самый раз. В планах было расширить список WM_-сообщений командами получения информации о тюнере. Если будут какие-либо дополнительные пожелания на этот счёт, излагайте их в этой теме.

Автор:  hd44780 [ 18 авг 2009, 09:06 ]
Заголовок сообщения: 

Вот тут мои пожелания на сей счет: http://www.beholder.ru/bb/viewtopic.php?t=7612

Спасибо.

Автор:  hexogen [ 20 авг 2009, 12:34 ]
Заголовок сообщения:  Re: Обратная связь через Sendmessage

Добавить SET & GET "Использовать пульт ДУ" (для btv\Настройки\Пульт ДУ\Общие установки). Позволит использовать/исключать встроенное управление btv, иначе приходится галку выключать (да так и оставлять), чтобы не было дубляжа команд пульта и соответственно вводить доп управление для btv в стороннем ПО.

Автор:  hd44780 [ 31 авг 2009, 11:31 ]
Заголовок сообщения: 

Еще хотелось бы иметь средства управления списком плагинов. Хотя бы на уровне добавить/удалить плагин.
Добавлять плагин желательно из любого каталога, в смысле что-то типа addPlugin(char *pluginDllPath), а функция сама копирует эту dll куда надо и регистрирует ее в btv. А юзеру останется только самому настроить плагин.
Иначе тяжело - в xp/2003 путь один, в висте/2008 другой и т.д. В x64 свои прибамбасы - типа "C:\Program Files x86".

Автор:  EugeneF [ 15 сен 2009, 21:31 ]
Заголовок сообщения: 

И от себя добавлю.
Хорошо бы привести команды к единообразию.
Сейчас, для различных функций тюнера существуют команды-триггеры типа toggle, и детерминированные команды типа set. Причем ,для одних функций есть и то и другое, для других - что-то одно.
Хорошо, если бы была единая команда для определенной функции (например WMBH_RECV), поведение которой определялось бы параметром lparam. К примеру: 0 - выкл, 1 - вкл, -1 - toggle.

Автор:  hd44780 [ 06 окт 2009, 10:21 ]
Заголовок сообщения: 

И какие-нибудь средства определить местонахождение программы btv.
Сейчас приходится сканировать ветку Uninstall (что почему-то не срабатывает в x64), искать и сканировать ярлыки Пуск->программы и пр. шаманство.

Автор:  hd44780 [ 14 май 2010, 09:59 ]
Заголовок сообщения: 

Еще пожелание:

Дайте какой-то API для получения информации о текущем канале.
Сейчас я получаю это из специального плагина, но в DVB и при записи аппаратным кодировщиком плагины не подключаются и получить эту информацию вообще невозможно.

Спасибо.

Страница 1 из 1 Часовой пояс: UTC + 3 часа