Sebastian Bialy
Guest
Mon Sep 20, 2004 4:09 pm
Witam!
Jest urządzenie. Komunikuje się z pecetem przez port drukarki.
Konkretnie dane z urządzenia wysyłane sią do portu drukarki poprzez
linie d0-d7. Program na PC odczytuje stan tych lini.
I jest problem jeden - najwazniejszy komputer nie czyta danych z tego
portu mimo, że 10 innych czyta. Wszelkie kombinacje z portem drukarki w
biosie wykonane. Niestety nie chce czytać danych.
Osoba która musi to urządzenie podąłczyć kupiła w końcu port drukarki
(dwukierunkowy) na złączu PCI. Niestety port ten po uruchomieniu
przydzielił sobie zasoby następujące (po niemiecku):
E/A - Bereich CC00 - CC07
E/A - Bereich C800 - C807
(i nazywa sie LPT1)
Wygląda to zgoła inaczej, niż 378/278 znane ze standardowych portów
drukarki.
Pytanie zatem mam takie: czy ktokolwiek próbował kiedykolwiek dobrać się
do takiego nietypowego portu ? Przebudowa urządzenia nie wchodzi w grę,
ponieważ jestem 1300km od miejsca gdzie stoi sprzęt. W tej chwili
program korzysta z biblioteki inpout32.dll i działał znakomicie na
prawie wszystkich komputerach. Licze na to, że "grzebanie" po tych
portach powinno dac podobny rezultat co grzebanie po portach 378/278.
Czy ktoś mógłby to potwierdzić ? Musze pisać aplikacje w ciemno i
chciałbym ieć cień szansy, że zadziała.
PS. Komputer z kapryśnym portem drukarki to raczej nowoczesny sprzęt -
jakiś athlon. Czy coś się zmieniło ostatnio w hardware lpt? Pytam bo na
moim athlonie działa jak trzeba bez zająknięcia.
--
Sebastian Bialy - heby@poczta.onet.pl
J.F.
Guest
Mon Sep 20, 2004 4:32 pm
On Mon, 20 Sep 2004 19:09:16 +0200, Sebastian Bialy wrote:
Quote:
Osoba która musi to urządzenie podąłczyć kupiła w końcu port drukarki
(dwukierunkowy) na złączu PCI. Niestety port ten po uruchomieniu
przydzielił sobie zasoby następujące (po niemiecku):
E/A - Bereich CC00 - CC07
E/A - Bereich C800 - C807
(i nazywa sie LPT1)
Wygląda to zgoła inaczej, niż 378/278 znane ze standardowych portów drukarki.
Pytanie zatem mam takie: czy ktokolwiek próbował kiedykolwiek dobrać się
do takiego nietypowego portu ?
Ze starych czasow to ci powiem ze np karty ethernet "ne2000
compatible" na pci dawalo sie obsluzyc driverem z czasow ISA.
O ile oczywiscie driver dal sobie wpisac odpowiednie adresy - niektore
wiedzialy "lepiej" - sam podmienialem 0320 w pliku na EE00 i
wybieralem trzecia onfiguracje z listy ..
Oczywiscie badz swiadom ze ten adres potrafi sie zmienic przy
najmniejszej okazji. No i ze przydzielone przerwanie moze byc
dzielone.
Quote:
W tej chwili
program korzysta z biblioteki inpout32.dll i działał znakomicie na
prawie wszystkich komputerach.
PS. Komputer z kapryśnym portem drukarki to raczej nowoczesny sprzęt -
jakiś athlon. Czy coś się zmieniło ostatnio w hardware lpt?
Przez ostatnie 5 lat raczej nic. Moze port juz spalony ?
A moze windows jakies nowe i olewa ustawienia w biosie, ustawilo
np port jednokierunkowy ?
A ten inpout32 to juz dostosowany do NT/XP ? Bo moze w tym problem ?
J.
Sebastian Bialy
Guest
Mon Sep 20, 2004 4:43 pm
J.F. wrote:
Quote:
Ze starych czasow to ci powiem ze np karty ethernet "ne2000
compatible" na pci dawalo sie obsluzyc driverem z czasow ISA.
O ile oczywiscie driver dal sobie wpisac odpowiednie adresy - niektore
wiedzialy "lepiej" - sam podmienialem 0320 w pliku na EE00 i
wybieralem trzecia onfiguracje z listy ..
Oczywiscie badz swiadom ze ten adres potrafi sie zmienic przy
najmniejszej okazji. No i ze przydzielone przerwanie moze byc
dzielone.
Licze na to, że się da, teraz szybko doszywam do aplikacji możliwśc
pobierania numerka prosto z pliku konfiguracyjnego ... niestety nie
wiem, czy inpout32.dll pozwoli na podanie taiego adresu. Znasz moze
alternatywę ? Coś co pozwala mi grzebać po portach LPT.
Quote:
Przez ostatnie 5 lat raczej nic. Moze port juz spalony ?
A moze windows jakies nowe i olewa ustawienia w biosie, ustawilo
np port jednokierunkowy ?
Bo ja wiem ... praktycznie wszędzie działa, a na tym jedeynm, na którym
musi działać - nie chce. Port na sztywno pisze w win że dwukierunkowy -
drukarka działa na nim.
Quote:
A ten inpout32 to juz dostosowany do NT/XP ? Bo moze w tym problem ?
Sprawdzany nawielu róznych windowsach, działa bez pudła.
--
Sebastian Bialy - heby@poczta.onet.pl
Sebastian Bialy
Guest
Mon Sep 20, 2004 6:19 pm
Sebastian Bialy wrote:
Quote:
Osoba która musi to urządzenie podąłczyć kupiła w końcu port drukarki
(dwukierunkowy) na złączu PCI. Niestety port ten po uruchomieniu
przydzielił sobie zasoby następujące (po niemiecku):
E/A - Bereich CC00 - CC07
E/A - Bereich C800 - C807
(i nazywa sie LPT1)
Zaryzykowałem i posłałem program, który zamiast po porcie 378 grzebie po
porcie c800. Okazało się, że działa

