Форум Beholder http://beholder.ru/bb/ | |
Использование ИК-приёмника без BeholdRC.dll http://beholder.ru/bb/viewtopic.php?f=10&t=14732 |
Страница 1 из 1 |
Автор: | f2065 [ 30 апр 2023, 13:06 ] |
Заголовок сообщения: | Использование ИК-приёмника без BeholdRC.dll |
А как бы получать данные с ИК-датчика без BeholdRC.dll? С DLL две проблемы: 1. она 32-битная, из 64-битного софта не работает (а такого софта всё больше). 2. аналоговое ТВ уже не актуально, и от бехолдера нужен только драйвер (для DVB). Но ради BeholdRC.dll получается надо и BeholdTV ставить. Насколько понимаю BeholdRC.dll просто находит устройство и делает IOCTL запросы, причём их мало - очевидно выбор режимов и затем просто чтение сканкода. Т.е. всё это можно легко реализовать без DLL, самостоятельно делая те же IOCTL запросы. Есть какие-то исследования? Или может авторы уже наконец дадут всю инфу по IOCTL-кодам своего драйвера? |
Автор: | hd44780 [ 09 окт 2023, 16:31 ] |
Заголовок сообщения: | Re: Использование ИК-приёмника без BeholdRC.dll |
Проблему x32 <-> x64 как я понимаю несложно решить с помощью сервиса. Пишете x32 сервис, который работает с BeholdRC.dll и общается через PIPE с окружающим миром. Далее в x32/x64 (на выбор) софтине работаете не с dll, а с сервисом через PIPE. Нечто похожее по-моему делает Behold Agent. Хотя я не уверен создаёт ли он Pipe, но это уже детали. По крайней мере он "слушает" пульт и запускает основную прогу. Костыльно конечно, но другого я придумать пока не могу. По вопросу про IOCTL - думаю тут только дизассемблирование dll-ки + отладчик на живом тюнере/драйвере и dll. Ибо разрабы канули в лету и прочее такое. PS. Если нужен только пульт, а сам тюнер нет, то есть такая тема - https://we.easyelectronics.ru/STM32/ir- ... ast-4.html Минус - кроме программирования надо знать электронику и микроконтроллеры и немного уметь паять. Плюс - тюнер вообще не нужен, от него можно взять только глазок (там походу тот же TSOP4838 или что-то родственное с 2.5 мм джеком) и пульт. Соответственно не нужно гоняться за шиной PCI и/или переживать на тему "1000-летней давности драйвер с сайта не ставится с супер-пупер новую винду со всеми обновлениями". |
Автор: | f2065 [ 14 мар 2024, 03:38 ] |
Заголовок сообщения: | Re: Использование ИК-приёмника без BeholdRC.dll |
Тут ещё кто-нибудь остался? Расковырял немного алгоритмы работы через IOCTL, на моём T8 работает... Но надо исследовать и на других моделях, особенно на чипах Trident (Wander, Voyage) и Conexant (Cruise) В DLL много непонятных и нелогичных запросов, странные детекты моделей и т.п. Не понятно зачем например надо GetRemoteHasARPC и GetRemoteHasMultiDec |
Автор: | f2065 [ 18 мар 2024, 19:26 ] |
Заголовок сообщения: | Re: Использование ИК-приёмника без BeholdRC.dll |
Итак, создана утилита для исследования IOCTL запросов к тюнеру. Вложение: BeholdRC_20240318a.png [ 22.19 КБ | Просмотров: 35438 ] Вложение: В официальном BeholdRC.dll выявлено наличие кода для 8 различных IOCTL-команд: 0x233804, 0x233808, 0x233844, 0x233BC4, 0x233998, 0x23390C, 0x233904, 0x233908 На моём BeholdTV T8 – работают только первые 4. 804 – поля 0,2,3 без изменений, в поле 1 – 0x00000001. Очевидно какой-то флаг, непонятно чего (APRC? MultiDec? Просто готовность?). Надо на разных моделях посмотреть и найти корреляцию с чем-то. 808 – поля 0,1 без изменений, в остальных полях (2-8) идентификаторы ven(2) dev(3) subsys(4,5) rev(6), и ещё что-то (7,8) 844 – поле 0 без изменений, в остальных много каких-то небольших значений. Вероятно какие-то опции тюнера. BC4 – поля 1,2,3 без изменений, в поле 0 – полный сканкод нажатой кнопки пульта. Для опроса пульта – очевидно надо в цикле делать именно эту команду. Смысла в командах 804 808 844 я не нашёл. Открыл девайс, и сходу можно делать в цикле BC4 для опроса пульта. Всё работает вроде. Задача 1. Найти корреляцию свойств APRC и MultiDec (кстати что это такое?) с какими-то данными в ответах 804/808/844. Для этого нужны ответы 804/808/844 множества разных моделей… Зачем нужны ещё команды 998, 90C, 904, 908? На моем тюнере они не поддерживаются, очевидно они для других моделей (Wander, Voyage, Cruise, старые PCI ?). Интересно что в коде DLL для 90C, 904, 908 вообще не читают результат. Вероятно они переключают какой-то режим? Включают/выключают работу сенсора? Задача 2. Найти назначение команд 998, 90C, 904, 908. Это может быть опасно для тюнера (может они вводят его в какой-то необратимый режим, хотя это и крайне маловероятно, в BeholdRC.dll врядли бы был смысл реализовывать какие-то опасные команды). Ещё есть вопросы про RC_Type (GetRemoteType, тип пульта – 30/28/34 кнопочный). Не очень понятно как официальная BeholdRC.dll выдаёт тип пульта. Там не прямое чтение некой опции с железа, а табличка из нескольких десятков элементов для каждого из которых прописан тип пульта (30/28/34 кнопочный). Тип пульта – это константа привязанная к модели тюнера, а не реально работающий сейчас пульт? У всех вариантов пультов бехолдера – одинаковый шаблон 32-битного сканкода. Получается если допустим взять пульт от другой модели бехолдера (например для современной модели где родной пульт 34 кнопки – взять старый 30 кнопочный пульт) – то GetRemoteType будет указывать неактуальный тип пульта? Причём у пультов же некоторые сканкоды не совпадают: например 0x0E Sleep и Teletext, 0x0F Audio и Record, 0x11 TV/AV и Mute. Пульт от другой модели бехолдера будет работать некорректно (если программа использует автодетект типа пульта по GetRemoteType)? Задача 3. Исследовать работу с другой моделью пульта бехолдера. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |