Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Полноценное управление LPT портом в Delphi, Универсальное управление LPT 
:(
    Опции темы
igorter
Дата 11.11.2019, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.11.2019

Репутация: нет
Всего: нет



Большая просьба помочь разобраться в вопросе, как лучше управлять из Delphi LPT портом, так чтобы программа была универсальна и работала под системами от Windows 98 до Windows 7. Очень давно интересуюсь этой темой, но однозначного решения так и не нашел. Есть вариант использовать драйвер inpout32.dll. Он вроде универсальный и работает под всеми вариантами Виндовс, даже 64-битными. Он только пишет в порты и читает из них, но не использует прерывания. 
Как получить доступ к прерываниям LPT-порта? Можно это делать как-то через WinAPI? Если да, то как? Был такой компонент под Delphi, но он коммерческий и работает только под ХР. Может какой-то бесплатный драйвер прерываний есть с примерами под Delphi?
Можно ли через WinAPI полноценно работать с портом во всех режимах передачи данных: ECP, SPP, EPP? Я не силен в особенностях WinAPI, может есть готовые примеры, как это делать во всех режимах и как оно работает. Весь русскоязычный Интернет перерыл, нигде ничего нет, только краткие куски кода, но где-то встречал, что через API можно всё делать без сторонних драйверов и программа будет универсальной. Буду очень благодарен за любую помощь в этом вопросе.

Поиском пользовался и на этом форуме и на других, но полного рабочего решения моего вопроса не нашел нигде.
PM MAIL   Вверх
Romikgy
Дата 12.11.2019, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(igorter @  11.11.2019,  20:20 Найти цитируемый пост)
Как получить доступ к прерываниям LPT-порта

написать свой драйвер лпт
Цитата(igorter @  11.11.2019,  20:20 Найти цитируемый пост)
Может какой-то бесплатный драйвер прерываний есть с примерами под Delphi?

драйверов платных я не видел ....
Цитата(igorter @  11.11.2019,  20:20 Найти цитируемый пост)
Я не силен в особенностях WinAPI

придется осилить 

ЗЫ  для какой цели вам вообще прерывания ? что колбеки или потоки не решат проблему ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
igorter
Дата 12.11.2019, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.11.2019

Репутация: нет
Всего: нет



Хочу сопрягать свои устройства с LPT и нужно знать в программе, когда он запрашивает передачу данных.
Постоянно проверять состояния регистров порта неправильно и создает лишнюю нагрузку на процессор.
inpout32.dll управляет портами под любой ОС. Нужна еще такая подобная библиотека для перехвата прерываний.
PM MAIL   Вверх
Romikgy
Дата 12.11.2019, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(igorter @  12.11.2019,  11:28 Найти цитируемый пост)
нужно знать в программе, когда он запрашивает передачу данных

кто мешает опрашивать это состояние в таймере? 
миллисекунды вполне реализуемы... мирко и нано , само приложение не осилит (это не риалтайм система)

Цитата(igorter @  12.11.2019,  11:28 Найти цитируемый пост)
Постоянно проверять состояния регистров порта неправильно и создает лишнюю нагрузку на процессор.

пишите свой драйвер

ЗЫ
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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
igorter
Дата 12.11.2019, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.11.2019

Репутация: нет
Всего: нет



Спасибо за отклик и помощь в моей теме. Немного разобрался и пришел к выводу, что всё, что мне нужно буду делать для старых машин через выше укзан драйвер для LPT, может найду еще где-то инфу про перехвату прерываний этого порта.
А для более новых применений буду использовать FT2232H, нужно только хорошо с ним разобраться, как его программировать. 
Нашел и в железе опробовал еще USB-LPT переходник на CY7C68013A. Правда мой принтер почему-то не хочет через него работать, хотя все пины работают, проверил тестером и программой тестирования, заложенной в его драйвере. У меня Windows 7 x64. 
Очень мало русскоязычного описания их программирования на DELPHI. Но кое-что нашел, буду осваивать. Моя давняя беда в незнании английского языка, от и привязан к тому, что найду в рунете...
PM MAIL   Вверх
Rasool
Дата 7.2.2023, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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, там есть такие функции 
Код

function Inp32(PortAdr: Word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: Word; Data: byte): byte; stdcall; external 'inpout32.dll';
То есть для работы с LPT-портом нужно указывать адрес порта PortAdr. Где его можно посмотреть? Во вкладке "Ресурсы" свойств драйвера?

PM MAIL   Вверх
Rasool
Дата 9.2.2023, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 4.6.2011

Репутация: нет
Всего: нет



Вчера заработал LPT-порт. Использовал драйвер inpout32.dll, в качестве адреса порта использовал адрес из "Диапазона ввода/вывода (I/O)" из вкладки "Ресурсы" драйвера параллельного порта в "Диспетчере устройств".

Код

function Inp32(PortAdr: Word): byte; stdcall; external 'inpout32.dll';
function Out32(PortAdr: Word; Data: byte): byte; stdcall; external 'inpout32.dll';

Код

    PortAdr1 := $EEFC;
    PortAdr2 := $EEFF;
    Data := 255;
    for PortAdr := PortAdr1 to PortAdr2 do
        Out32(PortAdr, Data);
    Sleep (2000);
    Data := 0;
    for PortAdr := PortAdr1 to PortAdr2 do
        Out32(PortAdr, Data);
    Sleep (2000);
    Data := 255;
    for PortAdr := PortAdr1 to PortAdr2 do
        Out32(PortAdr, Data);


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1560 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.