help-програмирование lpt порта
и как мне быть?
Пробуй из под 98-й. Она пропускает
Пробуй из под 98-й. Она пропускает
это не совсем верно… точнее совсем не верно 😉 как 98, так и NT позволяет обращаться из юзер-спейса к портам из нижнего адресного пространства (до 0x3FF вроде бы)… НО!!! только ДОС-приложениям в рамках эмуляции ДОС.
к тому же, если ты пишешь тиражируемое приложение - похорони идею писать его под 98 винды.
PS: еще можно посоветовать обращаться за советами в соответсвующий форум, а то тут тебе насоветуют 😉
PS: еще можно посоветовать обращаться за советами в соответсвующий форум, а то тут тебе насоветуют 😉
Ну почему же? Рассказываю.
-
Простое решение: Под NT/2000/XP взять и разрешить прямой доступ (нужны только права администратора). Вся необходимая информация и драйвер тут: www.beyondlogic.org/porttalk/porttalk.htm
-
Если нужно еще проще, чем п. 1, тогда поможет вот это: www.logix4u.net/inpout32.htm Одна DLL, без _отдельного_ драйвера.
-
Написать (а лучше взять готовый, или собрать из примера в DDK) свой драйвер устройства.
ps: Ресурсы по параллельному порту:
- Еще сайте BeyondLogic про параллельный порт: www.beyondlogic.org/index.html раздел “Parallel Port Interfacing”.
- Еще сайт про параллельный порт “Parallel Port Central”: www.lvr.com/parport.htm
простите, нисколько не хотел задеть форум или форумчан, просто выразился неудачно, я хотел сказать, что существуют другие форумы, более заточенные под такие вопросы 😉
и всё-таки, при всё уважении хочется заметить: если есть желание обращаться к произвольным портам, то путь один - написать драйвер, всё остальное - костыли, которые зачастую ломаются после следующего же изменения в windows.
но на мой взгляд лезть к портам вообще не нужно, LPT - стандартный девайс и обращатся к нему нужно стандартными для системы методами.
но тут рождается другой вопрос: если человеку нужно работать со стандартным портом, то почему бы не использовать стандартные средства ? почему обязательно нужно лезть к портам ?
Скорее всего, ему нужно не байты пересылать, а управлять отдельными pin’ами порта, включая всякие там “strobe”, “line feed” и прочие. Так как, скорее всего, учитывая местную специфику, это связано с управлением чпу станком.
ps: Драйверы тоже от версии к версии переписывать иногда надо. Большое количество дров для NT не работает в XP и 2000. Смотря что и как написано. PortTalk - очень хорошее решение для уже написанных продуктов (при чем давно и зачастую под дос, как, например симулятор CSM).
ну что тут сказать ? при любом подходе засад хватает, операционка такая 😉
Незнаю как но у меня всё срослось, экспериментально выяснол,
что чтобы считать регистр состояния LPT, надо сначала, пофиг че запихнуть в регистр данных.
Причем запись в регистр данных на моем компе производится только
2-16 кратным повторением одного и одного и тогоже байта.
На это я убил тоже около недели. Вообщем спасибо.
т.е. станок будет резать правильно со 2го - 16го прохода ? - круто! 😁
Незнаю как но у меня всё срослось,
Ну мы-то тем более ничего не знаем о ваших изысканиях. Вы бы написали поподробнее, глядишь - и прояснилось бы. Как минимум надо знать:
- версия os, если стоит servicepack - какой?
- язык и версия компилятора: фирма, версия, servicepack
- режим lpt порта: ecp/epp/bi-directional
- адрес порта, irq
- кусок кода программы, где мы пытаемся читать и писать в порт, опрашивать или устанавливать статус
Код желательно с комментариями, относительно того, что вы _подразумевали_ этим куском кода сделать.
есть еще вариант: пиши под линукс 😃
там есть замечательная функция ioperm, которая открывает руту доступ к нижнему пространству портов. проверено, мин нет - мой текущий проект так и работает, весь код работы с портом - 300 строк с выкрутасами.
PS: а такого, как описываеш - в принципе быть не может (во всяком случае не должно).