LPT - jak odczytać stan

0

Witam,
zawsze bawiłem sie z lpt i sam ustawiałem stany, aż tu dzisiaj chciałem odczytać stany(akurat bawiłem sie szczegółowo z ACK, ale na innych też tak było). Bity z Status Portu (czyli wejście) maja na stałe stan wysoki czyli są wyjściami :| na innym komputerze też tak samo wygląda.

stany testowałem wspaniałym czeskim programem LPT debug, oraz w delphi z biblioteka IO.DLL. Zatem pytanie: jak odczytać Stan na pinie 10 - ACK

0

A w czym problem ?
przecież IO.DLL posiada fun do odczytu i zapisu portów .
Przy konfiguracji portu LPT na początkowy adres 0378 h ,
trzeba odczytać bajt z portu 0379 h .
Bit nr. 6 z tego bajtu ( licząc 76543210 ) to będzie stan końcówki 10 portu LPT .

Nie używałem Io.dll ale jeśli biblioteka działa poprawnie to powinno
tak to wyglądać .

Bajt odczytany z portu 379 h będzie zawierać stany poszczególnych końcówek :

  numer końcówki LPT    |   bit numer 

    11                           7  (zanegowany)
    10                           6
    12                           5
    13                           4
    15                           3
              
 
0

pisałem, problem w tym ze na pinie 10 (na innych też) jest napięcie czyli działa jak wyjście w stanie wysokim, i nic nie da że podłącze stan wysoki lub niski

0

Pod Xp z portu może korzystać jedynie proces systemowy, zatem potrzebny jest sterownik.
Polecam biblioteczke, która nie tylko upora się z powyższym problemem, ale też dzięki niej będziesz mógł w łatwy sposób korzystać z każdego pinu LPT.

a tu link: -->inpout32

0

to nic nie pomogło bo w w98 tez tak jest ze na porcie wejściowym jest stan wysoki :| niech odpisze ktoś który już odczytywał porty wejściowe w jakimś programie własnym

0

No czlowieku podałem Ci co trzeba zrobić ,
pin 10 to wejście .
Jaki stan na niego podasz to taki odczyta program .

W win 98 można bezpośrednio za pomocą asm dobrać się do portu i
program może być prymitywny .

W systemach opartych o win32 NT , trzeba użyć sterownika lub bibliotek
które to umożliwią .
Sposób dostępu więc może być różny .

dla Win 98/95 (tylko) :
http://www.win32prog.republika.pl/winapp/monlpt.zip

dla NT - nie chce mi się pisać...
Ale będzie to wyglądać podobnie i nie ważne czy użyjesz io.dll czy impout32.dll ...

Napisz o co Ci konkretnie chodzi bo jak na razie to nie wiadomo
kod programu , program , albo co ???

W io.dll i impout32.dll masz wszystko aby napisać program...

0

już zrobiłem, tzn wiem co trzeba zrobić zeby 0 bylo - trzeba zewrzeć pin do masy i jest 0 na wejściu. po prostu myślałem że troche inaczej działa to.

0

Standardowo , bez kombinacji rodzaju transmisji
część pinów LPT działa tylko jako wyjścia a część jako wejścia
które można programowo odczytać .
Oczywiście chodzi o wartości 0 i 1 ( stan niski i wysoki ).

0

ah, no ja wiem już i jest OK. po prostu zmyliło mi to że na wejściach jest napięcie, myślałem ze do wejść podaje się napięcie, a nie zwiera się do masy lub do niczego

0

Mozna podać .
Jesli na wejściu jest stan 1 , czyli ok 5 V to faktycznie wystarczy tylko
zewrzeć je do masy aby uzyskać zmianę na 0 .

Ale można je spokojnie sterować z układów TTL czy CMOS ,
czyli podawać na wejście napięcie z wyjścia scalaka ( nie większe od 5 V) , lub poprzez rezystor zabezpieczający (ograniczający prąd) i np. diodę zenera .

Należy pamiętać aby nie przekroczyć max napięcia wej. portu bo można
go uszkodzić .
Najlepiej stosować przy takich eksperymentach jakiś układ separujący galwanicznie całkowicie
port LPT albo przynajmniej pośredniczący - dodatkowe układy przekazujące stan , zasilane
napięciem o dozwolonej wartości .

Ps.
Znalazłem ciekawą rzecz na temat LPT i asm w trybie chronionym .

http://www.elektroda.pl/rtvforum/topic515123.html

  .

1 użytkowników online, w tym zalogowanych: 0, gości: 1