# Schnittstellenprogrammierung mit Java



## Java4me (27. Jul 2006)

Hallo zusammen, 

ich möchte wissen, ob sich Java für die Schnittstellenprogrammierung eignet. 

Einsatzgebiet: 
Ein Messgerät über die USB und/oder die serielle Schnittstelle ansprechen (Gerätebefehle, Bitmuster schicken).

Grund für die Entscheidung für Java:
Plattformunabhängigkeit. Sollte sowohl auf MAX OS, wie auch auf Linux funktionieren.

Hat hier schon jemand Erfahrung und kann mich eventuell dabei unterstützen ?


----------



## Bert Brenner (27. Jul 2006)

Für Serielle übertragung gibts ne API.

Für alles andere müsstest du wahrscheinlich selbst was basteln mit JNI.


----------



## Gast (27. Jul 2006)

Hi,
also was USB angeht, so hast du keine Möglichkeit ohne weiteres Plattformunabhängig zu arbeiten. 
Die Kommunikation über USB entspricht nicht mehr ganz dem, was man per RS 232 noch machen musste. Während du bei der älteren seriellen Kommunikation RS 232 ganz einfach den Port angeben konntest, über den Daten versendet werden sollen, ist dies bei USB nicht mehr möglich. 
Bei USB findet keine direkte Kommunikation mit der Komponente statt. Du selbst weißt ja nicht an welchem Port deine USB-Komponente hängt. Hier kommt dann wieder ein wenig das Geheimnisprinzip zum tragen. Der Port ist dir egal. Du willst nur wissen, wann die Komponente erreichbar ist und eine Adresse haben, an die du dich wenden kannst. Für fertige Lösungen von USB-Mess HW heßt dass, das dies über den Treiber läuft. Selbst wenn du den Treiber selbst schreibst, kommunizierst du nur mit dem USB-Controller (und damit implizit mit dem OS). Hier kommst du also um nativen Code nicht rum.
Eins deiner Probleme könnte ggf. auch sein, Treiber für MacOS und Linux zu finden (kann).
Jedenfalls ist mir bisher unter Windows nur HW mit USB unter gekommen, die man per DLL ansprechen konnte. Wie gesagt, man kommt nicht direkt an die Komponenten ran (was auch gut so ist).

Was RS 232 angeht ist die Java Communications API dein Freund!


----------



## foobar (27. Jul 2006)

> Hat hier schon jemand Erfahrung und kann mich eventuell dabei unterstützen ?


Ich entwickle auch gerade eine Software in Java, die über die serielle Schnittstelle eine Hardware anspricht. Guck dir mal: http://www.rxtx.org/ an. Oder das hier http://javax-usb.org/


----------



## Natorion (28. Jul 2006)

ich schreib auch grad sowas, mach aber eigentlich kaum was andres als bytes zu empfangen, und das geht mit der alten java.comm api zz noch sehr gut. foobar, gibs für das rxtx zeug eigentlich ein gutes tutorial, hab seinerzeit nichts gefunden?


----------



## foobar (28. Jul 2006)

@Natorion Ja, guck mal auf der Projektseite, da steht einiges. Also die alte Version hatte noch den selben Namespace wie javax.comm, daher kannst du deinen alten javax.comm Code 1 zu 1 übernehmen. Jetzt wird ein anderes Package verwendet, abre die Klassen heißen immer noch genauso wie bei javax.comm.

BTW rxtx läuft wesentlich besser als javax.comm. Keine unnötigen Delays mehr ;-)


----------



## Gast (8. Aug 2006)

Hallo,
ich wollte mir gerade die javax.comm von der Sun Seite laden und musste feststellen, dass es diese nur für Linux und Solaris gibt. Ich benötige sie allerdings (leider) für Windows. Auch auf rxtx.org scheint es nur Linux Versionen zu geben. 

Kann mir jemand sagen wie ich die comm API unter Windows zu laufen bekomme???


----------



## foobar (8. Aug 2006)

> auch auf rxtx.org scheint es nur Linux Versionen zu geben.


Dann mach mal die Augen auf: ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins


----------



## Gast (8. Aug 2006)

Ja, suuuuuper!!!! Ich habe nur auf rxtx.org geguckt

Besten Dank!


----------



## michaelb (8. Aug 2006)

Hi,
für die die sich die javax.comm runterladen wollen:
http://www.vorlesungen.uni-osnabrueck.de/informatik/robot00/ftp/javacomm.html
und für die rxtx kann ich gar nicht gescheite Dokumentationen finden!

Gruß Michi


----------



## foobar (8. Aug 2006)

> und für die rxtx kann ich gar nicht gescheite Dokumentationen finden!


Die API ist fast identisch mit der von Sun, bis auf ein paar Erweiterungen.

http://rxtx.qbang.org/wiki/index.php/Main_Page


----------



## michaelb (8. Aug 2006)

Hi,
danke! Die Seite hab ich auch schon länger gefunden...
...bin aber nicht auf die Idee gekommen dort aud Development zu klicken und die Samples anzuschauen ^^
Gruß Michi


----------



## michaelb (8. Aug 2006)

Hi,


> ein paar Erweiterungen


was für welche?
Gruß Michi


----------



## foobar (8. Aug 2006)

Guck dir mal die Javadocs an, dagibt es ein paar Erweiterungen der Port-Klasse z.b. port.setLowLatency(), port.setUARTType(arg0, arg1), port.setCallOutHangup(arg0) etc.


----------



## michaelb (8. Aug 2006)

Hi,
wo gibt's auf www.rxtx.org Docs? Ich hab da gar nix gefunden!
Gruß Michi


----------



## foobar (8. Aug 2006)

Auf der Website habe ich die im Moment auch net gefunden. Du mußt dir den Tarball laden, da ist dann alles dabei.


----------



## michaelb (10. Aug 2006)

Hi,
ich hab bisher nur zwei ZIP geladen. Die eine mit den DLLs und der .jar (rxtx-2.1-7-bins-r2) und die andere mit den source files (rxtx-2.1-7r2) und anderen Dateien. In beiden finde ich keine gescheiten docs oder hast du aus den Sources die Methoden rausgeholt?
Gruß Michi


----------



## foobar (10. Aug 2006)

Dann mußte eben manuell javadoc aufrufen. Ich weiß im Moment auch net wo ich die Api-Docs her habe.


----------



## michaelb (10. Aug 2006)

Hi,
ich hab's endlich gefunden! 
www.rxtx.org -> Hierarchy
aber zum Downloaden?
Gruß Michi


----------



## dkr (15. Aug 2006)

Hallo,

was ich nicht wirklich verstehe ist, kann man jetzt die Originalsourcen javax.comm von Sun verwenden, oder eher nicht?
Ich blicke bei den ganzen javax.comm Bibliotheken nicht mehr durch (IBM, SUN, RXTX).
Welche soll ich nehmen? Kann mir jemand den Unterschied erklären? Mein Programm soll später auf allen Plattformen funktionieren. 

Viele Grüße,

dkr


----------



## michaelb (15. Aug 2006)

Hi,
klar kannst du die javax.comm verwenden! Funktioniert super!
Die meisten Dinge zwischen rxtx und javax.comm stimmen überein, nur hat die rxtx mehr Methoden!
Seit kurzem arbeite ich mit rxtx und bin volle zufrieden...
Ich glaub die javax.comm geht auch mit anderen Betriebssystemen!
Gruß Michi


----------

