ubuntuusers.de

Portadresse von USB-Parallel-Adapter

Status: Ungelöst | Ubuntu-Version: Ubuntu 8.10 (Intrepid Ibex)
Antworten |

jones79

Anmeldungsdatum:
23. Juni 2009

Beiträge: 79

Hallo!

Zur Ansteuerung eines LCDisplays an einem Parallelport habe ich mir mangels eines Parallelports einen USB-Parallel-Adapter gekauft.

Dieser wird erkannt und er legt /dev/usb/lp0 an. Damit ich das Display kontollieren kann brauche ich die Portadresse. Bei OnBoard-LPT1 wäre das z.B. 0x378 für die Datenpins.

Der Adapter müsste doch irgendeinen Bereich haben, oder nicht? Ich habe auch irgendwo gelesen, dass diese Adapter vielleicht nur einen USB-Drucker emulieren und man ihn nicht wie einen normalen Anschlu direkt ansteuern kann?!

Kann mir jemand sagen, wie man die Portadresse des Adapters herausfindet?

Viele Grüße, Markus

Hier noch ein paar Informationen:

dmesg 
usblp1: USB Bidirectional printer dev 5 if 0 alt 0 proto 2 vid 0x1A86 pid 0x7584
lsusb -v
Bus 008 Device 005: ID 1a86:7584  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x1a86 
  idProduct          0x7584 
  bcdDevice            2.52
  iManufacturer           0 
  iProduct                2 USB2.0-Print 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               96mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         7 Printer
      bInterfaceSubClass      1 Printer
      bInterfaceProtocol      2 Bidirectional
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6507

Wohnort: Hamburg

Ich glaube nicht, dass du unter Linux einen USB-LPT Port über die klassische Portadresse ansprechen kanst. Obwohl ich noch einen klassischen Parallelport habe, heisst der port bei mir lp0

~$ dmesg | grep parport
[   48.964480] parport_pc 00:0a: reported by Plug and Play ACPI
[   48.964546] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
[   54.558127] lp0: using parport0 (interrupt-driven).

allerdings benutze ich den momentan nicht, da ich einen Netzwerkdrucker habe. Aber ich benutze manchmal einen Serial-Port über USB, den allerdings als /dev/ttyUSB0.

Vielleicht erzählst du eunfach mal, wie die Software den Parallelport ansprechen will.

jones79

(Themenstarter)

Anmeldungsdatum:
23. Juni 2009

Beiträge: 79

Hi! Danke für deine Antwort.

Ich hab mit mittlerweile schlau gemacht und diese USB-Parallel-Adapter sind kein komplettes Äquivalent für einen OnBoard-Anschluss.

Die Adapter emulieren lediglich einen USB-Drucker und mitteln die dafür relevanten Daten, d.h. man spricht damit einen USB-Drucker an und nicht den Parallelanschluß, deswegen wurde bei mir auch die Gerätedatei /dev/usb/lp0 angelegt und nichts in Richtung parport.

Einen wirklich vollwertigen USB-Parallel-Adapter gibts hier:

http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/

Nähere Infors dazu, warum z.B. ein USB-Seriell-Adapter problemlos und vollwertig funktioniert, findet ihr in den FAQ dieser Seite, hier:

http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/faq.htm

Noch ein paar Worte zu meinem Projekt, vielleicht stößt ja mal jemand beim Googlen auf diese Seite...

Ich will mit Java eines dieser kleinen LCDisplays ansteuern. Dazu braucht man quasi Low-Level-Zugriff auf den Parallelanschluß.

Weitere Erklärungen dazu gibts hier: http://www.mikrocontroller.net/articles/Ports_benutzen_(GCC)#Parallele_Schnittstelle

Da dies nicht, wie ich zuerst vermutet habe, mit der Parallel/Seriell-Java-API RXTX (Weiterführung der Sun JavaComm-API, [rxtx.qbang.org]) möglich ist muss man einen anderen Weg gehen. Diese API erlaubt, im Prinzip analog zu den USB-Parallel-Adaptern lediglich einen Zugriff auf Protokoll-Ebene, also z.B. für Drucker.

Stattdessen greift man über JNI (Java Native Interface) auf C/C++-Dateien zu, mit denen der Zugriff problemlos möglich ist. Ein kleines feines Tutorial, das aufzeigt wie das prinzipiell funktioniert findet ihr hier: http://www.computer-labs.de/artikel/programmierung/Java_JNI.pdf

So, das wars auch schon von hier.

Viele Grüße, Markus

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6507

Wohnort: Hamburg

Sowas ähnliches hatte ich auch mal vor und greife das vielleicht mal wieder auf. Dabei hatte ich u.a. an eine elegtronische Morsetaste gedacht. Und da ich kein Display gefunden hatte, das in die Öffnung eines Slimline Laufwerks passt, bin ich dann auf die Squeezebox ausgewichen.

Antworten |