Du musst die Parameter Binär senden und nicht als ASCII-Code wie oben in deinem Beispiel
Hallo,
ich versuche grade mein RN-Motor ST über die RS-232 mit Java anzusteuern, auslesen der Einstellungen wenn ich den Reset-Pin drücke funktioniert. Leider aber nicht das Senden von Befehlen, bzw. das Board reagiert nicht darauf.
So sieht mein Code aus, mit verschiedenen Variationen, die alle nicht funktionieren:
Die SerialConnection Klasse die ich dort zum schreiben verwende hab ich selbst geschrieben und funktioniert sonst einwandfrei auch mit anderen Boards bzw. auch PC->PC.Code:serialConnection.write("#rmi058"); serialConnection.write("#rmi058\r"); serialConnection.write("#rmi058\n\r"); serialConnection.write("#rmi" + (char)0 + (char)58 + "\n\r"); mit und ohne \n\r
vielen Dank für jede Hilfe!
Martin
Du musst die Parameter Binär senden und nicht als ASCII-Code wie oben in deinem Beispiel
okay, hört sich logisch an:
tuts auch nicht, meine SerialConnection Klasse macht übrigens dies:Code:serialConnection.write("#rmi" + Integer.toString(0, 2) + Integer.toString(58, 2));
os ist dabei der OutputStreamCode:/** * write */ public void write(byte[] data) { try { os.write(data); if(debug) System.out.println("write: " + new String(data)); } catch(IOException e) { System.out.println(e); } } /** * write (string) */ public void write(String data) { write(data.getBytes()); }
So wie ich es sehe, sendest du immer noch Ascii
Du musst String "#rmi" senden, und dann nur die einzelnen Bytes direkt. an den String hängen. Schau dir die Beispiele an
https://www.roboternetz.de/phpBB2/viewtopic.php?t=2741
Ich denk, deine Methode erwartet einen Zeroterm-String. d.h offiziell ist der string bei chr(0) aus, egal, was nachher noch kommen soll.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Okay, habe es auch mit dem schicken einzelner Bytes probiert.
Nun hab ich aber irgendwie gepeilt, wieso es nicht gehen könnte. Ich habe die I2C Version des Boards! Ist dann also die Steuerung über RS-232 gar nicht möglich? Die Schnittstelle quasi nur für Debug Zwecke?
WIe kann ich mein Modul umprogrammieren? Ist das einfach zu machen, und auch wieder zu wechseln?
Hintergrund ist, das Modul wird später am I2C-Bus laufen, im Moment steht aber die komplette Schaltung noch nicht und ich wollte meinen Roboter schonmal nur so mit den Schrittmotoren an der RS-232 testen. I2C ist leider in Java nicht machbar im Moment, obwohl ich mich glaube ich an die Fertigstellung der Klassen im rxtx Packet dann bald machen werde.
=D> Ja genau, so ist es!Nun hab ich aber irgendwie gepeilt, wieso es nicht gehen könnte. Ich habe die I2C Version des Boards! Ist dann also die Steuerung über RS-232 gar nicht möglich? Die Schnittstelle quasi nur für Debug Zwecke?
Da bräuchtest du noch die RS232 Firmware, kostet aber glaub ca. 9 Euro. Ich weiss nicht ob sich das lohnt wenn du dann sowieso das Board per I2C programmieren willst. Wenn ja müsstest du an robotikhardware.de ne Mail mit Realnamen oder Kundennummer senden. (die Woche, da Ferien anstehn)Wie kann ich mein Modul umprogrammieren? Ist das einfach zu machen, und auch wieder zu wechseln?
Kann ich dann meine I2C Firmware auch einfach wieder zurückspielen (ist ja im Moment nur auf dem Chip, oder?!)?
Wie sieht es mit Copyright aus, dürfte ich für private Zwecke jemanden fragen, mir diese zu geben. 9 € würde ich eher ungern ausgeben, müsste dann aber mind 4 Wochen weiter Theoretisch arbeiten...
Nein mpelz, die Firmware darf in keinem Fall weitergegeben werden. Gerade die Firmware ist das was immer am meisten Entwicklungszeit kostet, daher die geringe Gebühr. Irgendwie muss sich das ja finanzieren.
Die I2C Firmware wäre weg wenn du die RS232 Firmware einspielst. Du könntest Alternativ auch noch einen zweiten programmierten CHip RNST01 beziehen (ca. 12 Euro) und je nach Bedarf einfach Chip wechseln.
Okay, sehe ich selbst als Softwareentwickler auch ein...das mit dem austauschbaren Chip hört sich praktikabel an, werde ich mir überlegen!
Lesezeichen