Kann ich in Java unter Linux auf Hardwareaddressen zugreifen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Felix
Beiträge: 453
Registriert: 17.02.2003 10:26:57
Lizenz eigener Beiträge: MIT Lizenz

Kann ich in Java unter Linux auf Hardwareaddressen zugreifen

Beitrag von Felix » 27.03.2003 10:14:35

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.

Benutzeravatar
hagish
Beiträge: 36
Registriert: 13.05.2002 19:13:49
Kontaktdaten:

Beitrag von hagish » 27.03.2003 12:05:54

ich weiss es nicht sicher, aber man, glaube ich, über das JavaNativInterface JNI c funktionen anprechen. So könntest du es vielleicht realisieren. Man müsste halt nur für jedes Systema auf dem die Software läuft die passenden "dlls" haben.
Vielleicht hilft dir das weiter.

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 27.03.2003 14:15:42

Hab eda selbst auch keine ahnung.
jedoch - im gegensatz zu windows werden devices ja im filesystem abgebildet.

beispiel /dev/sound

und daher koennte ich mir vorstellen, das man auch die druckerschnittstelle einfach als file ansprechen kann.
Debian SID

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 27.03.2003 15:01:19

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
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
Felix
Beiträge: 453
Registriert: 17.02.2003 10:26:57
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Felix » 28.03.2003 09:16:47

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 :D.

Felix.

Belgarad
Beiträge: 749
Registriert: 12.07.2002 02:00:44

Beitrag von Belgarad » 28.03.2003 20:45:19

p.s wenn du es hinbekommen hast/solltest schreibe bitte in jedem fall wie es geht ;-)
Debian SID

Benutzeravatar
Felix
Beiträge: 453
Registriert: 17.02.2003 10:26:57
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Felix » 28.03.2003 23:41:24

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.

para
Beiträge: 261
Registriert: 26.08.2002 08:37:26

Beitrag von para » 02.04.2003 18:16:00

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 8)
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 8O

Jeder Kommentar ist erwünscht, Para

Benutzeravatar
Felix
Beiträge: 453
Registriert: 17.02.2003 10:26:57
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von Felix » 02.04.2003 20:47:13

Super, das kann ich sicherlich in Windows mit Java Aufrufen. Wenn du den KDE Port fertig hast funzt es vielleicht auch mit Linux. Ich habe grad viel zu tun und kann mir das nicht so genau angucken, aber es sieht schonmal vielversprechend aus. Danke für den Tipp. Das is echt brauchbar :)

Felix

Benutzeravatar
barmeier
Beiträge: 358
Registriert: 12.11.2002 17:33:00
Kontaktdaten:

Beitrag von barmeier » 07.04.2003 09:59:14

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

para
Beiträge: 261
Registriert: 26.08.2002 08:37:26

Beitrag von para » 07.04.2003 10:48:32

Also da muss ich barmeier Recht geben! In dem C-SocketServer könntest du dann sogar auch noch Inline-ASM verwenden :wink: ...
Ich könnte aber verstehen, wenn dir dieses Vorgehen zu aufwendig wäre. Wieso willst du das eigentlich in Java lösen? Brauchst du die Platformunabhängigkeit?

Para

para
Beiträge: 261
Registriert: 26.08.2002 08:37:26

Beitrag von para » 23.04.2003 22:36:35

@Felix: also die GUI ist wohl soweit fertig und die Lib funzt bereits zu 50% 8)
Sobald das Dingen fertig gibts an dieser Stelle die News! Hoffentlich komme ich mit den Debian typischen Paketierungen zurecht...?

Bis dahin, Para

Antworten