Текущее время: 10 дек 2024, 03:06 • Часовой пояс: UTC + 3 часа
Сообщения без ответов | Активные темы

Использование ИК-приёмника без BeholdRC.dll

Начать новую темуОтветить на тему Страница 1 из 1 [ Сообщений: 4 ]
Версия для печати Пред. тема | След. тема
АвторСообщение
Сообщение Добавлено: 30 апр 2023, 13:06. Заголовок сообщения:  Использование ИК-приёмника без BeholdRC.dll
Зарегистрирован:
    28 сен 2006, 05:01
Сообщения: 830
Откуда: Russia,Moscow
А как бы получать данные с ИК-датчика без BeholdRC.dll?

С DLL две проблемы:
1. она 32-битная, из 64-битного софта не работает (а такого софта всё больше).
2. аналоговое ТВ уже не актуально, и от бехолдера нужен только драйвер (для DVB). Но ради BeholdRC.dll получается надо и BeholdTV ставить.

Насколько понимаю BeholdRC.dll просто находит устройство и делает IOCTL запросы, причём их мало - очевидно выбор режимов и затем просто чтение сканкода.
Т.е. всё это можно легко реализовать без DLL, самостоятельно делая те же IOCTL запросы.

Есть какие-то исследования?
Или может авторы уже наконец дадут всю инфу по IOCTL-кодам своего драйвера?
Профиль WWW ICQ 
Сообщение Добавлено: 09 окт 2023, 16:31. Заголовок сообщения:  Re: Использование ИК-приёмника без BeholdRC.dll
Эксперт
Аватара пользователя
Зарегистрирован:
    23 мар 2007, 14:32
Сообщения: 4034
Откуда: РФ, ДНР, Донецк
Проблему 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 :D

Минус - кроме программирования надо знать электронику и микроконтроллеры и немного уметь паять.
Плюс - тюнер вообще не нужен, от него можно взять только глазок (там походу тот же TSOP4838 или что-то родственное с 2.5 мм джеком) и пульт. Соответственно не нужно гоняться за шиной PCI и/или переживать на тему "1000-летней давности драйвер с сайта не ставится с супер-пупер новую винду со всеми обновлениями".
Behold TV 609FM, Behold TV X7
Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB.
Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
Профиль 
Сообщение Добавлено: 14 мар 2024, 03:38. Заголовок сообщения:  Re: Использование ИК-приёмника без BeholdRC.dll
Зарегистрирован:
    28 сен 2006, 05:01
Сообщения: 830
Откуда: Russia,Moscow
Тут ещё кто-нибудь остался?
Расковырял немного алгоритмы работы через IOCTL, на моём T8 работает...
Но надо исследовать и на других моделях, особенно на чипах Trident (Wander, Voyage) и Conexant (Cruise)
В DLL много непонятных и нелогичных запросов, странные детекты моделей и т.п.
Не понятно зачем например надо GetRemoteHasARPC и GetRemoteHasMultiDec
Профиль WWW ICQ 
Сообщение Добавлено: 18 мар 2024, 19:26. Заголовок сообщения:  Re: Использование ИК-приёмника без BeholdRC.dll
Зарегистрирован:
    28 сен 2006, 05:01
Сообщения: 830
Откуда: Russia,Moscow
Итак, создана утилита для исследования IOCTL запросов к тюнеру.
Вложение:
BeholdRC_20240318a.png
BeholdRC_20240318a.png [ 22.19 КБ | Просмотров: 35845 ]

Вложение:
 BeholdRC_v10.rar [55.03 КБ]
Скачиваний: 1039

В официальном 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. Исследовать работу с другой моделью пульта бехолдера.
Профиль WWW ICQ 
Показать сообщения за:  Поле сортировки:    
Начать новую темуОтветить на тему  Страница 1 из 1  [ Сообщений: 4 ]  
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Найти:  
Перейти: