28.01.2000.
Начальное состояние и история проекта.
Итак, я думаю что любой пользователь TV-платы, для чего бы она ему
ни была нужна, хочет время от времени расслабиться, завалиться на
диван и, лениво нажимая на кнопки пульта, перебирать TV программы
или выполнять с помощью пульта другие действия. Не тут-то было.
Существует два аспекта проблемы: аппаратный и программный.
Что касается аппаратного аспекта, то с этим более-менее все ясно:
команды с пульта или ловятся, или не ловятся, причем лично у меня
бывает как то, так и другое. Или пульт работает откуда угодно в
пределах комнаты с первого раза, или работает только с каждого третьего
- пятого раза чуть не вплотную к ИК приемнику. Эта проблема, связанная,
вероятно, с недостаточной чувствительностью ИК приемника, активно
обсуждается на форумах и, полагаю, решение будет найдено.
Что касается программного аспекта, то здесь все проще - по крайней
мере в JTV. Достаточно написать хороший драйвер, и все дела. Когда
я начал переделывать драйвер от TVPhone (95) под свою плату, я сначала
переопределил коды кнопок, добавил те, которых в драйвере не было
- и все. Пульт заработал, я обрадовался, но скоро почувствовал,
что пользоваться им неудобно. Может быть оригинал хорошо работает
с родной TV-платой, но мне кажется это не так.
У меня была проблема в том, что нужно было очень точно нажимать
на кнопки, чтобы получить желаемый результат. В противном случае
пульт или не успевал сработать, или успевал сработать несколько
раз в режиме автоповтора. С другой стороны, я обнаружил, что в родном
софте от AverMedia паузы в режиме автоповтора неоправданно затянуты,
примерно до 1 секунды.
Я решил не ломать голову и посмотреть, а как эта проблема решена
в телевизоре. Все оказалось очень просто. Паузы после первого и
последующих срабатываний пульта отличались примерно на порядок.
Более того, это было справедливо только для настроек громкости,
яркости и т.д., тогда как при переключении каналов паузы оставались
значительными. Разумно.
Тогда я переделал код под эту последовательность, установив паузу
после первого срабатывания - 1 секунда, а после следующих - на порядок
меньше. Результат - в файле aver98vcr3.zip.
Ну, небо и земля. Мне сразу стало жалко всех тех, кто, как я подозреваю,
пользуется неоптимальными драйверами в JTV. Тут-то я и подумал,
а что мне мешает помочь всем, кто этого хочет. Существуют программы,
позволяющие считать код нажатой кнопки пульта и другие регистры
контроллеров BT8x8 (мне нравится BTTool.exe), есть переработанный
мной исходник в качестве образца и Интернет. Спасение утопающих
- дело рук самих утопающих!
Процесс участия в создании драйвера пульта для любой TV-платы достаточно
прост:
1. С этого сайта нужно скачать файл jtvremkey.zip
в котором содержится программа считывания кодов кнопок, шаблоны
текстовых файлов для заполнения и инструкция по применению.
2. Затем отредактировать и заполнить один из шаблонов так, чтобы
он точно соответствовал используемой плате и пульту. Желательно
также нарисовать, хотя бы схематично, раскладку кнопок пульта и
привести все надписи на кнопках и самом пульте, - это можно сделать,
например, в Word'е.
3. Заполненный файл (или файлы) выслать на адрес
сайта или мой адрес.
4. Я, если смогу, разрабатываю драйвер, выкладываю его на сайт и
высылаю автору для тестирования.
Если не смогу разработать сам - пытаюсь привлечь к этому других.
5. Мы все вместе обсуждаем, что получилось - заведена гостевая книга
(Форум).
При желании и некотором умении, каждый может создать драйвер сам,
на этом сайте лежит файл jtvremddk.zip
с workspace под Microsoft Visual C++ 6.0, которым я сам пользуюсь
при компиляции. Если нетрудно, пришлите мне Ваши результаты и я
их выложу для всеобщего пользования.
Единственная просьба! Давайте не будем выдумывать
новых названий кнопок для одних и тех же функций без необходимости
и, пожалуйста, начинайте определения кнопок с общей "Key_"
последовательности для ВСЕХ TV-плат - подробности и примеры смотрите
в архивах и спецификации
проекта.
Кстати, на уровне драйвера (во всяком случае для моей платы)
легко организовать выполнение команд по ОТЖАТОЙ кнопке или только
при загруженном JVT. В качестве примера я сделал перемещение курсора
мыши в соответствующих направлениях для отжатых кнопок 1 - 9 при
незагруженном JTV и включенной эмуляции мыши, не знаю только кому
это может понадобиться. : - ))
|