PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] per notbook motoren steuern und sensoren abfragen per java



Takkara
22.01.2005, 17:14
hallo ich bin totaler einsteiger und würde gerne ne orientirung haben
wenn ich einen robo bauen möchte und als stuerermodul mein notbook nehmen will, wie gehe ich dann vor

progen möchte ich in java oder ruby da ich die beiden schon behersche
ich bräuchte die möglichkeit über usb oder lpt motoren zu steuern sonsoren einlesen usw
ne webcam kann ich ja eh schon nutzen....

als motoren und servos würde ich eventuell auf den modellsport zurückgreifen zb www.robbe.com

ok ich hoffe es gibt mir jemand mal ne kleine einführung

danke schonmal

takkara

mirki
23.01.2005, 17:16
geht net !! Anhand der Java VM kannst Du nicht direkt auf die Hardware zugreifen !!

SlyD
23.01.2005, 17:28
geht net !! Anhand der Java VM kannst Du nicht direkt auf die Hardware zugreifen !!

Stimmt so nicht! [-X


Per JNI (Java Native Interface) kannste alle Hardware Geschichten in C/C++/Delphi/blablubb... proggen und aus Java darauf zugreifen.

z.B. Zugriff auf RS232 Comports: http://www.rxtx.org/

...

Mat1980
26.01.2005, 17:29
Schau dir mal den JavelinStamp an. Der JavelinStamp ist ein Javainterpreter und mit dem geht das sicher. www.Parallax.com

LG aus der Schweiz
Mat

mpetz
26.01.2005, 21:16
Moment, man kann in Java ohne Probleme mit dem Comm Modul auf z.B. die serielle Schnittstelle zugreifen. Und zwar sehr kompfortabel!
Ich hab eine sehr schöne Klasse für die Kommunikation über RS232 in Java geschrieben, benutze übrigens auch den USB-Port aber halt mit einem USB-RS232 Adapter (9 € bei KM).
Also wenn du Hardware haben solltest die du über RS232 steuern willst, kann ich dir den Code gerne schicken.

Mail: mp(at)netpages.de

SlyD
26.01.2005, 21:21
@mpetz: Ich würde RXTX benutzten - das ist IMHO ausgereifter als das Comm Modul von SUN und ist sogar fast 100% kompatibel... und es funktioniert auch mit Linux.

mpetz
26.01.2005, 21:36
Also meinen Informationen nach wird an dem Comm Modul recht gut entwickelt und dies gibt es sehr wohl auch für Linux!
Wenn man also nach Sun's CommAPI programmiert läuft der Code wie er ja soll auf beiden Systemen und zwar ohne Änderung.

http://www.rxtx.org/ - Die CommAPI unter Linux setzt auf RXTX auf.

mirki
26.01.2005, 21:36
Kann man mit diesem Comm Modul
1) jedes einzelne Bit am port der rs232 erfassen setzten ?
2) kann ich z.B. die PS/2 direkt auslesen ?
3) kann ich auf die centronics zugreifen und belieb die bits setzten ?

mpetz
26.01.2005, 21:40
Kann man mit diesem Comm Modul
1) jedes einzelne Bit am port der rs232 erfassen setzten ?
2) kann ich z.B. die PS/2 direkt auslesen ?
3) kann ich auf die centronics zugreifen und belieb die bits setzten ?

Nein, dafür ist die API nicht da. Man kann einfache Binäre Übertragung realisieren.

Mit direkten Hardwarezugriffen in Java habe ich (noch) nicht so viel Ahnung, aber das scheint mir eher schwierig.

SlyD
26.01.2005, 22:05
Mit Comm meinte ich natürlich die CommApi von SUN und die wird schon seit geraumer Zeit nicht mehr weiterentwickelt - jedenfalls ist es seit ich es zum ersten mal runtergeladen hab - und das ist schon lange her - nicht mehr verändert worden... übrigens nicht nur meine Meinung - auch in Java Foren ist da schon drüber diskutiert worden.
Der LPT Support ist z.B. komplett unimplementiert - nur leere Methoden.
Und die CommApi gibts nur für Win32, Solaris und nochirgendwas.

RXTX setzt zwar in einer Version auf die CommApi auf, aber hat auch eine komplett eigene Lib...

mirki
26.01.2005, 22:07
ehhm Mädels, wir reden doch über Java und direkte Hardware Zugriffe ?!

Das passt doch nicht zusammen.

SlyD
27.01.2005, 17:55
Naja es geht ja nicht direkt - eher über einen Umweg ;)
Spielt aber keine große rolle denn es funktioniert trotzdem wie gewüscht.

Mit dem JNI - Java Native Interface kann man spezielle Bibliotheken erstellen und dann aus einem Java Programm drauf zugreifen. So sind ja auch RXTX und auch die javax.comm realisiert worden...

