Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Работа с LPT портом в XP   Найти похожие ветки 

 
Bil Bal Dur   (2004-09-19 09:57) [0]

Добрый день. Помогите организовать чтение\запись в LTP порт в XP. Раньше занимался этим на паскале, но эта программа работет только в дос и вин 9х, а теперь требуется написать приложение, работающее в XP (а в идеале - под любую вин).


 
Зяц ©   (2004-09-19 11:33) [1]

Кагда я падключал к LPT порту герлянду, я нашёл такую вещь: dlportio от Driver linx.
Лучше в гугле искать.
Попробуйте - ни пожалеите. У меня работает под Мастдлай XP.


 
GanibalLector ©   (2004-09-19 11:46) [2]

Ну,и в чем проблема???Статей валом!!! А вообще,теперь тебе прийдется изучить пару API ф-ций: createfile,readfile,writefile,closehandle ну и остальные.


 
Evg12   (2004-09-19 23:25) [3]

Готовся. Скоро ты нарвешся на неприятный момент - шевеление порта примерно первые 3 минуты после загрузки. Пофигу, хоть createfile делай, хоть что угодно делай. Инит, strobe, будет дергаться хоть тресни.
Ни один из известных мне драйверов не решил эту проблему.
И никто за 3 месяца биения по всем форумам так ничего толком не ответил.


 
N170   (2004-09-19 23:32) [4]

Есть такая вещь, монопольная блокировка.

DlPortIo не поможет.

Надо писать свой драйвер и из него работать с драйвером параллельного порта, блокируя его на время, тогда ничего дёргаться лишний раз не будет...


 
Bil Bal Dur   (2004-09-20 10:26) [5]

Неужели всё так сложно...:(


 
Evg12   (2004-09-20 11:15) [6]

To N170 На счет монопольной блокировки. В природе много чего есть. Примеры? Где почитать?


 
N170   (2004-09-20 11:59) [7]

Да почитать-то, в общем, негде, в смысле отсутствия вторичной информации.
Можно взять документацию Windows DDK и поискать статьи по запросам IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE, IOCTL_INTERNAL_PARALLEL_PORT_FREE. Это оно самое!
Вот только как сие использовать, придётся догадаться самому...


 
Evg12   (2004-09-21 00:01) [8]

To N170: в SDK нет ничего в DDK есть, понятное дело, но написано тААААк.... Честно говоря ничего не понял. Может подскажешь?


 
atruhin ©   (2004-09-21 06:24) [9]

>>Evg12   (21.09.04 00:01) [8]
Почему тебя так сильно волнует дерганье Инит, strobe после загрузки винды. Должно отсекаться на уровне аппаратного протокола. Работал и с EPP и с ECP режимами ни каких проблем нет. То что это дерганье не волнует ни один принтер подтверждает мои слова. Так что проблема у тебя в железе.


 
Evg12   (2004-09-21 13:41) [10]

Ну так все правильно. Если делать по уму, точней не поуму - какой там.., а так как мелкософт навязывает. Аппаратка размером с принтер и получается. И по цене... А если учесть что назначение внешнего порта ввод/вывод данных - и абсолютно не должно было подразумеваться что предназначено исключитьельно для принтера. Железяка получается размером в спичечный коробок и ценой в 1$. Единственное что нужно - прибить драйвер винды. Вот и вся математика.... Не понимаю я. Ну проверил один раз. Нет PNP дивайса. Чего опять туда лезть В любом случае LPT не предназначен для грячего горячего подключения, аппаратно.  
А с тенденциии исчезновения LPT как такового и перехода в сторону USB я вообще балдею.
Этою надо, бля. Чтоб мигнуть лампочкой (для примера) нужно написать хренову гору драйверов, написать софт на микроконтроллер потом все это отладить. И всеравно временного контроля над передаваемыми данными никакого не получишь. Всегда есть неконтроллируемая задержка между моментом когда данные отправлены, и когда они пришли на внешнее устройство.
Мне к примеру попалась как раз, недавно, переделка старого ПРОВЕРЕННОГО ВРЕМЕНЕМ, ИДЕАЛЬНО РАБОТАЮЩЕГО, ДЕШЕВОГО В ПРООИЗВОДСТВЕ но имеющего обмен с компом через LPT устройства на USB. Весь отдел (5 человек) месяц!!! трахался пока заставили все это работать как надо.  
Грубо говоря имеем комп, лампочку, а между ними проц изрядной стоимости и производительности не хуже чем 386. И скорость работы всей связки сводится к скорости наимедленеейшего звена. Не удивляюсь у всех моих знакомых программеров, у которых основное занятие - софт на микроконтроллеры, включая меня, руки давно чешутся порвать гейтса вдребезги и на пополпам.

To N170: Неужели примера нигде нет глянуть?....


 
KSergey ©   (2004-09-21 13:54) [11]

> [10] Evg12   (21.09.04 13:41)
> звена. Не удивляюсь у всех моих знакомых программеров, у
> которых основное занятие - софт на микроконтроллеры, включая
> меня, руки давно чешутся порвать гейтса вдребезги и на пополпам.

Ага, как всегда этот виноват...
А то, что Win - НЕ real-time ОС - разумеется никого не волнует. Главное - порвать...

Вооще сменить ОС в данном случае - вполне оправданный шаг, по-моему. Вот только как на счет чесотки... Не уверен, что пройдет она ;)


 
N170   (2004-09-21 17:14) [12]

