logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie LPT w WIN XP bez dodatkowych driverów ( WinAPI )

blackrage 21 Lis 2006 03:52 4988 0
REKLAMA
  • Sterowanie portem LPT poprzez WinAPI [CreateFile, WriteFile]

    W wielu postach poruszany był temat obsługi portu LPT w windowsie xp, który to 'broni' swoich portów. Oczywiście dosyć łatwo jest to zrealizować, za pomocą dodatkowych driverów, takich jak np : WinIO, ZLPortIO, NTPort itd. Ja jednak chciałbym przedstawić jak to wykonać poprzez systemowe WinAPI. Piszę głównie w delphim i w oparciu o ten język zaprezentuję jak to napisać.

    var
    hLPT : THandle; { uchwyt naszegoportu }
    ret : dword; { potrzebne na dane 'zwrotne' }
    data : integer; { dana do wystawienia }
    begin
    hLPT := CreateFile('LPT1', GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); {pobieramy uchwyt do portu :}
    WriteFile(hLPT, data, 1, ret, nil); {wypisujemy daną :}
    CloseHandle( hLPT ); {zwalniamy uchwyt :}
    end;

    Ot i cała filozofia.
    Oczywiście, po otwarciu portu, dane możemy zapisywać wielokrotnie zanim zwolnimy uchwyt.
    Bardzo istotne jest prawidłowe połączenie gniazda, inaczej program nam nie zadziała, złącze LPT służy generalnie do komunikacji dwustronnej i kiedy system 'wysyła' coś od siebie, to oczekuje 'odpowiedzi' i tutaj go troszkę oszukamy ...

    pin 10 [ ACK ] - drukarka niskim poziomem na tym pinie potwierdza odebranie bajtu i gotowość na przyjęcie następnego
    pin 11 [ BUSY ] - wysoki poziom na tym pinie oznacza, że drukaka jest odłączona, zajęta itd.
    pin 12 [ P.END ] - stan wysoki na tym pinie oznacza brak papieru w drukarce

    Na podanych wyżej pinach wymusimy stan niski i 'odpowiemy' systemowi, że drukarka [10] jest gotowa, [11] nie ma przeciwwskazań do odbierania danych i [12] ma papier :] ( stan niski możemy pobrać z pinów 18 - 25 )

    schemat elektryczny :
    Sterowanie LPT w WIN XP bez dodatkowych driverów ( WinAPI )

    bezpośrednio do portu nie możemy podłączyć czegoś "mocniejszego", ze względu na jego niską wydajność prądową (ok. 20mA/pin), ale zamiast diód led,możemy wstawić optotriaki, fototranzystory itd. i przez nie sterować czymś większym

    dodaję również mały programik do przetestowania ww schematu :
    http://plmiscelektronika.elektroda.net/files/45_1164076493.rar
    oraz jego kod źródłowy [ delphi 3 ] :
    http://plmiscelektronika.elektroda.net/files/40_1164076594.rar

    opinie, komentarze i punkty mile widziane

    Fajne? Ranking DIY
    O autorze
    blackrage
    Poziom 15  
    Offline 
    Specjalizuje się w: programowanie delphi, c, c++, c#
    blackrage napisał 177 postów o ocenie 12, pomógł 10 razy. Mieszka w mieście Lublin. Jest z nami od 2004 roku.
  • REKLAMA
REKLAMA