|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.11.2019, 15:44 | #1 |
Пользователь
Регистрация: 11.11.2019
Сообщений: 10
|
Полноценное управление LPT-портом в Delphi, как лучше?
Большая просьба помочь разобраться в вопросе, как лучше управлять из Delphi LPT портом, так чтобы программа была универсальна и работала под системами от Windows 98 до Windows 7. Очень давно интересуюсь этой темой, но однозначного решения так и не нашел. Есть вариант использовать драйвер inpout32.dll. Он вроде универсальный и работает под всеми вариантами Виндовс, даже 64-битными. Он только пишет в порты и читает из них, но не использует прерывания.
Как получить доступ к прерываниям LPT-порта? Можно это делать как-то через WinAPI? Если да, то как? Был такой компонент под Delphi, но он коммерческий и работает только под ХР. Может какой-то бесплатный драйвер прерываний есть с примерами под Delphi? Можно ли через WinAPI полноценно работать с портом во всех режимах передачи данных: ECP, SPP, EPP? Я не силен в особенностях WinAPI, может есть готовые примеры, как это делать во всех режимах и как оно работает. Весь русскоязычный Интернет перерыл, нигде ничего нет, только краткие куски кода, но где-то встречал, что через API можно всё делать без сторонних драйверов и программа будет универсальной. Буду очень благодарен за любую помощь в этом вопросе. |
12.11.2019, 08:36 | #2 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Зачем именно LPT то?? его уже на современных компах не ставят даже.
связка FT + МК какой нибудь куда полезнее будет. Да и пинов больше. И через USB можно подключать без всяких драйверов.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
12.11.2019, 12:20 | #3 |
Пользователь
Регистрация: 11.11.2019
Сообщений: 10
|
А как FT в режиме паралельного порта управлять из Delphi, все сайты перерыл, полноценного примера такого модуля так и не нашел?? Например ft2232h перевести в паралельный режим и управлять им?
Но вопрос по LPT всеравно актуален для меня. Управлять портами на всех Виндовсах можно через inpout32.dll. А как в Delphi получить доступ к прерываниям порта, нигде не могу найти. Чтобы постоянно в цикле не проверять его регистры? |
12.11.2019, 12:29 | #4 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
У вас задача то какая?? Что там за древнее устройство на LPT?? Сам FT это драйвер последовательного порта. На другой конец вешаете ему какой нибудь микроконтроллер который возьмет на себя взаимодейтвие с железом. Получил команду по COM порту типа двигай вперед и сам уже формирует пакеты на LPT и дергает стробом.
Потому что с ПК вы дергать стробом на частоте 10 мегагерц не сможете никаким спосбом, а с МК как два пальца. Цитата:
Так этого никто не сделает. Берете библиотеку и пишете свой обработчик. Который будет слушать данные и выкидывать нужные прерывания. Да и вообще .. паралельный порт он же не умеет думать самостоятельно. Там не существует аппаратного протокола обмена. Для общения строб данных нужно дергать. Частота именно в софте и определяется. Причем портом управлять может только мастер. Не понятно какие именно вам прерывания оттуда должны приходить.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
12.11.2019, 21:45 | #5 |
Пользователь
Регистрация: 11.11.2019
Сообщений: 10
|
У меня задача создавать приборы с универсальным обменом данными с ПК. Для старых LPT, для новых FT2232H на USB. СОМ порт не очень люблю, но тоже приходилось использовать. Главное - универсальность хостовой программы на ПК, чтобы она под разными ОС нормально работала. Была еще с института хорошая затея универсального программатора-тестера различных микросхем, не только памяти, но и логики, процессоров. Даже диплом написал по этой тематике. Вот и думал сейчас ее развинуть, так как тогда уперся в технические проблемы, которых не мог решить, а сейчас уже есть мысли как это сделать.
Но перехват аппаратных прерываний нужен очень. Был такой компонент с собственным драйвером под Delphi, но он только под ХР работает, а мне нужна его универсальность. Как-то люди с прерываниями работают. В Delphi даже служебное слово есть interrupt. Но как его использовать нигде не нашел. |
12.11.2019, 22:18 | #6 | |
Пользователь
Регистрация: 05.05.2018
Сообщений: 92
|
Цитата:
|
|
13.11.2019, 02:27 | #7 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,894
|
Тогда USB или СОМ. LPT лучше забыть.
|
13.11.2019, 09:41 | #8 | |||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
igorter
Вы из мухи делаете слона. Самое простое купить Arduino NANO оно стоит как один сэндвич. Подключить к ней по UART либо USB. А опрос ваших ножик один цикл. ---------------------------- Вы бы ещё OS/2 вспомнили. Кому ваш win98 нужен? Это же такое старьё, как гуано мамонта. Цитата:
Так что для его замены пишите функцию на ассемблере с iret. Только в виндоусе вам все равно не понадобится, там архитектура ядра подразумевает что-вы цепляете обычную функцию в качестве обработчика. обменом данными с ПК.[/QUOTE] Какую шину выбрать? Ethernet, COM, USB-COM, USB-HID, LPT. Universal Asynchronous Receiver-Transmitter (сокращенно UART) universal serial bus (сокращенно USB) В самом название уже сказано что они универсальные. Ethernet - требует установки wIP что весить много и для самых младших микроконтроллёров не годится. В остальном недостатков нету. COM он же UART не требует практически ничего. Из недостатка маленькая скорость. USB - из недостатка требует установку драйвера со стороны компьютера. LPT - уже давно не ставится в компьютеры. ДА и если говорить открыто, то подводных камней там полно: https://www.mouser.com/datasheet/2/2...10x-596295.pdf Учесть что DMA работает из 1 МБ если за дейстовать доп адреса то из 16 МБ. Цитата:
И плюс к тому же каждый производитель материнки ставит свой мультик. Так что программируется оно немного по разному. Поэтому полноценной поддержки LPT нету даже в виндоусе! ---------------------- Цитата:
if (OS=Win98) then ... if (OS=WinXP) then ... if (OS=Win7) then ... if (OS=Win8) then ... if (OS=Win10) then ... И для каждой ОС нужен свой драйвер. Так как архитектура драйверов отличается. Но тут можно отделаться 3 штуками для Win98, WinNT_32, WinNT_64. Но тестировать надо на всех. Так что проще взять готовый USB-FT2232H и не мучится.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|||
13.11.2019, 10:38 | #9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,619
|
........
Последний раз редактировалось digitalis; 13.11.2019 в 11:22. Причина: а, всё равно... |
14.11.2019, 17:48 | #10 |
Пользователь
Регистрация: 11.11.2019
Сообщений: 10
|
Про FT2232H я знаю давно, но была идея именно LPT осилить. Есть еще такая идея. На основе FT2232H и AtMega128 сделать такой себе сетевой хаб одновременно между портами USB, COM и LPT, чтобы соединяясь по этим портам компьютеры всех поколений и всех версий ОС Майкрософта могли между собой свободно обмениваться информацией не завися от прихотей и ограничений TCP-сетевого протокола, да и не на всех старых компьютерах были LAN-платы. Идея оригинальная и вроде никто такого не делал. Скорость обмена по современным меркам конечно будет очень низкой, но теоретически работать должно начиная от 286 процессора и до I7.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
управление LPT портом | SAMOUCHKA | Общие вопросы C/C++ | 7 | 15.07.2012 13:13 |
Управление LPT портом под FreeBSD | miguel_condie | Общие вопросы C/C++ | 2 | 14.08.2010 07:59 |
Управление LPT портом | nikleb | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 27.05.2010 19:40 |
Управление COM портом средствами Visual Basic 6. | С.М.С | Помощь студентам | 2 | 05.04.2010 18:22 |
Управление LPT портом | Kuzmichinishe | Помощь студентам | 3 | 28.09.2009 11:07 |