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 :
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
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 :
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