Kann ich in Java unter Linux auf Hardwareaddressen zugreifen
Kann ich in Java unter Linux auf Hardwareaddressen zugreifen
Hallo,
Ich programmiere auf Debian Linux r3 (woody) in Java (SDK 1.4.1).
Ich möchte die Pins an der parrallelen Schnittstelle einzeln setzen können um externe selbstgebaute Hardware anzusteuern. Auf Windows mit C++ ging das ganz einfach, indem ich outportb(Hardwareaddresse,byte) bzw inportb(Hardwareaddresse) benutzt habe. Gibt es in Java dazu irgendein Äquivalent? Ich habe dannach gesucht, aber nichts in der Richtung gefunden. Dann habe ich die javax.comm (Communications API) nachinstalliert und damit versucht mal wenigsten den Port zu kriegen und so zu tun als würde ich einen Drucker ansteuern. Aber da bekomme ich keine Port zurückgeliefert. Ich hab keine Ahnung woran das liegt. Kann mir da jemand weiterhelfen? Das wäre klasse! Vielen dank im Vorraus.
Felix.
Ich programmiere auf Debian Linux r3 (woody) in Java (SDK 1.4.1).
Ich möchte die Pins an der parrallelen Schnittstelle einzeln setzen können um externe selbstgebaute Hardware anzusteuern. Auf Windows mit C++ ging das ganz einfach, indem ich outportb(Hardwareaddresse,byte) bzw inportb(Hardwareaddresse) benutzt habe. Gibt es in Java dazu irgendein Äquivalent? Ich habe dannach gesucht, aber nichts in der Richtung gefunden. Dann habe ich die javax.comm (Communications API) nachinstalliert und damit versucht mal wenigsten den Port zu kriegen und so zu tun als würde ich einen Drucker ansteuern. Aber da bekomme ich keine Port zurückgeliefert. Ich hab keine Ahnung woran das liegt. Kann mir da jemand weiterhelfen? Das wäre klasse! Vielen dank im Vorraus.
Felix.
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Es gibt da noch sowas wie /dev/ioports oder so ähnlich, damit kann man direkt an den Registern rummachen, aber das kann natürlich auch voll ins Auge gehen...
Patrick
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
Ahh, danke für die Tipps. Das mit den IOPorts hört sich doch schonmal nett an. Die Hardwareaddressen kenn ich und ich will es auch nur auf meinem PC laufen lassen. Von daher keine Gefahr und wenn, dann nur für mein System. Wie geht das genau? Ich weiß das die parallele Schnittstelle unter Linux wohl dev/lpt0 heiß. Wie setz ich die jetzt genau? Würd ja nur gern nen Byte setzen und auslesen können. Initialisieren und den ganzen Schnee brauch ich nich, wenns auch ohne gehen sollte .
Felix.
Felix.
Mach ich gern, aber bis jetzt hab ich noch nix. Die Java-Communications-API hat im PRinzip nix gebracht. Gesucht wird ja auch eigentlich ein Befehl zum Hardwareaddressen Manipulieren bzw. Ports setzen oder wie man auch immer nennen will. wie gesagt unter c heißt es outportb oder outb bzw. inportb und inb. Es muß garnicht speziell für Linux sein. Im Moment würde es auch für Windows reichen. Ich überlege schon mir für jedes System mit C++ ein kleines Programm zu schreiben was ich dann von Java aufrufe. Aber soetwas wollte ich eigentlich umgehen. Das bringt es ja dann auch nicht. Mein neues Goto Java 2 Buch is auch gestern angekommen und war in diesem Punkt eher ernüchternd, obwohl es sonst sehr zu empfehlen ist. Also dann im fleißig weitergrübeln! Bitte!!!!
Felix.
Felix.
Also die Idee, dass mit Java zu versuchen hatte ich bisher noch nicht... Allerdings habe ich zu meinen Windoze-Zeiten so eine Lösung vollständig in Assembler (!) geschrieben
Falls du's dir mal ansehen willst bitte... Das Ganze gibt's jeweilis als Applikation und als Library! Derzeit bin ich dabei, eine KDE-Portierung zu erstellen
Jeder Kommentar ist erwünscht, Para
Falls du's dir mal ansehen willst bitte... Das Ganze gibt's jeweilis als Applikation und als Library! Derzeit bin ich dabei, eine KDE-Portierung zu erstellen
Jeder Kommentar ist erwünscht, Para
Hi,
also mit java direkt auf die Hardwrae zu gehen ist immer eine schlechte Idee, weil du dir sofort die Platformabhängigkeit in den Java Quellcode ziehst.
JNI kann man natürlich benutzen ist mir aber auch schon zu dicht am Code.
Wir schreiben meistens einen kleinen SocketServer in C/C++ der dann einfach kommandos über einen Socket entgegennimmt und dann die Operationen ausführt.
Das bietet 2 Vorteile
1. Der Java Code ist weiterhin nicht an die plattform gebunden.
2. In C har man den maximalen Impact, es gibt kaum etwas was in C nicht geht.
als goodie kannst du Software noch auf verschiedenen Rechnern laufen lassen.
Ciao
Matze
also mit java direkt auf die Hardwrae zu gehen ist immer eine schlechte Idee, weil du dir sofort die Platformabhängigkeit in den Java Quellcode ziehst.
JNI kann man natürlich benutzen ist mir aber auch schon zu dicht am Code.
Wir schreiben meistens einen kleinen SocketServer in C/C++ der dann einfach kommandos über einen Socket entgegennimmt und dann die Operationen ausführt.
Das bietet 2 Vorteile
1. Der Java Code ist weiterhin nicht an die plattform gebunden.
2. In C har man den maximalen Impact, es gibt kaum etwas was in C nicht geht.
als goodie kannst du Software noch auf verschiedenen Rechnern laufen lassen.
Ciao
Matze