Falcony
Posts: 5
Joined: Fri Jul 12, 2013 11:43 am

JavaFx

Fri Jul 12, 2013 12:02 pm

Hallo,

ich möchte meinen Pi verwenden um Messwerte in einem Diagramm abzubilden.
Die Messwerte sollen über die serielle Schnittstelle eingelesen werden.

Ich habe den Pi erst seit ein paar Tagen und bin dazu auch noch Linux Neuling.

Ich möchte mir also ein Programm schreiben welches die Messwerte in einem Diagramm darstellt, auf Windows ist das kein großes Problem mit C# oder Java, aber mit dem Pi....

Anfangs habe ich versucht mit Mono ein C# WinForm Programm zum laufen zu bringen, bin gescheitert... (wäre ja zu einfach gewesen :P).
Stimmt das eh, dass WinForm Anwendungen auf dem Pi auch mit mono nicht laufen?

Jetzt habe ich Java in angriff genommen, ich habe das java jdk8 mit javafx (https://jdk8.java.net/fxarmpreview/) auf dem Pi installiert und gerade das erste programm gestartet. Das Diagramm wird zwar angezeigt nur ist der restliche Bildschrim schwarz und ich kann das Programm nicht mehr beenden. Eventuell hat sich der Pi auch beim starten aufgehängt oder die Rechenleistung ist einfach zu hoch, keine Ahnung.

Ist Java die beste Lösung für mein Vorhaben? Wie würdet ihr das lösen? Ich bin offen für alles, habe hald nur in Java und C# etwas Programmiererfahrung.

Bin ich auf dem richtigen Weg oder geht das ganze einfacher/besser?

mfg

Falcony

User avatar
mline
Posts: 1295
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: JavaFx

Fri Jul 12, 2013 1:06 pm

Java würd ich nicht auf der Pi einsetzen. Sehr Speicher und CPU-Zeit hungrig. Einfache Anwendungen laufen zwar aber suboptimal.
Ich benutze C++. Wenn du C# kannst könntest auch C++ einsetzen
<~~>

Falcony
Posts: 5
Joined: Fri Jul 12, 2013 11:43 am

Re: JavaFx

Fri Jul 12, 2013 7:42 pm

mline wrote:Java würd ich nicht auf der Pi einsetzen. Sehr Speicher und CPU-Zeit hungrig. Einfache Anwendungen laufen zwar aber suboptimal.
Ich benutze C++. Wenn du C# kannst könntest auch C++ einsetzen
Ah ok. Also läuft eine normale(kein CLR, CIL) WinForm Anwendung die ich mit Visual Studio C++ 2010 schreibe problemlos auf dem pi?
verstehe ich das richtig? benötige ich da mono?

sry falls ich sehr unwissend bin^^

danke schonmal

User avatar
mline
Posts: 1295
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: JavaFx

Fri Jul 12, 2013 8:10 pm

Nene ich spreche von gcc bzw g++ also nicht von der Microsoft Version von c++. Die Sprache ist die selbe, auch gibt es eine Reihe sehr guter Entwicklungsumgebungen die wesentlich schneller laufen als die extrem überladene Visual Studio IDE.
Ein VS Projekt kannst du grundsätzlich mit Mono ausführen sofern du keine Windows spezifischen Sachen einbaust. Und das ist auch schon der erste Nachteil.
Du musst viel pfuschen damit Anwendungen die du mit VS schreibst auch mit Mono laufen. Die Anwendungen sehen zu 80% nicht so aus wie bei Windows. Du bist von einem Framework abhängig.

Ich benutze einfach nur c++ sowie Eclipse oder codeblocks zum Programmieren meiner Anwendungen. Falls du GUI nicht händisch machen willst gibt es dafür auch Helfer. WindowsBuilder zb

Von Microsoft hab ich mich schon länger distanziert... Ich will hier keinen OS-Krieg lostreten darum sage ich nur das ich mich mit Microsoft Produkten nicht mehr auseinandersetzen will.
<~~>

Falcony
Posts: 5
Joined: Fri Jul 12, 2013 11:43 am

Re: JavaFx

Fri Jul 12, 2013 8:38 pm

Alles klar, hatte ich mir schon fast gedacht.

Es geht mir nur um die GUI, da kann ich bei Visual Studio einfach ein Chart aus der Toolbox reinziehen, bearbeiten und fertig. Ob ich es schaffe eine GUI mit einem Diagramm händisch zu schreiben ist fraglich. Ich schau mir mal Eclipse mit WindowsBuilder an, bzw such einmal im Internet, vl find ich ja einen Beispielcode oder Tutorial.

edit: ok dann ohne full quote :)
Last edited by Falcony on Sat Jul 13, 2013 11:12 am, edited 1 time in total.

User avatar
mline
Posts: 1295
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: JavaFx

Fri Jul 12, 2013 9:34 pm

