- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 10 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 99

Thema: Asuro mit Linux oder Mac steuern

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459

    Asuro mit Linux oder Mac steuern

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Allle,

    hier habe ich ein kleines Programm geschrieben, mit dem man den ASURO von einem PC aus steuern kann.
    Leider konnte ich es nur unter Windows testen. Mich würde interessieren, ob es auch mit Linux oder mit einem Mac funktioniert.

    Wer hat Lust, es mal auszuprobieren.

    Gruß,
    robo

    Nachtrag: die ursprüngliche Diskussion zu ASURO und Java hat hier begonnen:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=38368

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    werd ich mal machen, wenn ich meinen asuro soweit zusammengebaut habe =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Schon so viele Post's und noch keinen ASURO, das nenne ich mal eine reife Leistung.

    Gruß,
    robo

  4. #4
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    ich habe sogar zwei, aber die sind gerade im umbau
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo robo,

    ich hatte gestern mal versucht dein Programm unter Linux (Ubuntu) zum Laufen zu bringen, habe es aber nicht geschafft.

    Die meiste Zeit ging dabei fürs Installieren von Suns Java SDK drauf. Ich bin halt sowohl unter Linux als auch bei Java noch absoluter Noob.
    Dank dieser Anleitung habe ich dann doch noch geschafft:
    http://wiki.ubuntuusers.de/Java

    Dein übersetztes Programm ließ sich von der Console nicht starten (Abbruch mit Fehlermeldung). Liegt wohl daran, das es aus mehreren Klassen besteht. Wahrscheinlich müßte man dazu erst alle Klassen in ein ausführbares Jar Archive packen.

    Den Quellcode von der Konsole aus neu zu übersetzen schlug ebenso fehl, dazu benötigt man wohl die Eclipse IDE. Das werde ich heute abend noch mal ausprobieren, ebenso die Installation der RXTX Lib. Die Eclipse Installations Anleitung dazu habe ich schon mal gefunden:
    http://wiki.ubuntuusers.de/Eclipse

    Beim Übersetzen einzelner Quellen von der Console aus, vielen mir einige Warnungen wegen der Benutzung von Umlauten auf. Die Empfehlung dazu (laut google) ist wohl, die Textcodierung in Eclipse von Cp1252 auf UTF-8 umzustellen.

    Ansonsten finde ich die Idee, den Asuro über Java zu steuern, sehr gut. Vielleicht finde ich ja selbst noch die Zeit, mich mit Java etwas näher auseinander zu setzen.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    45
    Beiträge
    119
    Übersetzen funktioniert unter Ubuntu so (aus dem Verzeichnis Java-PC/src):

    javac -cp .:/usr/share/java/RXTXcomm.jar ch/AsuroControl.java

    In AsuroControl.java sind allerdings noch Fehler - die "testAction" ruft ein "g.addWert" auf, "g" ist aber nicht bekannt. Einfach die Zeile auskommentieren, dann lässt sich die Anwendung übersetzen.

    Zum Aufrufen muss (bei meiner Kommandozeilen-Übersetzung ...) das images Verzeichnis von bin nach src kopiert werden. Jetzt kann man mit

    java -cp .:/usr/share/java/RXTXcomm.jar ch.AsuroControl

    die Anwendung starten.

    Weiter hab ich es noch nicht ausprobiert - aber ich halte es für unwahrscheinlich, dass auf jedem Rechner "COM10" die richtige Schnittstelle ist!

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo m.a.r.v.i.n, hallo trapperjohn,

    es freut mich, dass Ihr das Ganze mal ausprobiert habt. Heute habe ich mir das Projekt nochmal vorgenommen und wollte es kompilieren. Mit ist tatsächlich in das Zip-File ein Zwischenstand reingerutscht.

    In AsuroControl.java sind allerdings noch Fehler - die "testAction" ruft ein "g.addWert" auf, "g" ist aber nicht bekannt. Einfach die Zeile auskommentieren, dann lässt sich die Anwendung übersetzen.
    Das ist richtig, einfach auskommentieren und es sollte gehen.

    Weiter hab ich es noch nicht ausprobiert - aber ich halte es für unwahrscheinlich, dass auf jedem Rechner "COM10" die richtige Schnittstelle ist!
    Der Programmcode ist tatsächlich fest auf COM10 eingestellt. Ich habe es für meinen Rechner gemacht. Wenn Ihr den Schnittstellennamen an eurem Rechner kennt, sollte es ein leichtes sein z.B. COM5 in die AsuroControl einzugtragen.

    Bei der Auswahl der Schnittstelle bin ich mir noch unschlüssig: Ich könnte es mit einem "Dialog-Fenster" versuchen. Das ist aber lästig, weil man dann jedesmal beim Programmstart die Schnittstelle auswählen muss. Eine andere Möglichkeit wäre wohl ein "config" File. Da das ganze Projekt aber am Schluss in ein *.jar verwandelt werden soll, wird's wohl schwierig mit dem Pfad.

    Bis demnächst,
    robo

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo m.a.r.v.i.n,

    mir ist gerade noch eine Idee gekommen: vielleicht solltest Du Dich der ganzen Sache schrittweise annähern.

    Bei den von mir erzeugten Klassen gibt es die "Test"-Klasse. Die stellt testweise die Verbindung zum ASURO her. Wenn Du diese Klasse startest,
    kannst Du also grundsätzlich die RS232 Verbindung testen oder die Methoden der Klasse "AsuroKommandos" ausprobieren.

    Der wesentliche Teil des Codes der Testklasse sieht so aus:

    ...
    AsuroKommandos asuro=new AsuroKommandos();
    asuro.schnittstelleOeffnen("COM10");
    asuro.verbindungOk() ; // prüfen
    asuro.backLedL();
    asuro.backLedR();
    asuro.frontLed();
    asuro.ledsOff();
    asuro.schnittstelleSchliessen();
    ...

    Du musst also nur asuro.schnittstelleOeffnen("COM10"); durch
    asuro.schnittstelleOeffnen("/dev/tty0"); oder ähnlich bei Linux
    ersetzen.

    Die Klassen sind bei mir folgendermaßen geordnet:
    Rs232.java ==> benutzt die Schnittstellenkommandos von RXTXcomm
    Timer.java ==> eine Klasse, in der ich Msleep() auf dem PC nachgebildet
    habe
    AsuroKommandos.java ==> die ASURO "high-Level" Kommandos wie z.B. asuro.frontLed(); damit kann die FrontLed des ASURO eingeschaltet werden
    Test.class ==> Testklasse, testet die ASURO Kommandos

    Mann kann die einzelnen Klassen tatsächlich mit dem Java-Compiler auf Kommandozeilenebene übersetzen z.B.

    javac Rs232.java
    javac Timer.java
    javac AsuroKommandos.java
    javac Test.class

    Wie immer kann es ein Problem mit den Suchpfaden geben. Ich habe mir bei Windows einachheitshalber auf c: das Verzeichnis j\ angelegt. Damit der Compiler die Klassen findet, müssen also die Klassenpfade gesetzt werden:

    set CLASSPATH=c:\j\; c:\j\RXTXcomm.jar

    RXTXcomm.jar habe ich auch ins c:\j\ Verzeichnis kopiert.

    Das Compilieren kann auch schief gehen, weil ich in den Klassen ganz oben

    package ch

    stehen habe. Diese Zeile muss man rauswerfen, wenn sich die Dateien nicht in einem Verzeichnis ch\ befinden.

    Mit dem vorgehen habe ich es geschafft, alle Klassen auf der Kommandozeile zu kompilieren. Es ist vielleicht sogar einfacher, als sich mit der etwas komplexen Entwicklungsumgebung von Eclipse auseinanderzusetzen.

    Jetzt kann man eigentlich Test.class mit dem Kommando

    java Test ( ohne die .class extension )

    testen.

    Ach ja, die rxtxSerial.dll sollte sich auch noch in dem Verzeichnis befinden.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.02.2008
    Ort
    Bremen
    Alter
    45
    Beiträge
    119
    Zitat Zitat von robo.fr

    Timer.java ==> eine Klasse, in der ich Msleep() auf dem PC nachgebildet
    Brauchst du nicht nachbilden, guck mal nach Thread.sleep()

    Mann kann die einzelnen Klassen tatsächlich mit dem Java-Compiler auf Kommandozeilenebene übersetzen z.B.

    javac Rs232.java
    javac Timer.java
    javac AsuroKommandos.java
    javac Test.class
    Es reicht, wenn du die hierarchisch oberste Klasse (also die mit main()) übersetzt - der Java Compiler übersetzt Abhängigkeiten automatisch.

    Das Compilieren kann auch schief gehen, weil ich in den Klassen ganz oben

    package ch

    stehen habe. Diese Zeile muss man rauswerfen, wenn sich die Dateien nicht in einem Verzeichnis ch\ befinden.
    Einfach wie oben in meinem Beispiel aus der Verzeichnisebene oberhalb von "ch" kompilieren und dann entsprechend das Verzeichnis beim Kompilieren mit angeben (also bspw. ch/AsuroControl.java). Zum Starten der Klasse dann natürlich den Namen des Packages nicht vergessen (also ch.AsuroControl statt nur AsuroControl).

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Sehr praktisch, Deine Anleitung. Da lernt man es mal von der Pike auf.

    Ich habe jetzt hier die neueste Version abgelegt. Der Fehler mit er fehlenden Klasse ist jetzt beseitigt. Ausserdem habe ich die Timer-Routinen nach Deinem Prinzip oben ausgemistet.
    Im Moment versuche ich gerade, die graphische Darstellung der Liniensensoren etwas aufzupolieren. Dazu habe ich ja die Klasse "Graph" kreiert, die die Messwerte darstellt.

    Mir scheint die Klasse "Graph" gut geeignet, um die Objektorientierung besser zu lernen. Ich möchte dem Graph jetzt beschriftete Achsen hinzufügen. Dazu wollte ich eine Klasse "Axis" erzeugen, die irgendwie dem Graph zugefügt werden.
    Ich habe es allerdings nicht geschaft, weil die Verbindung der "repaint" Methode mit den Achsen nicht klappt.
    Hier ist mir ohnehin unklar, wie man das am besten macht. Sollte man eine "Graph"-Klasse entwerfen und danach die Eigenschaften an eine "Axis" Klasse vererben? Oder sollte man die Klassen lieber vollständig getrennt entwerfen und dann später irgendwie zusammenfügen?

    Gruß,
    robo

Seite 1 von 10 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress