|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
|
igorter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.11.2019 Репутация: нет Всего: нет |
Большая просьба помочь разобраться в вопросе, как лучше управлять из Delphi LPT портом, так чтобы программа была универсальна и работала под системами от Windows 98 до Windows 7. Очень давно интересуюсь этой темой, но однозначного решения так и не нашел. Есть вариант использовать драйвер inpout32.dll. Он вроде универсальный и работает под всеми вариантами Виндовс, даже 64-битными. Он только пишет в порты и читает из них, но не использует прерывания.
Как получить доступ к прерываниям LPT-порта? Можно это делать как-то через WinAPI? Если да, то как? Был такой компонент под Delphi, но он коммерческий и работает только под ХР. Может какой-то бесплатный драйвер прерываний есть с примерами под Delphi? Можно ли через WinAPI полноценно работать с портом во всех режимах передачи данных: ECP, SPP, EPP? Я не силен в особенностях WinAPI, может есть готовые примеры, как это делать во всех режимах и как оно работает. Весь русскоязычный Интернет перерыл, нигде ничего нет, только краткие куски кода, но где-то встречал, что через API можно всё делать без сторонних драйверов и программа будет универсальной. Буду очень благодарен за любую помощь в этом вопросе. Поиском пользовался и на этом форуме и на других, но полного рабочего решения моего вопроса не нашел нигде. |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
написать свой драйвер лпт
драйверов платных я не видел .... придется осилить ЗЫ для какой цели вам вообще прерывания ? что колбеки или потоки не решат проблему ? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
igorter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.11.2019 Репутация: нет Всего: нет |
Хочу сопрягать свои устройства с LPT и нужно знать в программе, когда он запрашивает передачу данных.
Постоянно проверять состояния регистров порта неправильно и создает лишнюю нагрузку на процессор. inpout32.dll управляет портами под любой ОС. Нужна еще такая подобная библиотека для перехвата прерываний. |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
кто мешает опрашивать это состояние в таймере? миллисекунды вполне реализуемы... мирко и нано , само приложение не осилит (это не риалтайм система)
пишите свой драйвер ЗЫ https://www.programmersforum.ru/showthread....1606#post381606 ЗЗЫ лпт - это не вчерашний , это поза-поза-вчерашний день ... используйте юсб , или лучше тсп (эмбедед устройства на сегодня это позволяют) ИМХО либа inpout32.dll использует свой дравер hwinterface.sys (он внутри библиотеки) работа с драйвером ведется через DeviceIoControl для запуска ей нужны админ права http://www.highrez.co.uk/downloads/inpout32/ Это сообщение отредактировал(а) Romikgy - 12.11.2019, 16:27 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
igorter |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.11.2019 Репутация: нет Всего: нет |
Спасибо за отклик и помощь в моей теме. Немного разобрался и пришел к выводу, что всё, что мне нужно буду делать для старых машин через выше укзан драйвер для LPT, может найду еще где-то инфу про перехвату прерываний этого порта.
А для более новых применений буду использовать FT2232H, нужно только хорошо с ним разобраться, как его программировать. Нашел и в железе опробовал еще USB-LPT переходник на CY7C68013A. Правда мой принтер почему-то не хочет через него работать, хотя все пины работают, проверил тестером и программой тестирования, заложенной в его драйвере. У меня Windows 7 x64. Очень мало русскоязычного описания их программирования на DELPHI. Но кое-что нашел, буду осваивать. Моя давняя беда в незнании английского языка, от и привязан к тому, что найду в рунете... |
|||
|
||||
Rasool |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Здравствуйте. Передо мной сейчас стоит задача управления LPT-портом из программы на Embarcadero Delphi XE в Windows 7 (в перспективе на Windows 10). Для начала хотя бы помигать светодиодами, подключенными к выводам LPT-порта. LPT-порт организован на PCI-плате , которая подсоединяется к компьютеру через PCI-Express и для нее устанавливается свой драйвер. В диспетчере устройств плата видна как WCH PCI Express=>DUAL SERIAL&&PARALLEL.
Есть такая dll: inpout32.dll, там есть такие функции
|
|||
|
||||
Rasool |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 58 Регистрация: 4.6.2011 Репутация: нет Всего: нет |
Вчера заработал LPT-порт. Использовал драйвер inpout32.dll, в качестве адреса порта использовал адрес из "Диапазона ввода/вывода (I/O)" из вкладки "Ресурсы" драйвера параллельного порта в "Диспетчере устройств".
|
||||
|
|||||
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |