LCD na LPT (na USB)

Witam,

Ostatnio zacząłem bawić się w programowanie portu LPT. Jestem na etapie wysyłania bitów (umiem zapalać i gasić diody, etc). Przeglądając sieć, wpadłem na pomysł zaprogramowania wyświetlacza. Niestety - stary komp posiadający port LPT stoi teraz w szkole i pełni rolę serwera. W domu mam tylko laptopa z usb.

I moje pytanie - czy ta (

formatting link
) przejściówka działa na zasadzie emulacji portu LPT (czy mogę się odnosić do niej i wysyłać dane tak jak do zwykłego portu LPT)? Czy ten (
formatting link
) wyświetlacz zadziała na niej? Używam Linuksa (Ubuntu).

Pozdrawiam Konrad95

Reply to
konrad95
Loading thread data ...

konrad95 pisze:

Nie zadziała. Potrzebujesz do laptopa karty PCMCIA LPT. Ale jeżeli jest to nowy sprzęt z ExpressCard to karty LPT nie zadziałają (w trybie sterowania indywidualnymi bitami). Już lepiej kup wyświetlacz z USB i już. Szukaj hasła "CrystalFontz".

Wyświetlacz wygląda standardowo. Czyli na powyższym konwerterze USB->LPT nie zadziała.

Reply to
Adam Dybkowski

Adam Dybkowski pisze:

Mam Compaq Presario F730US - ten model nie ma ani PCMCIA ani ExpressCard :/ Czyli pozostało mi chyba tylko sprowadzenie z powrotem kompa ze szkoły ;) Co do wyświetlacza na USB - ja nie chcę kupić wyświetlacza żeby mi coś pokazywał non-stop, tylko żeby nauczyć się programować tego typu rzeczy.

Dzięki za zainteresowanie wątkiem :)

Pozdrawiam Konrad95

Reply to
konrad95

Adam Dybkowski pisze:

Oj zadziała(łby) gdyby napisać odpowiedni soft + parę kabelków mądrze skręcić. Na wyjściu przejściówki USB-LPT masz wszsytkie potrzebne linie LPT (DATA0-DATA7, sterowanie itp), trzeba tylko przekonać przejściówkę że na jej końcu wisi drukarka (i przyjmuje dane z linii D0-D7), oraz wysyłać do tej drukarki odpowiednie "znaki" odpowiadające odpowiednim stanom pinów D0-D7, ale przyjmując sterowanie 4bit oraz brak odczytu (tylko zapis) do lcd - to wystarczy.

Sam swego czasu tak zmajstrowałem sterowanie "na piechotę" tyle że w windowsie, wybierając "typowa drukarka - tylko tekst" na danym porcie, i wysyłając odpowiednio spreparowane pliki do tej drukarki. Problemem jest tylko to, że driver może obcinać wszystko co poza znakami w ASCI oraz kodami sterującymi - trzeba odpowiednio wybrać linie portu, by operować w zakresie dostępnych kombinacji bitowych. Albo zmajstrować mały kawałek procka który to zamieni. Ale z tego co pamiętam to w linuksowym cat plik > /dev/usblp0 nie cięło niczego, wszystko ładnie szło co do bitu, jedynie trzeba było dobrze ustawiać PE/Busy/Ack

Reply to
BartekK

BartekK pisze:

Masz może jakiś schemat jak to połączyć? Działało by to gdybym napisał własny program w C? Chodzi mi czy będzie śmigać wysyłanie bitów funkcją outb().

Pozdrawiam Konrad95

Reply to
konrad95

konrad95 pisze:

Kup lepiej jakis uklad FTDI, FTDI232 lub pochodne, bedziesz mogl wykorzystac USB, uniwersalne niezalezne od systemu drivery i programowanie sie uprosci. Ilosc linii IO ktore ten uklad oferuje jest wystarczajaca.

Reply to
T.M.F.

W repo masz program lcd4linux, niestety na przejściówce USB-LPT mogą być problemy, ale warto to sprawdzić. Funkcja outb() raczej nie zadziała, ale możesz tak jak pisze kolega BartekK wysyłać dane do /dev/usblp0, co do podłączenia to pewnie

4-bitowo (bo nie będzie z czego sterować "RS" wyświetlacza): D0-D3 wyświetlacza do D0-D3 lpt, "Enable" do "STROBE" lpt (STROBE powinno dawać automatycznie impuls po zapisie do /dev/usblp0), "RS" wyświetlacza np do D4 lpt. "R/W" można do masy (do wyświetlacza tylko zapisujemy). Pozostaje tylko ułożyć sobie odpowiednią sekwencję bajtów do sterowania

- tutaj uwaga: niektóre wyświetlacze dziwnie się inicjalizują zwłaszcza w trybie 4 bitowym (trzeba mu wysłać trochę śmieći i poczekać, następnie zadać tryb 4-bitowy i znów poczekać - OIDP)

Mirek.

Reply to
Mirek

konrad95 pisze:

Raczej nie ma co liczyć że outb() ci zadziała. To zupełnie inny sposób wysyłania danych ;) outb() możesz sięgać (jak ioperm zezwoli) do portów (adresów w przestrzeni i/o) fizycznych w komputerze, czyli w zasadzie wyłącznie podpiętych przez ISA/PCI/PCIe (i mobilne mutacje expresscard,Pcmcia) - urządzenie (tutaj port lpt) musi być w "hardwarowej" przestrzeni adresowej "wprost". A to co ja proponuje, to sterowanie przez wysyłanie danych (bajtów, całych, odpowiednio złożonych) do "urządzenia" wirtualnego w systemie, występującego przeważnie jako /dev/usblp0 albo /dev/usb/lp0 (zależnie od systemu i kernela). Tak samo jakbyś te bajty wysyłał do pliku, a potem hex-edytorem obejrzał, czy odpowiednie bity się zgadzają. Pomijając kwestię delayów między kolejnymi wysłanymi ("wydrukowanymi" do /dev/usblp0) bajtami, bo lcd tak szybko jak lpt działa, karmić się danymi nie da)

formatting link
Upraszczając trochę - jak sobie załączysz na taką przejściówkę LPT drukarkę jakąś starszą-hardwarową, np jakąś igłówkę, i zrobisz komendę "cat plik.txt /dev/usblp0", a plik bedzie zawierac jeden bajt równy "B" (literę B), to komputer będzie czekał aż na porcie LPT zniknie sygnał BUSY (drukarka zajęta gdy =1, drukarka gotowa gdy zwarte do masy) a potem na liniach danych D0-D7 ustawi się 0x42 (czyli 0100 0010 binarnie) i drukarka wydrukuje odpowiedni znaczek, potwierdzi krótkim sygnałem (zwaciem do gnd) na linii /ACK - i nic więcej się nie stanie.

Reply to
BartekK

Niemal gwarantowane ze nie zadziala.

Tylko ze przejsciowka nie wysle nastepnych bajtow dopoki drukarka nie potwierdzi ze odebrala poprzedni.

Trzeba bedzie jakis sprytny impulsatorek podlaczyc do lini BUSY, a moze INTR ..

J.

Reply to
J.F.

Z BUSY to problemu nie będzie - wystarczy podać na stałe NOT-BUSY, gorzej może być faktycznie z ACK (o ile jest niezbędny) - może wystarczy podać zanegowany sygnał STROBE?

Mirek.

Reply to
Mirek

Jest niezbędny, musi się pojawić, i to z pewnym opóźnieniem (a nie od razu, bo lcd nie zdąży przyjąć danych, a port już zmieni stan)

Dobry pomysł, a jeszcze lepszy - przed negatorem dać jakiś układ opóźniający RC.

Reply to
BartekK

BartekK pisze:

No to już może lepiej kupić najtańszy konwerter USB->RS232 (na Allegro kabelki USB do starych komórek po ok. 5 zł) i dokleić do niego ulubiony mikrokontroler (kolejne 5 zł) - oby nóżek starczyło na podłączenie LCD. Standardowy w tym przypadku protokół CrystalFontz jest w sieci wystarczająco dobrze opisany, można znaleźć też przykłady softu go obsługującego (tzn. gadające z komputerem przez UART oraz z równoległym modułem LCD). Zaletą jest dodatkowo zasilanie wyświetlacza z 5V (USB) - to rozwiązanie wygrywa z LPT.

Reply to
Adam Dybkowski

Adam Dybkowski pisze:

[...]

Możesz podać przykład takiego konwertera z wyprowadzonym zasilaniem? Miałem w łapach, ze 3 różne konwertery do nokii i niestety żaden nie miał wyprowadzonego zasilania z USB.

Reply to
Zbych

Dawno temu to Busy byl niezbedny, ale to bylo pare windowsow temu :-)

J.

Reply to
J.F.

Zbych pisze:

:-o Ale dlaczego chcesz stuprocentowego gotowca? Jeżeli brakuje jednego przewodu to go dolutuj i po sprawie. Zasilanie 5V ze złącza USB (AFAIR pin nr 1) i tak musi trafiać na scalak konwertera USB-UART, jeżeli trzeba to go wyprowadź na zewnątrz. I tak przecież musisz czymś zastąpić tą wtyczkę Nokii, Samsunga czy inną. Najlepiej w ogóle rozbebeszyć kompletnie gotowy konwerter i zintegrować ze swoim urządzeniem (w jednej obudowie obok wyświetlacza), obok dodasz ładne gniazdko USB-B i będzie gites.

Reply to
Adam Dybkowski

Adam Dybkowski pisze:

Bo mi się odciski robią od roboty :-)

Konwerter najczęściej jest zalany razem ze wtykiem USB. Wybebeszanie mija się z celem, a tym bardziej wbudowywanie tego w urządzenie.

Reply to
Zbych

Zbych pisze:

No to kup konwerter USB-UART zbudowany na bazie układu FTDI FT232. Do dostania m.in. w Propox. Płytka z gniazdkiem USB-B i scalakiem, bez obudowy. Idealne do zintegrowania ze swoim urządzeniem. Tyle że kosztuje ze 30-50 zł (dawno nie patrzyłem na ich stronę www).

Reply to
Adam Dybkowski

Adam Dybkowski pisze:

Kabel od telefonu 5..10zł. Chyba jednak zostanę przy tym rozwiązaniu.

Reply to
Zbych

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.