Port LPT na karcie PCI i pytanie o

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.

Reply to
Sebastian Bialy
Loading thread data ...

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.

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.

Reply to
J.F.

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.

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.

Sprawdzany nawielu róznych windowsach, działa bez pudła.

Reply to
Sebastian Bialy

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.

Reply to
Sebastian Bialy

Tylko pamietaj ze w PCI adresy sa przydzielane dynamicznie a wrecz teoretycznie urzadzenia IO moga zostac zmapowane do pamieci.

Krzysiek Rudnik

Reply to
Krzysztof Rudnik

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ć.

Reply to
Sebastian Bialy

Dlatego w konfiguracji programu lepiej dac do wyboru numer portu LPT, a dopiero w czasie dzialania znajdowac jego adres bazowy. Tak dziala np. ISPProgrammer:

formatting link
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.

Reply to
Adam Dybkowski

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).

Reply to
Sebastian Bialy

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.

Reply to
Adam Dybkowski

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.

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.

Reply to
Sebastian Bialy

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.

Reply to
J.F.

Wymieniłem w tamtym poście nazwy kilku funkcji Windows API, z nich korzystam. RTF MSDN jakby co.

Jak nie widać portu w Windows to nawet inny program nic z nim nie zrobi. Nie daję w sofcie takich portów do wyboru.

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.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.