Въпрос за lpt
11 отговора
548 прегледа
Въпрос за lpt
Здравейте!
Може ли някой да ми подскаже начин, по който от приложна програма под Windows да определя базовия адрес на паралелния порт?
Благодаря предварително.
Може ли някой да ми подскаже начин, по който от приложна програма под Windows да определя базовия адрес на паралелния порт?
Благодаря предварително.
за Windows XP
Напр. приложната програма My Computer (винаги е инсталирана и има иконка на десктопа)
Щракаш върху нейната иконка с десния бутон на мишока и избираш от появилото се меню Properties. От него избираш табчето Hardware и после Device Manager. В появилото се дръвце на устройствата намираш Ports и в него Printer port (LPT1). Щракаш върху него с десния бутон и избираш Properties и после Resources. От листа на ресурсите намираш първия I/O range и гледаш първото число (вероятно 0378) - е те това е базовият адрес на паралелния порт! Имай предвид, че е в шестнадесетичен вид. Успех!
Щракаш върху нейната иконка с десния бутон на мишока и избираш от появилото се меню Properties. От него избираш табчето Hardware и после Device Manager. В появилото се дръвце на устройствата намираш Ports и в него Printer port (LPT1). Щракаш върху него с десния бутон и избираш Properties и после Resources. От листа на ресурсите намираш първия I/O range и гледаш първото число (вероятно 0378) - е те това е базовият адрес на паралелния порт! Имай предвид, че е в шестнадесетичен вид. Успех!
... и по-универсален начин.
Отваряш команден прозорец. Пишеш debug и натискаш клавиша ентер. Показва ти се една чертичка в началото на реда.
Пишеш d 40:0a
На екрана излиза нещо като:
По средата на първия ред виждаш 2 числа - (в моя случай 78 03, при теб може да са други).
Разменяш им местата и получаваш 0378 - това е адресът на пар. порт,
пак повтарям в шестандесетичен вид.
Пак успех!
П.П. От приложната програма debug се излиза като натиснеш q и клавиша enter.
Пишеш d 40:0a
На екрана излиза нещо като:
0040:0000 78 03 78 02 80 9F x.x...
0040:0010 23 C8 00 80 02 00 00 00-00 00 34 00 34 00 0D 1C #.........4.4...
0040:0020 71 10 0D 1C 64 20 20 39-34 05 30 0B 3A 27 30 0B q...d 94.0.:'0.
0040:0030 61 1E 0D 1C 20 39 34 05-30 0B 3A 27 30 0B 00 00 a... 94.0.:'0...
0040:0040 18 00 C3 00 01 00 00 00-4D 03 50 00 00 10 00 00 ........M.P.....
0040:0050 00 18 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0040:0060 0F 0C 00 D4 03 29 30 F6-03 00 F0 FF 48 12 0C 00 .....)0.....H...
0040:0070 00 00 00 00 00 00 00 00-14 14 14 14 01 01 01 01 ................
0040:0080 1E 00 3E 00 18 10 00 60-F9 11 ..>....`..
По средата на първия ред виждаш 2 числа - (в моя случай 78 03, при теб може да са други).
Разменяш им местата и получаваш 0378 - това е адресът на пар. порт,
пак повтарям в шестандесетичен вид.
Пак успех!
П.П. От приложната програма debug се излиза като натиснеш q и клавиша enter.
Re: ... и по-универсален начин.
То и сега си е така - потребителят трябва отнякъде да разбере адреса (например по начините, които описваш) и после да го въведе в моята програма. Ще ми се обаче да не го карам да го прави, а програмата сама да си взема адреса отнякъде.
Вторият метод май прави нещо такова: 0040:000А винаги съдържа търсения адрес, така ли? Как мога да прочета този адрес от програмата?
Вторият метод май прави нещо такова: 0040:000А винаги съдържа търсения адрес, така ли? Как мога да прочета този адрес от програмата?
Re: не става
Уви, така е. Все пак виндовса не си ли признава отнякъде тоя пусти адрес? Registry? Замая ми се главата да ровя из msdn, ама нищо не открих. Само на драйверски функции попадам, ама аз съм още малък за тях.
Re: Въпрос за lpt
А дали windows-а ще ти даде да ръчкаш по портовете от user mode програма ?
Re: Въпрос за lpt
Дава, защото използвам драйвер за целта. С това няма никакъв проблем. Искам да зная обаче къде да ръчкам.
Re: Въпрос за lpt
да не ползваш оня драйвер, дето отваря портове под нт ядро? моята препоръка е да не се занимаваш с такива неща, ако ръчкаш портове, само от твой драйвер и само незаети такива. а и не съм сигурен дали виндовса няма да ти "препоръча" същото, като види че се опитваш да отвориш зает порт. между другото, мисля че порта на лптто е задължително 378. ако е някакъв друг, вероятно не е истинско и да го ръчкаш или не, все тая. най-добре кажи за какво ти е. да не те блазни това че има 8 кабела, които директно може да контролираш? ако е така, препоръчвам ти да заебеш и да си избереш нещо от тука [линк]
NE SUTOR ULTRA CREPIDAM
NE SUTOR ULTRA CREPIDAM
Re: Въпрос за lpt
Не мога, той драйверът е съвсем непретенциозен и няма нищо общо с паралелния порт. Единствено позволява да изпълняваш еквивалент на асемблерските IN и OUT под Windows.
Re: Въпрос за lpt
Позна във всичко. Всъщност жиците са цели 17, което си е хубаво нещо. Мой драйвер не мога да напиша, защото не умея, пък и не усещам чак толкова да ми е притрябвало в момента. За адреса не знам, доколко е задължителен. Когато BIOS докладва, че адресът не е 0378, а нещо друго, когато ръчна на този (посочения от BIOS) адрес с въпросното драйверче, всичко работи по ноти. Тоест, от практическа гледна точка за мен е интересно да зная тъкмо него.
Аз също си мисля, че lpt-то вече е демоде и дори нищо чудно по някое време да отпадне. Засега обаче сме усвоили технологията по този начин и трябва да се съобразявам и с предпочитанията на хардуериста, с който работя. Ще разгледам информацията, която ми пращаш, това е интересна алтернатива. Само не ми е ясно, доколко би се променила (усложнила? или наопаки?) конструкцията на външното устройство, ако го управляваме през usb.
Аз също си мисля, че lpt-то вече е демоде и дори нищо чудно по някое време да отпадне. Засега обаче сме усвоили технологията по този начин и трябва да се съобразявам и с предпочитанията на хардуериста, с който работя. Ще разгледам информацията, която ми пращаш, това е интересна алтернатива. Само не ми е ясно, доколко би се променила (усложнила? или наопаки?) конструкцията на външното устройство, ако го управляваме през usb.