To tak dla wszystkich, którzy
będą kiedyś googlować. Korzystam z biblioteki inpout32.dll która co
prawda w dokumentacji stwierdza, że obsługuje wyłącznie 378/278 ale jak
widać dziaął znakomicie na innych zakresach we/wy.
--
Sebastian Bialy - heby@poczta.onet.pl
Krzysztof Rudnik
Guest
Mon Sep 20, 2004 6:54 pm
Sebastian Bialy wrote:
Quote:
Sebastian Bialy wrote:
Osoba która musi to urządzenie podąłczyć kupiła w końcu port drukarki
(dwukierunkowy) na złączu PCI. Niestety port ten po uruchomieniu
przydzielił sobie zasoby następujące (po niemiecku):
E/A - Bereich CC00 - CC07
E/A - Bereich C800 - C807
(i nazywa sie LPT1)
Zaryzykowałem i posłałem program, który zamiast po porcie 378 grzebie po
porcie c800. Okazało się, że działa

To tak dla wszystkich, którzy
będą kiedyś googlować. Korzystam z biblioteki inpout32.dll która co
prawda w dokumentacji stwierdza, że obsługuje wyłącznie 378/278 ale jak
widać dziaął znakomicie na innych zakresach we/wy.
Tylko pamietaj ze w PCI adresy sa przydzielane dynamicznie
a wrecz teoretycznie urzadzenia IO moga zostac zmapowane do pamieci.
Krzysiek Rudnik
Sebastian Bialy
Guest
Mon Sep 20, 2004 7:19 pm
Krzysztof Rudnik wrote:
Quote:
Tylko pamietaj ze w PCI adresy sa przydzielane dynamicznie
a wrecz teoretycznie urzadzenia IO moga zostac zmapowane do pamieci.
Nie ma znaczenia - zawsze można przestawić adres IO na dowolny inny -
dorobiłem proteze odczytującą z pliku ten adtres, więc user może łatwo
zmienić. Coś mi się wydaje jednak, że bez zmian w hardware samo z siebie
nie powinno się zmienić.
--
Sebastian Bialy - heby@poczta.onet.pl
Adam Dybkowski
Guest
Mon Sep 20, 2004 7:34 pm
Krzysztof Rudnik wrote:
Quote:
Zaryzykowałem i posłałem program, który zamiast po porcie 378 grzebie po
porcie c800. Okazało się, że działa