mirki
27.01.2005, 23:39
// geht net !! Anhand der Java VM kannst Du nicht direkt auf die Hardware zugreifen !!

War das denn so falsch ?????????

SlyD
28.01.2005, 16:02
Deine Aussage so ist natürlich nicht komplett falsch - wirkt aber so als wolltest Du sagen: Geht überhaupt nicht.

Ich wollte nur klarstellen, das es eben doch möglich ist, über das JNI auf HW zuzugreifen...

mirki
28.01.2005, 18:01
Du hast es total falsch verstanden, denn ...
Ich benutzte die Wörter JAVA, VM, direkt und Hardware. Die kombination dieser Wörter besagen das es nicht gehen kann. Das wie es geht hat meiner Ansicht nach nichts mehr mit Java zu tun.

SlyD
28.01.2005, 18:09
Er will sein Programm garantiert nicht portabel machen - Zielsystem _EIN_ Notebook - insofern spielt es keine Rolle ob es dann nichts mehr mit Java zu tun hat. (und das hat es ja eigentlich doch - schau Dir nur mal die Klasse "java.lang.System" an - die besteht ja quasi nur aus nativen methoden und wie oft hast Du die schon verwendet?! Oder das JMF bzw. ähnliche Libs von SUN... )

Die Java VM greift ja auch auf Native Bibliotheken zu um die wichtigsten Ein und Ausgaben zu realisieren.

Btw: Wenn man es schon so genau nimmt: Die VM hat eigentlich sowieso rein gar nix mit der _Sprache_ Java zu tun - die VM führt nur Bytecode aus und man könnte dafür auch nen C++ Compiler schreiben...

mirki
28.01.2005, 19:03
Ey aldder, jetzt wirds mir zu Bunt. Du redest zu 75% blödes zeug !!

Er will über LPT Moteren steuern, macht es da nicht klick bei Dir ?
Wenn nicht solltest du mal die java speceifactions lesen.

SlyD
28.01.2005, 19:46
Und was genau ist daran bitte Müll?

Über "USB oder LPT" kann man selbstverständlich Motoren steuern mit ner entsprechenden Elektronik dazwischen.

Für meinen Roboter nutze ich ein Java Programm zur Steuerung, das auf einem embedded PC auf dem Roboter läuft - und das funktioniert wunderbar:

http://www.dsh-elektronik.de/arcrobot/arcrobot.htm

Die Echtzeitsteuerung wird dabei natürlich von Mikrocontrollern übernommen - die Software ist nur für die High-Level Steuerung zuständig...

31.01.2005, 13:08
Moment, man kann in Java ohne Probleme mit dem Comm Modul auf z.B. die serielle Schnittstelle zugreifen. Und zwar sehr kompfortabel!
Ich hab eine sehr schöne Klasse für die Kommunikation über RS232 in Java geschrieben, benutze übrigens auch den USB-Port aber halt mit einem USB-RS232 Adapter (9 € bei KM).
Also wenn du Hardware haben solltest die du über RS232 steuern willst, kann ich dir den Code gerne schicken.

Mail: mp(at)netpages.de

Morbius
03.02.2005, 09:33
Hallo zusammen!

Da ich zur Zeit selbst versuche über Jave die Com anzusprechen (PC - SD21), interessiere ich mich für dieses Thema.
mpetz ! Du bietest an, deinen Code per Mail zu verschicken. Da ich neu in diesem Forum bin, kann ich mit der Mail-Adresse nichts so richtig anfangen. Zudem wüsste ich gern wo ich den USB-RS232 Adapter beziehen kann. Für was steht KM??

mpetz
04.02.2005, 12:31
www.km-elektronik.de

Quellcode für eine "schöne" Implementation der COMM API ist im Anhang, du brauchst dann noch die COMM API selbst:
http://java.sun.com/products/javacomm/downloads/index.html

Morbius
04.02.2005, 13:35
Danke erstmal für den Quellcode und den Link mpetz!!
Leider habe ich dass mit dem Quellcode falsch verstanden!! ](*,) Bin davon ausgegangen, das dieser was mit der Logik eines Roboters zu tun hat . Aber trotzdem danke, werde ihn mir auf jedenfall anschauen. Man lernt nie aus ! Da KM leider keinen USB-I²C Adapter anbietet, mein Projekt hat sich wieder ein bißchen geändert, würde ich gern mal wissen, ob jemand von euch weiß, wo man so was bestellen kann oder eine Anleitung kennt ( Schaltplan, Layout, Code) zum selber bauen. Bitte nicht auf die Ausgabe (Dezember) von Electro beziehen. Vielleicht kann mir jemand von euch da weiter helfen.

mpetz
04.02.2005, 13:47
nimm den 9 eur usb-rs232 adapter und da dran den rs232-i2c von robotikhardwre.de das ist zusammen sehr günstig und wenn du den bausatz nimmst kannste auch noch das basteln und löten