Fullquotes sind hier nicht so gern gesehen. Habe deswegen auch schon Rüge bekommen.
Ist aber auch eine doofe Angewohnheit ;-)

Für codeblocks gibts wxsmith. Etwas kompliziert aber nutz ich auch gerne.
Und es heisst WindowBuilder ohne s... Mein Fehler sorry :-)
<~~>

ghp
Posts: 1402
Joined: Wed Jun 12, 2013 12:41 pm
Location: Stuttgart Germany
Contact: Website

Re: JavaFx

Sat Jul 13, 2013 3:06 pm

Hallo,

habe gerade probehalber ein kleines java-Programm auf meinem win-PC in eclipse zusammengebaut. Eine TableEditor-Demo von der java-tutorial-webpage. Dann mit 1.6-Level compiliert und die classes auf den raspberry übertragen. Dort ist openjdk installiert, und die Anwendung läuft.
Zum Start braucht die ein wenig, aber dann ist das GUI 'responsive'. Das Verschieben der Tabellenspalten ist im fullscreen (1900*1000) etwas behäbig, aber das wäre in einer anderen Sprache wahrscheinlich auch langsam. Auch das Beenden funktioniert klaglos.

Grüsse
Gerhard

Falcony
Posts: 5
Joined: Fri Jul 12, 2013 11:43 am

Re: JavaFx

Sat Jul 13, 2013 6:49 pm

Hallo Gerhard,

das klingt doch interessant, könntest du mir einen link zu Demo schicken oder posten?
meinst du java-tutorial.org? konnte dort auf die schnelle nichts finden.

Ich habe eine c++ Library gefunden, pplot (http://pplot.sourceforge.net/). Nur scheitere ich da schon am simplen enbinden/verwenden der Library. Ich habe den Download entpackt und stehe jetzt vor einigen .cpp und .h Dateien, anbei eine Readme die ich mehr schlecht als recht deuten kann. Muss ich mir die Bibliothek erst kompilieren oder nur die Header einbinden mit #include "header.h"? Versteh nicht ganz wie ich da vorgehen muss...

lg

Martin

ghp
Posts: 1402
Joined: Wed Jun 12, 2013 12:41 pm
Location: Stuttgart Germany
Contact: Website

Re: JavaFx

Sat Jul 13, 2013 8:37 pm

Hallo,

das java-Beispiel ist aus http://docs.oracle.com/javase/tutorial/ ... omponents/. Hier habe ich mir eine der table-Demos rausgesucht.
Habe das wie folgt implementiert:
[win] in eclipse die java-Files übersetzen, Compatibility 1.6
[pi] console öffnen, 'java -version' aufrufen, es muss eine sinnvolle Meldung kommen. Beispiel:

Code: Select all

pi@raspberrypi ~ $ java -version
java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.5) (6b27-1.12.5-1+rpi1)
OpenJDK Zero VM (build 20.0-b12, mixed mode)
[win]die class-files zum pi übertragen. z.B. ftp, binary (!)
[pi] in der grafischen Oberfläche, eine console öffnen 'lxterminal', darin "java ..class.." aufrufen.

Das java ist hier ein 'ganz normales java', also hier kein javafx.
Zitiert aus wikipedia: "JavaFX-Anwendungen werden vom Webserver heruntergeladen und auf dem Client, typischerweise dem Browser, ausgeführt. Die Anwendung kommuniziert mit dem Webserver über HTTP-GET, REST oder Webservices."
Wenn Du auf dem [pi] eine serielle Leitung lesen willst, und die Ergebnisse lokal auf dem [pi] anzeigen, dann ist ja der Umweg über eine web-server nicht nötig.
Wie es im Detail funktioniert, mit java eine serielle Schnittstelle zu lesen, habe ich noch nie im Detail ausprobiert. Es gibt eine Bibliothek rxtx oder so ähnlich für den Zweck.

Wenn Du cpp benutzen willst, dann musst Du cpp-Dateien selbst übersetzen. Im Prinzip mit gcc, bzw mit einem makefile.
Vorübersetzte Bibliotheken funktionieren i.d.R. nur, wenn die für das passende Linux und die korrekte CPU übersetzt sind. Hier sind die Probleme grösser als bei java.
Da ich selbst ein eclipse-Fan bin, arbeite ich mit cpp für pi auch remote, dann allerdings auf einer linux-Maschine.
[linux] eclipse mit CDT, cpp-Projekt. Dort kompilieren, ausprobieren,
[linux] Die sourcen mit den von eclipse generierten makefiles zum pi kopieren, nicht die *.o
[pi] makefile aufrufen.

Auf meiner [linux] läuft nicht mal debian, sondern suse. Natürlich muss man rechnerspezifische Parameter entsprechend in z.B. properties.Dateien extrahieren, aber das macht man ja eh.

Grüsse
Gerhard

Return to “Deutsch”