To tak dla wszystkich, którzy
będą kiedyś googlować. Korzystam z biblioteki inpout32.dll która co
prawda w dokumentacji stwierdza, że obsługuje wyłącznie 378/278 ale jak
widać dziaął znakomicie na innych zakresach we/wy.
Tylko pamietaj ze w PCI adresy sa przydzielane dynamicznie
a wrecz teoretycznie urzadzenia IO moga zostac zmapowane do pamieci.
Dlatego w konfiguracji programu lepiej dac do wyboru numer portu LPT, a
dopiero w czasie dzialania znajdowac jego adres bazowy. Tak dziala np.
ISPProgrammer:
http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html
Sam mam karte LPT PCI i wszystko obsluguje sie tak jak w "klasycznym"
porcie LPT.
Polecam lekture dokumentacji funkcji Win32 API: SetupDiGetClassDevs,
SetupDiEnumDeviceInfo, SetupDiGetDeviceRegistryProperty,
CM_Get_First_Log_Conf, CM_Get_Next_Res_Des, CM_Get_Res_Des_Data i
jeszcze kilka pomniejszych.
--
Adam Dybkowski
adybkows@amwaw.edu.pl
http://www.amwaw.edu.pl/~adybkows/
Sebastian Bialy
Guest
Mon Sep 20, 2004 7:43 pm
Adam Dybkowski wrote:
Quote:
Polecam lekture dokumentacji funkcji Win32 API: SetupDiGetClassDevs,
SetupDiEnumDeviceInfo, SetupDiGetDeviceRegistryProperty,
CM_Get_First_Log_Conf, CM_Get_Next_Res_Des, CM_Get_Res_Des_Data i
jeszcze kilka pomniejszych.
Nie ma czasu na eksperymenty, tym bardziej, że urządzenia nie mam i
musze pisać w ciemno. To tylko proteza, żeby w ogóle zadziałało -
docelowo wszystko będzie na rs232 może USB (ale też pewno w jakimś
trybie strumieniowania jak rs232).
--
Sebastian Bialy - heby@poczta.onet.pl
Adam Dybkowski
Guest
Mon Sep 20, 2004 8:02 pm
Sebastian Bialy wrote:
Quote:
Polecam lekture dokumentacji funkcji Win32 API: SetupDiGetClassDevs,
SetupDiEnumDeviceInfo, SetupDiGetDeviceRegistryProperty,
CM_Get_First_Log_Conf, CM_Get_Next_Res_Des, CM_Get_Res_Des_Data i
jeszcze kilka pomniejszych.
Nie ma czasu na eksperymenty, tym bardziej, że urządzenia nie mam i
musze pisać w ciemno. To tylko proteza, żeby w ogóle zadziałało -
docelowo wszystko będzie na rs232 może USB (ale też pewno w jakimś
trybie strumieniowania jak rs232).
Na RS232 nie polecam żadnej nowej produkcji, bo już niedługo nie będzie
tego gdzie podłączyć. Teraz już mało który laptop ma RS232, a widać tą
tendencję też w dużych blaszakach.
Odnośnie USB i wirtualnego COMa - dobry pomysł o ile nie zachcesz więcej
portów (np. jeden kanał do transmisji danych a drugi do debugowania)
albo całkiem innej funkcjonalności (fajnie wygląda upgrade firmware'u
urządzenia przez wrzucenie pliku na wirtualną "dyskietkę" - klasa USB
Mass Storage). Do obu zastosowań i jeszcze 100 innych nadają się za to
bardzo dobrze uniwersalne układy USB takie jak np. Philips ISP1181 lub
nowsze.
--
Adam Dybkowski
adybkows@amwaw.edu.pl
http://www.amwaw.edu.pl/~adybkows/
Sebastian Bialy
Guest
Mon Sep 20, 2004 8:33 pm
Adam Dybkowski wrote:
Quote:
Nie ma czasu na eksperymenty, tym bardziej, że urządzenia nie mam i
musze pisać w ciemno. To tylko proteza, żeby w ogóle zadziałało -
docelowo wszystko będzie na rs232 może USB (ale też pewno w jakimś
trybie strumieniowania jak rs232).
Na RS232 nie polecam żadnej nowej produkcji, bo już niedługo nie będzie
tego gdzie podłączyć. Teraz już mało który laptop ma RS232, a widać tą
tendencję też w dużych blaszakach.
A to wiem, ale założenie jest bardzo proste - coma zawsze można
podłaczyć przez USB - koszt około 40zł za "przelotkę" i masz port COM w
kazdym laptopie. To że to stary system przesyłania danych - powiedz to
producentom elementów do automatyki - tam cały czas RS232 jest
podstawowym sposobem komunikacji i tego raczej nie przeskocze. Tak
naprawdę to urządzenie które będzie sterowane przez komputer wymaga aż 4
lini RS232 do komunikacji, bo przerobić gotowych urządzeń nie mogę ...
No i dodatkowo moja proteza na LPT ... Ale w następnej wersji będzie już
tylko jeden RS232 / USB / IrDA / etc.
Quote:
Odnośnie USB i wirtualnego COMa - dobry pomysł o ile nie zachcesz więcej
portów (np. jeden kanał do transmisji danych a drugi do debugowania)
albo całkiem innej funkcjonalności (fajnie wygląda upgrade firmware'u
urządzenia przez wrzucenie pliku na wirtualną "dyskietkę" - klasa USB
Mass Storage). Do obu zastosowań i jeszcze 100 innych nadają się za to
bardzo dobrze uniwersalne układy USB takie jak np. Philips ISP1181 lub
nowsze.
Zastanawia mnie wykorzystanie raczej gotowego mikrokontrolera z
interfejsem USB. Jeśli tylko załatwi wszelkie
hardware/synchronizacje/protokół i udostępni mi strumieniowane
transmisje to więcej mi nie trzeba.
--
Sebastian Bialy - heby@poczta.onet.pl
J.F.
Guest
Mon Sep 20, 2004 9:05 pm
On Mon, 20 Sep 2004 22:34:11 +0200, Adam Dybkowski wrote:
Quote:
Tylko pamietaj ze w PCI adresy sa przydzielane dynamicznie
a wrecz teoretycznie urzadzenia IO moga zostac zmapowane do pamieci.
Dlatego w konfiguracji programu lepiej dac do wyboru numer portu LPT, a
dopiero w czasie dzialania znajdowac jego adres bazowy. Tak dziala np.
ISPProgrammer:
http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html
A w jaki sposob znajdujesz adres portu ?
No i ..
- co w przypadku jak port jest, ale windows go nie znajduje
- windows znajduje .. ale to port na USB ...
J.
Adam Dybkowski
Guest
Tue Sep 21, 2004 8:01 pm
J.F. wrote:
Quote:
Wymieniłem w tamtym poście nazwy kilku funkcji Windows API, z nich
korzystam. RTF MSDN jakby co.
Quote:
No i ..
- co w przypadku jak port jest, ale windows go nie znajduje
Jak nie widać portu w Windows to nawet inny program nic z nim nie zrobi.
Nie daję w sofcie takich portów do wyboru.
Quote:
- windows znajduje .. ale to port na USB ...
Wtedy dla danego portu nie da się uzyskać adresu bazowego i nie daję w
takim przypadku go do wyboru użytkownikowi. Taki port nie nadaje się do
grzebania ręcznie "bitami" i AFAIK nie ma żadnej funkcji Win32 API
pozwalającej w porcie LPT zmienić stan jednego bitu. A tego wymaga
transmisja SPI.
--
Adam Dybkowski
adybkows@amwaw.edu.pl
http://www.amwaw.edu.pl/~adybkows/