[10] Да почитать-то негде, никто этим не занимается.
Разве что сам напишу статейку, когда будет возможность.

А был когда-то давно проект такой LptVampir. Лежит оно здесь:
http://progrex.narod.ru/freeware.html

Вкратце, за счёт дополнительного драйвера защищённого режима расширяются возможности работы с параллельным портом: можно чётко ставить в соответствие номер порта и занимаемые им ресурсы, можно блокировать и разблокировать порт (нет "дёрганий" на линиях init и strobe от деятельности перечислителя устройств, порт не может быть использован мониторами печати и т.д. - он полностью наш!), даже прерывание от порта удавалось захватить.

Когда всё захвачено, да залочено, можно управлять портом на уровне регистрового обмена.

Все фичи сделаны корректно, через запросы к драйверу параллельного порта.

Но вот незадача - релизные исходники я потерял, остались только рабочие, они даже не компилятся и годятся разве что на статью.
Хотя, всё, что было сделано по этому проекту, работает до сих пор.

Посмотрите, если это то самое, могу проконсультировать, что ли.
"Как сделать драйвер для расширенного управления портом LPT"
Но публично, на форуме.


 
Evg12   (2004-09-21 22:41) [13]

То KSergey ©: Я не спорю... Система не реалтайм. Но деваться то некуда - ты пользователям и заказчикам это обьясни. И чесотка со временем пройдет разумеется. Точно пройдет когда дадут подержаться за горло била, ну хоть секундочку... ;)
To N170: Оно. Но. Я предлагаю пределать чужой, проверенный драйвер. При чем исходники у меня есть. Так уж случилось что я перепробовал их все (все что смог в инете найти). Критерий был - корректная работа под всеми системами. Минимальное количество затраченного времени между обращением к обслуживающей процедуре/драйверу и непосредственное появление данных на порте. Но есть проблема - все на C. Я в нем к сожалению слаб.


 
Evg12   (2004-09-23 01:49) [14]

To N170: Куда подквался?


 
N170   (2004-09-23 10:10) [15]

Спрашивайте - отвечаю.


 
Evg12   (2004-09-23 12:39) [16]

Хотелось бы начать е с драйвера. Не исключено, что и это не поможет. Я уже ничему не удивляюсть. Сделать захват не используя драйвер можно к примеру под CreateFile. Для пробы? Как?
А вообщето в почте ни как нельзя об этом поговорить? Не хочится позориться (мне).


 
N170   (2004-09-23 17:11) [17]

Набор CreateFile - DeviceIoControl - WriteFile - ReadFile - CloseHandle обычен для работы с устройствами.
Если ваше устройство поддерживает протоколы обмена принтера, такие, как SPP, ECP, вполне естественно их использовать.
CreateFile без параметра расшаривания (FILE_SHARE_READ, FILE_SHARE_WRITE) действительно закроет доступ к порту другим приложениям, пытающимся с ним связаться через CreateFile.
То есть устройство должно выглядеть как принтер, возможно, с двунаправленным обменом.
Кроме того, не факт, что система перестанет делать попытки проверить, что за устройство подключено к порту. Так что оно должно поддерживать стандарт Pnp, только тогда система про него "забудет" и перестанет дёргать порт.


 
Evg12   (2004-09-23 19:48) [18]

Все. Понял.
На всякий случай скажу - в устройстве нет процессора. Там есть плис. Но это не важно.
Тогда как мое предложение - подправить чужой драйвер. (повторюсь - лучший из всех который я знаю).


 
N170   (2004-09-24 08:36) [19]

Можно и подправить.


 
Evg12   (2004-09-24 14:51) [20]

To N170: Вот вы тип клевый, прям как из анекдота "А я и не напрягаюсь".
Куда кинуться исходниками, чтоб глянул. Может из этого рая не выден ни х...
Я прошу извинения, попутно, конечно за напряг. Я б и сам сделал. Но уровень не тот. На AVR - пожалуйста, что угодно. А тут... ~ 0.


 
Evg12   (2004-09-24 14:51) [21]

To N170: Вот вы тип клевый, прям как из анекдота "А я и не напрягаюсь".
Куда кинуться исходниками, чтоб глянул. Может из этого рая не выден ни х...
Я прошу извинения, попутно, конечно за напряг. Я б и сам сделал. Но уровень не тот. На AVR - пожалуйста, что угодно. А тут... ~ 0.


 
Evg12   (2004-09-24 14:56) [22]

O... Конфа глючит....


 
N170   (2004-09-24 18:33) [23]

Ну, тогда удачи вам!
:)


 
Evg12   (2004-09-25 04:09) [24]

Спасибо за понимание...



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.025 c
1-1098207334
td
2004-10-19 21:35
2004.10.31
прерывание выполнения большой функции


6-1092825898
ctranik
2004-08-18 14:44
2004.10.31
как скачать Web-страницу которая лежит в другой "Папке"


3-1096965656
Mitrofan
2004-10-05 12:40
2004.10.31
Утилита которая показывает загрузку сервера Firebird


14-1097475279
Мазут Береговой
2004-10-11 10:14
2004.10.31
Американцы сняли фильм. Называется "Такси"...


14-1097767576
Поручик
2004-10-14 19:26
2004.10.31
FooBar2000





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский