Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Полноценное управление LPT портом в Delphi |
Автор: igorter 11.11.2019, 21:20 |
Большая просьба помочь разобраться в вопросе, как лучше управлять из Delphi LPT портом, так чтобы программа была универсальна и работала под системами от Windows 98 до Windows 7. Очень давно интересуюсь этой темой, но однозначного решения так и не нашел. Есть вариант использовать драйвер inpout32.dll. Он вроде универсальный и работает под всеми вариантами Виндовс, даже 64-битными. Он только пишет в порты и читает из них, но не использует прерывания. Как получить доступ к прерываниям LPT-порта? Можно это делать как-то через WinAPI? Если да, то как? Был такой компонент под Delphi, но он коммерческий и работает только под ХР. Может какой-то бесплатный драйвер прерываний есть с примерами под Delphi? Можно ли через WinAPI полноценно работать с портом во всех режимах передачи данных: ECP, SPP, EPP? Я не силен в особенностях WinAPI, может есть готовые примеры, как это делать во всех режимах и как оно работает. Весь русскоязычный Интернет перерыл, нигде ничего нет, только краткие куски кода, но где-то встречал, что через API можно всё делать без сторонних драйверов и программа будет универсальной. Буду очень благодарен за любую помощь в этом вопросе. Поиском пользовался и на этом форуме и на других, но полного рабочего решения моего вопроса не нашел нигде. |
Автор: igorter 12.11.2019, 12:28 |
Хочу сопрягать свои устройства с LPT и нужно знать в программе, когда он запрашивает передачу данных. Постоянно проверять состояния регистров порта неправильно и создает лишнюю нагрузку на процессор. inpout32.dll управляет портами под любой ОС. Нужна еще такая подобная библиотека для перехвата прерываний. |
Автор: Romikgy 12.11.2019, 16:13 | ||
кто мешает опрашивать это состояние в таймере? миллисекунды вполне реализуемы... мирко и нано , само приложение не осилит (это не риалтайм система)
пишите свой драйвер ЗЫ https://www.programmersforum.ru/showthread.php?p=381606#post381606 ЗЗЫ лпт - это не вчерашний , это поза-поза-вчерашний день ... используйте юсб , или лучше тсп (эмбедед устройства на сегодня это позволяют) ИМХО либа inpout32.dll использует свой дравер hwinterface.sys (он внутри библиотеки) работа с драйвером ведется через DeviceIoControl для запуска ей нужны админ права http://www.highrez.co.uk/downloads/inpout32/ |
Автор: igorter 12.11.2019, 21:36 |
Спасибо за отклик и помощь в моей теме. Немного разобрался и пришел к выводу, что всё, что мне нужно буду делать для старых машин через выше укзан драйвер для LPT, может найду еще где-то инфу про перехвату прерываний этого порта. А для более новых применений буду использовать FT2232H, нужно только хорошо с ним разобраться, как его программировать. Нашел и в железе опробовал еще USB-LPT переходник на CY7C68013A. Правда мой принтер почему-то не хочет через него работать, хотя все пины работают, проверил тестером и программой тестирования, заложенной в его драйвере. У меня Windows 7 x64. Очень мало русскоязычного описания их программирования на DELPHI. Но кое-что нашел, буду осваивать. Моя давняя беда в незнании английского языка, от и привязан к тому, что найду в рунете... |
Автор: Rasool 7.2.2023, 17:59 | ||
Здравствуйте. Передо мной сейчас стоит задача управления LPT-портом из программы на Embarcadero Delphi XE в Windows 7 (в перспективе на Windows 10). Для начала хотя бы помигать светодиодами, подключенными к выводам LPT-порта. LPT-порт организован на PCI-плате , которая подсоединяется к компьютеру через PCI-Express и для нее устанавливается свой драйвер. В диспетчере устройств плата видна как WCH PCI Express=>DUAL SERIAL&&PARALLEL. Есть такая dll: inpout32.dll, там есть такие функции
|
Автор: Rasool 9.2.2023, 15:56 | ||||
Вчера заработал LPT-порт. Использовал драйвер inpout32.dll, в качестве адреса порта использовал адрес из "Диапазона ввода/вывода (I/O)" из вкладки "Ресурсы" драйвера параллельного порта в "Диспетчере устройств".
|