Скорость LPT аппаратно ограничена, не помню сколько точно но вроде порядка 250мс (давно уже с этим игрался, а сейчас у меня и LPT совсем нету). Ограничение это традиционно действует через замораживание тактовой частоты процессора. Грамотное использование FIFO позволяет избежать 100% загрузки процессора ожиданием синхронизации с LPT но не позволяет превысить это ограничение скорости. И это помимо тонкостей с многозадачностью и т.п. Про то как задействовать см. http://www.radio-portal.ru//modules.php?op=modload&name=EZCMS&file=index&page_id=68 http://www.pcports.ru/xDRV_sys.php и Гугл в помощь, таких наработок в сети изрядное количество.
Нашёл интересную ссылку. Реализует ли этот драйвер механизм FIFO? Может кто уже сталкивался с ним? http://www.beyondlogic.org/porttalk/porttalk.htm
на писипортс дров кривой прерывание перехватывает и плюёт на системный обработчик, не советовал бы его
а это гон - по вашему скорость ЛПТ 1000мс/250мс=4 байта в секунду?!... вы забываете что у ЛПТ макс скорость до 2мб/с доходит в одном из режимов - ESP или EPP точно не помню, а в стандартном ECP - 200 кб/с с лишним...
Pavia Вообще - книга как раз в тему, и не только про FIFO. Читаю и уже похоже в своей асм вставке ошибку обнаружил. Регистры порта однобайтные, а я считывал их и записывал как двухбайтные. Хотя работало, но неясно почему вообще работало...
Exp10der да с цифрой гоню, поскольку давно с LPT не играл ) но суть остаётся верной - 2мб/с и 200 кб/с по сравнению с ГГц-ами современных камней оочень мало, поэтому из-за аппаратной синхронизации имеем весьма неэффективную 100% загрузку процесора.
Получил положительный результат с помощью вот такой асм вставки: ; RTS COM1 ; сбрасываем в 0 бит 1 по адресу 3FCh mov dx,3FCh in al,dx and al,0FDh out dx,al Отрабатывает сиё творение за 3,3 микросекунды. Уже лучше, чем было через API. Но пока с драйвером неясности - надо что-то получше чем giveio приспособить.
Pavia Спасибо за разъяснение. Не могу сказать, что понял всё, но кое-что из этого усвоил. Опыт у меня в асме компьютерном близок к нулю. И давно крутится в голове наверное совсем ламерский вопрос. Чем отличаются обозначения ax и Eax dx и Edx cx и Ecx Это разные регистры(может альтернативные как в Z80 во времена спектрума) или те-же самые?
kaligraf eax это 32 битный регистр он как бы стостоит из двух половинок. Младшии 16 бит это ax, для старшей нету кода. А ax делиться al и ah Код (Text): +-----------+ | EAX | +-----+-----+ | | AX | +-----+--+--+ | |AH|AL| +-----+--+--+