![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с LPT портом в XP [D7, WinXP]
Bil Bal Dur © (2004-09-19 09:57:00)Добрый день. Помогите организовать чтение\запись в LTP порт в XP. Раньше занимался этим на паскале, но эта программа работет только в дос и вин 9х, а теперь требуется написать приложение, работающее в XP (а в идеале - под любую вин).
Evg12 (2004-09-25 04:09:00) [1]Спасибо за понимание...
N170 (2004-09-24 18:33:00) [2]Ну, тогда удачи вам!
:)
Evg12 (2004-09-24 14:56:00) [3]O... Конфа глючит....
Evg12 (2004-09-24 14:51:00) [4]To N170: Вот вы тип клевый, прям как из анекдота "А я и не напрягаюсь".
Куда кинуться исходниками, чтоб глянул. Может из этого рая не выден ни х...
Я прошу извинения, попутно, конечно за напряг. Я б и сам сделал. Но уровень не тот. На AVR - пожалуйста, что угодно. А тут... ~ 0.
Evg12 (2004-09-24 14:51:00) [5]To N170: Вот вы тип клевый, прям как из анекдота "А я и не напрягаюсь".
Куда кинуться исходниками, чтоб глянул. Может из этого рая не выден ни х...
Я прошу извинения, попутно, конечно за напряг. Я б и сам сделал. Но уровень не тот. На AVR - пожалуйста, что угодно. А тут... ~ 0.
N170 (2004-09-24 08:36:00) [6]Можно и подправить.
Evg12 (2004-09-23 19:48:00) [7]Все. Понял.
На всякий случай скажу - в устройстве нет процессора. Там есть плис. Но это не важно.
Тогда как мое предложение - подправить чужой драйвер. (повторюсь - лучший из всех который я знаю).
N170 (2004-09-23 17:11:00) [8]Набор CreateFile - DeviceIoControl - WriteFile - ReadFile - CloseHandle обычен для работы с устройствами.
Если ваше устройство поддерживает протоколы обмена принтера, такие, как SPP, ECP, вполне естественно их использовать.
CreateFile без параметра расшаривания (FILE_SHARE_READ, FILE_SHARE_WRITE) действительно закроет доступ к порту другим приложениям, пытающимся с ним связаться через CreateFile.
То есть устройство должно выглядеть как принтер, возможно, с двунаправленным обменом.
Кроме того, не факт, что система перестанет делать попытки проверить, что за устройство подключено к порту. Так что оно должно поддерживать стандарт Pnp, только тогда система про него "забудет" и перестанет дёргать порт.
Evg12 (2004-09-23 12:39:00) [9]Хотелось бы начать е с драйвера. Не исключено, что и это не поможет. Я уже ничему не удивляюсть. Сделать захват не используя драйвер можно к примеру под CreateFile. Для пробы? Как?
А вообщето в почте ни как нельзя об этом поговорить? Не хочится позориться (мне).
N170 (2004-09-23 10:10:00) [10]Спрашивайте - отвечаю.
Evg12 (2004-09-23 01:49:00) [11]To N170: Куда подквался?
Evg12 (2004-09-21 22:41:00) [12]То KSergey ©: Я не спорю... Система не реалтайм. Но деваться то некуда - ты пользователям и заказчикам это обьясни. И чесотка со временем пройдет разумеется. Точно пройдет когда дадут подержаться за горло била, ну хоть секундочку... ;)
To N170: Оно. Но. Я предлагаю пределать чужой, проверенный драйвер. При чем исходники у меня есть. Так уж случилось что я перепробовал их все (все что смог в инете найти). Критерий был - корректная работа под всеми системами. Минимальное количество затраченного времени между обращением к обслуживающей процедуре/драйверу и непосредственное появление данных на порте. Но есть проблема - все на C. Я в нем к сожалению слаб.
N170 (2004-09-21 17:14:00) [13][10] Да почитать-то негде, никто этим не занимается.
Разве что сам напишу статейку, когда будет возможность.
А был когда-то давно проект такой LptVampir. Лежит оно здесь:
http://progrex.narod.ru/freeware.html
Вкратце, за счёт дополнительного драйвера защищённого режима расширяются возможности работы с параллельным портом: можно чётко ставить в соответствие номер порта и занимаемые им ресурсы, можно блокировать и разблокировать порт (нет "дёрганий" на линиях init и strobe от деятельности перечислителя устройств, порт не может быть использован мониторами печати и т.д. - он полностью наш!), даже прерывание от порта удавалось захватить.
Когда всё захвачено, да залочено, можно управлять портом на уровне регистрового обмена.
Все фичи сделаны корректно, через запросы к драйверу параллельного порта.
Но вот незадача - релизные исходники я потерял, остались только рабочие, они даже не компилятся и годятся разве что на статью.
Хотя, всё, что было сделано по этому проекту, работает до сих пор.
Посмотрите, если это то самое, могу проконсультировать, что ли.
"Как сделать драйвер для расширенного управления портом LPT"
Но публично, на форуме.
KSergey (2004-09-21 13:54:00) [14]> [10] Evg12 (21.09.04 13:41)
> звена. Не удивляюсь у всех моих знакомых программеров, у
> которых основное занятие - софт на микроконтроллеры, включая
> меня, руки давно чешутся порвать гейтса вдребезги и на пополпам.
Ага, как всегда этот виноват...
А то, что Win - НЕreal-time ОС - разумеется никого не волнует. Главное - порвать...
Вооще сменить ОС в данном случае - вполне оправданный шаг, по-моему. Вот только как на счет чесотки... Не уверен, что пройдет она ;)
Evg12 (2004-09-21 13:41:00) [15]Ну так все правильно. Если делать по уму, точней не поуму - какой там.., а так как мелкософт навязывает. Аппаратка размером с принтер и получается. И по цене... А если учесть что назначение внешнего порта ввод/вывод данных - и абсолютно не должно было подразумеваться что предназначено исключитьельно для принтера. Железяка получается размером в спичечный коробок и ценой в 1$. Единственное что нужно - прибить драйвер винды. Вот и вся математика.... Не понимаю я. Ну проверил один раз. Нет PNP дивайса. Чего опять туда лезть В любом случае LPT не предназначен для грячего горячего подключения, аппаратно.
А с тенденциии исчезновения LPT как такового и перехода в сторону USB я вообще балдею.
Этою надо, бля. Чтоб мигнуть лампочкой (для примера) нужно написать хренову гору драйверов, написать софт на микроконтроллер потом все это отладить. И всеравно временного контроля над передаваемыми данными никакого не получишь. Всегда есть неконтроллируемая задержка между моментом когда данные отправлены, и когда они пришли на внешнее устройство.
Мне к примеру попалась как раз, недавно, переделка старого ПРОВЕРЕННОГО ВРЕМЕНЕМ, ИДЕАЛЬНО РАБОТАЮЩЕГО, ДЕШЕВОГО В ПРООИЗВОДСТВЕ но имеющего обмен с компом через LPT устройства на USB. Весь отдел (5 человек) месяц!!! трахался пока заставили все это работать как надо.
Грубо говоря имеем комп, лампочку, а между ними проц изрядной стоимости и производительности не хуже чем 386. И скорость работы всей связки сводится к скорости наимедленеейшего звена. Не удивляюсь у всех моих знакомых программеров, у которых основное занятие - софт на микроконтроллеры, включая меня, руки давно чешутся порвать гейтса вдребезги и на пополпам.
To N170: Неужели примера нигде нет глянуть?....
atruhin (2004-09-21 06:24:00) [16]>>Evg12 (21.09.04 00:01) [8]
Почему тебя так сильно волнует дерганье Инит, strobe после загрузки винды. Должно отсекаться на уровне аппаратного протокола. Работал и с EPP и с ECP режимами ни каких проблем нет. То что это дерганье не волнует ни один принтер подтверждает мои слова. Так что проблема у тебя в железе.
Evg12 (2004-09-21 00:01:00) [17]To N170: в SDK нет ничего в DDK есть, понятное дело, но написано тААААк.... Честно говоря ничего не понял. Может подскажешь?
N170 (2004-09-20 11:59:00) [18]Да почитать-то, в общем, негде, в смысле отсутствия вторичной информации.
Можно взять документацию Windows DDK и поискать статьи по запросам IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE, IOCTL_INTERNAL_PARALLEL_PORT_FREE. Это оно самое!
Вот только как сие использовать, придётся догадаться самому...
Evg12 (2004-09-20 11:15:00) [19]To N170 На счет монопольной блокировки. В природе много чего есть. Примеры? Где почитать?
Bil Bal Dur (2004-09-20 10:26:00) [20]Неужели всё так сложно...:(