Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2008, 17:51   #1
FlyWind
 
Регистрация: 09.08.2008
Сообщений: 4
По умолчанию Программирование IrDA-железки

На моём супер-навороченном ноутбуке 1999 года выпуска имеется порт инфракрасной связи типа IrDA. Очень хочется его разрулить, но успехов пока маловато.
Конкретная задача на сегодня: перехватить сигнал с пульта ДУ от видеомагнитофона, сохранить и в дальнейшем воспроизвести.
Порт прекрасно работает на вход и выход. С перехватом проблем вроде бы нет пока из Паскаля работаешь загрузившись с дискетки.
Проблемы на этапе воспроизведения: сигнал нужно держать на выходе некоторое время, иначе техника ничего не понимает. Нужна высокая чувствительность по времени, которой в Паскале нет (кажется).
К тому же нужен драйвер для работы из-под windows. Его на Delphi реально справить?
А самое крутое - постоянный опрос порта не годится, нужно ето дело подвязать к контроллеру аппаратных прерываний - с этим вообще глухо...

P.S.
Помогите, кто может!.. Кто может, помогите!..
(Планета Шелезяка)
FlyWind вне форума Ответить с цитированием
Старый 10.08.2008, 15:27   #2
FlyWind
 
Регистрация: 09.08.2008
Сообщений: 4
По умолчанию

Смысл работы пульта ДУ для стандартной бытовой техники (телевизор, видак, кондиционер и т. п.) сводится к тому, что портативное устройство (то бишь пульт) имеет ПЗУ, в которую вшита команда для каждой кнопки. По нажатию кнопки пульт высылает от 8 до 24 (приблизительно) байтовых команд на инфракрасный светодиод. Через камеру/фотоаппарат, можно видеть, что пульт "мерцает", т. е. высылает последовательность команд (вспышка), делает задержку (затухание) и снова повторяет последовательность. Так длится до тех пор, пока нажата кнопка.
Скорее всего, для посылки ряда команд с определённным интервалом и организации задержки между последовательностями в пульт вшит генератор тактовых импульсов очень палой частоты (по современным меркам).
Для перехвата последовательности достаточно вести непрерывный опрос порта и при смене входного сигнала на порте типа IrDA выводить его новое значение на экран (как один из вариантов). Я это делал через Pascal командой port().
Вся загвоздка в том, что при выводе этой же последовательности через порт IrDA на ПК вся линейка байт выстреливается быстрее, чем пульт успевает передать один байт своей последовательности. Техника просто не успевает прочитать этот ряд и остаётся в бездействии.
Главный на сегодня вопрос: как отследить, сколько времени пульт держит каждый байт последовательности на выходе? Средств Pascal недостаточно - слишком малая чувствительнность по времени (для gettime). Delphi может помочь в этом случае, но он не воспринимает команду port(), а значит ломиться надо через Assembler, как вариант, вписанный в то же дельфийское приложение.

Люди добрые! Подскажите, как Delphi и Assembler могут обмениваться данными, чтобы вписывать значения, полученные с порта в дельфийские переменные.

P.S.
Работать напрямую с потром под ОС Windows возможно при помощи программы Userport - дело верное, сам проверял.
FlyWind вне форума Ответить с цитированием
Старый 10.08.2008, 15:30   #3
FlyWind
 
Регистрация: 09.08.2008
Сообщений: 4
По умолчанию

Господа программисты высокого крыла полёта, ну не уже ли никто и никогда не программил железяки? Смысл-то приблизительно одинаковый, только поведение портов чуточку отличается, а обмен с ними данными идёт по стандартной схеме.
Если нет, я полный ламер и в бане мне место...
FlyWind вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программирование фамил Свободное общение 10 23.09.2009 14:28
Как работать с irda портом? PLZ..... FBG Общие вопросы Delphi 4 23.08.2008 20:04
программирование на си фамил Общие вопросы C/C++ 3 31.05.2008 20:03
Программирование под .NET RoamingFire Свободное общение 1 04.03.2008 08:35
ПРограммирование Андрюха из ПХТТ Фриланс 3 04.02.2008 21:25