Jump to content

Grafisch Programmieren


Recommended Posts

Hallo

die Idee einer grafischen Programmieroberfläche gefällt mir ^^ das Real Robots Projekt, eine Heft-Serie in welcher ein Roboter Stück für Stück zusammen gesetzt wird, hatte bereits solch ein Interface zur "Programmierung". Leider war das "Entwicklen" darin etwas sehr eingegrentzt und man konnte den erzeugten Code nicht weiterverwenden.

 

Helfen würde ich schon, auch wenn ich auch lieber meine eigenen Projekte siehe "Kiste" weiter bringen möchte. Die "Kiste" soll sobald meine nächste Lieferung ankommt zu einen Stationären Scanner ausgebaut werden. Ziel ist es auch zum testen usw. einige Oberflächenkomponenten zusammen zu bauen mit welchen man unter Angabe der Brick ID sofort deren Ergebnisse sieht. Besser wäre noch alles sofort beim Einstecken des Stacks zu erkennen da ist mir das Parsen noch etwas zu nervig, aber der Brickviewer kann es ja auch.

 

Wie sollte die GUI aufgebaut sein?

Eher wie Blöcke setzen und mit Linien verbinden -> Input Wert oder Event geht von nach ...

Oder wie ein Logik Baukasten?  OR AND Not (Siemens Logo und SPS Entwicklung)

Eine einfache Bibliothek welche die aktuelle Schnittstelle kapselt und vereinfacht (Antme! oder das XNA Framework) würde das Entwicklen auch viel einfacher machen.

Soll am Ende ein Codegernerator vorliegen?

...

 

naja, ich behalte dieses Projekt mal im Auge und arbeite an meinen eigenen Projekten (^.^)/

Link zu diesem Kommentar
Share on other sites

  • Replies 62
  • Created
  • Letzte Antwort

Top Posters In This Topic

Du darfst dich gerne am Coden beteiligen ;)

 

Also ich denke es sollte am Anfang sicherlich etwas sein wie Blöcke setzen und mit Linien verbinden. Denke das wird auch am Anfang leichter zu programmieren sein. Aber ich denke, dass wir dann demnächst beginnen werden. Dazu werden wir dann die Diskussionsplattform wechseln. Das Forum ansich bietet glaub ich nicht genug Möglichkeiten ;)

 

Link zu diesem Kommentar
Share on other sites

Ich denke auch das Blöcke im Stil von VISIO & Co. gut geeignet wären. Auf der einen Seite die Inputs und auf der anderen die Outputs. Eventuell könnte man die Blöcke ja auch noch drehen um die Anschlüsse oben und unten zu haben. Bei den Verbindungen müsste man sicherlich einige unterschiedliche nehmen (gestrichelt usw.) oder man unterscheidet sie mit verschiedenen Farben. Vielleicht regt der folgende Link ja ein wenig an: https://www.circuitlab.com/editor/

 

Ich bin zwar beim programmieren nicht unbelastet, könnte dort aber vermutlich nicht sehr viel helfen. Wenn es um graphische Elemente geht sieht das schon besser aus.

Link zu diesem Kommentar
Share on other sites

Oh das ist auch ein cooles Tool, vor allem die Community Funktionen find ich super, dann kann man Aufbauten direkt mit anderen teilen.

 

Eine Software mit dem GUI Aufbau hatte ich mir auch für hier vorgestellt. Borg wollte später noch etwas dazu schreiben.

Allerdings dürfte es wesentlich komplexer sein, da die einzelnen Bausteine natürlich viel mehr Möglichkeiten haben als so ein Widerstand ;)

Lot of hard work aber wenn es konkret wird, werde ich auch noch mal im englischen Forum rumfragen, ob noch jemand mitarbeiten möchte.

Wenn wir dann grafische Elemente brauchen kannst du uns da ja sicherlich dann helfen. Und gute Tester werden natürlich auch immer benötigt ;)

Link zu diesem Kommentar
Share on other sites

Hi, da hab ihr euch aber ein ambitioniertes Projekt ausgesucht. Wie wäre es denn mit Qt als Framework, da könnte man den Brickviewer als Grundlage verwenden und den dann Schritt für Schritt aufbohren. Der Brickviewer kennt schon alle Bricks und Bricklets, da wäre der erste Schritt, einfache Verknüpfungen zu erstellen, recht einfach. Man könnte ein Tab hinzufügen auf dem man "einfach" Getter mit Setter verbinden könnte. Wie z.b. Joystick.getPosition ----> Motor.setposition.

Darauf aufbauend könnte man eine "einfache" Flusskontrolle (if then else) einbauen evt. zusammen mit Timern.

 

Richtig mächtig würde so ein Programm dann werden, wenn man sein Programm per LowLevelProgrammierung direkt auf die Bricks schreiben könnte. Im Beispiel also das Motor Brick dem Herren des Joystickbricklets einmal mitteilt, dass es doch die Position vom Joystick schicken soll und darauf hin die Position unmittelbar ohne Umweg über einen PC zum Motorbrick geschickt wird und sich dann der Motor entsprechend bewegt.

 

 

Link zu diesem Kommentar
Share on other sites

Wir hatten uns vor Zeiten folgendes zu dem Thema ausgedacht:

 

1. Suchen einer Graph Library mit der man Objekte hin und herschieben kann, per Pfeile verbinden kann etc.

 

2. Brick Viewer erweitern um die Möglichkeit sehr einfache Abläufte darzustellen.

 

3. Abstrakte Knoten (neben den Bricks und Bricklets) hinzufügen die mathematische Berechnungen, Abzweigungen machen (Addition/Multiplikation, Skalierung, "Wenn x > y", etc.)

 

4. Kodierung des vom Benutzer erstellten endlichen Automaten (wir sind hier weit weg von Turing-Vollständigkeit!) in kompakte Form.

 

5. Ausführen des Automaten im Brick Viewer per Knopfdruck (einfach).

 

6. Jetzt kommt der Clou: Übertragung der Automatenkodierung auf den Brick und standalone ausführen auf dem Brick ohne PC-Verbindung (schwierig!).

 

 

Das geht ein wenig in eine andere Richtung als das meiste hier vorgeschlagene. Einen Quellcodegenerator kann man sicherlich auch machen, das hat aber eine ganz andere Zielsetzung. Sobald wieder Quellcode generiert wird der dann vermutlich auch noch abgeändert werden muss um etwas komplexere Sachen zu machen, werden natürlich wieder nur Leute angesprochen die sich mit programmieren auseinandersetzen wollen (Installieren einer IDE, abändern von Code, kompilieren, etc).

 

Falls wir selber sowas angehen würden, wäre die Zielsetzung das meine Mutter damit eine einfache Steuerung bauen kann. Ein Codegenerator ist natürlich auch cool, keine Frage :).

Link zu diesem Kommentar
Share on other sites

So ich habe mal ein Beispiel zusammengebaut, wie ich mir das vorstellen könnte. Die Verbindung der Bricks ist noch nicht implementiert, da ich mir jetzt auch nicht zu viel Arbeit mit Mustern machen wollte, ohne dass eine Entscheidung für die Lösung getroffen wurde.

Das Programm ist pures Java allerdings als .exe umgewandelt. Die Mac und Linux User mögen es mir vergeben. Bei Bedarf kann ich es auch als .jar bzw. jeweils für die anderen Plattformen compilen lassen.

www.cyrex-it.de/projekte/Tinkerforge/visuallibrarytest.7z

Funktionen: Einfach auf die weiße Fläche klicken, dann erscheinen rechts die Bricks/Bricklets (sind erst mal nur 3), diese können dann auf die Fläche gezogen werden. Mit strg+ Mausrad kann man zoomen. Mit Mausrad gedrückt, kann man bei größeren Modellen die Fläche schieben. Links hat man die Satelite oder auch Birdview zum einfachen Navigieren in großen Projekten. Die auf die Fläche gezogenen Bricks/Bricklets können umbenannt werden.

Guckts euch an und postet ne Meinung dazu

 

Ps: ich hoffe es war ok, dass ich mir Bilder aus dem Shop geklaut und in den Loader das Tinkerunity Logo eingesetzt habe. Wenn nicht bitte melden dann nehme ich das raus

Link zu diesem Kommentar
Share on other sites

Dein Beispiel sieht doch schon praktisch aus und hat bestimmt schon Mühe gemacht! An die einzelnen Elemente müssen dann halt Eingänge und Ausgänge. Über DK auf das jeweilige Element kann sich ja dann ein Fenster öffen wo man Grundparameter eingibt, oder man steuert sie mit über dafür vorgesehene Eingänge. Des Weiteren müsste die Oberfläche Anzeigeelemente und Elemente zur weiterverarbeitung besitzen z. B. "In/aus Datei speichern/lesen", Rechen- und Logikoperatoren.

 

Der Punkt 6 von borgs Post ist sehr interessant und wäre ne coole Sache.

Link zu diesem Kommentar
Share on other sites

 

Das Programm ist pures Java allerdings als .exe umgewandelt. Die Mac und Linux User mögen es mir vergeben. Bei Bedarf kann ich es auch als .jar bzw. jeweils für die anderen Plattformen compilen lassen.

 

 

Hi,

 

super, dass du das gemacht hast. Aber natürlich nehme ich als reiner Linuxer die .exe übel ;-)

Da ich gerade keine Lust habe, ein Win in ner virtuellen Maschine zu installieren (und das Compilen schneller gehen dürfte) wollte ich dich um den Gefallen bitten, eine beliebige Linux-fähige Variante zu erzeugen.

Danke schonmal.

 

 

EDIT: Ich habs jetzt nicht in Wine ausprobiert. Kann ich auch gerne erstmal machen, sobald ich zu Hause bin.

 

Außerdem: Du hast ne PM

Link zu diesem Kommentar
Share on other sites

So ich habe mal ein Beispiel zusammengebaut, wie ich mir das vorstellen könnte. Die Verbindung der Bricks ist noch nicht implementiert, da ich mir jetzt auch nicht zu viel Arbeit mit Mustern machen wollte, ohne dass eine Entscheidung für die Lösung getroffen wurde.

Das Programm ist pures Java allerdings als .exe umgewandelt. Die Mac und Linux User mögen es mir vergeben. Bei Bedarf kann ich es auch als .jar bzw. jeweils für die anderen Plattformen compilen lassen.

www.cyrex-it.de/projekte/Tinkerforge/visuallibrarytest.7z

Funktionen: Einfach auf die weiße Fläche klicken, dann erscheinen rechts die Bricks/Bricklets (sind erst mal nur 3), diese können dann auf die Fläche gezogen werden. Mit strg+ Mausrad kann man zoomen. Mit Mausrad gedrückt, kann man bei größeren Modellen die Fläche schieben. Links hat man die Satelite oder auch Birdview zum einfachen Navigieren in großen Projekten. Die auf die Fläche gezogenen Bricks/Bricklets können umbenannt werden.

Guckts euch an und postet ne Meinung dazu

 

Ps: ich hoffe es war ok, dass ich mir Bilder aus dem Shop geklaut und in den Loader das Tinkerunity Logo eingesetzt habe. Wenn nicht bitte melden dann nehme ich das raus

 

wie wäre es, wenn du das bei github hochladen könntest, dann können wir auf einfache weise dazu beitragen.

Link zu diesem Kommentar
Share on other sites

Der Punkt 6 von borgs Post ist sehr interessant und wäre ne coole Sache.

 

Das Problem ist aber, dass der Brick z.B. keine EMails versenden kann.

 

Der Ansatz von M4ST3R ist ganz gut und zeigt, dass man mit NetBeans durchaus auf dem richtigen Weg ist.

 

Einen Quellcode in Java aus einem zusammengezeichneten Programm zu erzeugen ist simpel.

Der Ansatz sollte aber m.E. sein, die Brickmodule visuell darzustellen, Programmlogiken per Drag'n'Drop zu erstellen und erweiterte Funktionen wie z.B. EMail, SMS etc zu realisieren.

So kann sich der Anwender eine Art Schalttafel zusammenziehen und diese auch entsprechend Anwenden (Temperaturanzeige, Knopf drücken für Ein/Ausschalten, Relais schalten, Eingänge/Ausgänge anzeigen, und und und).

 

So eine Schalttafel könnte dann z.B. so aussehen (Bild ist willkürlich ausgesucht worden und soll nur einen optischen Eindruck vermitteln):

 

inco_bri.gif

 

gmu

Link zu diesem Kommentar
Share on other sites

 

Einen Quellcode in Java aus einem zusammengezeichneten Programm zu erzeugen ist simpel.

Der Ansatz sollte aber m.E. sein, die Brickmodule visuell darzustellen, Programmlogiken per Drag'n'Drop zu erstellen und erweiterte Funktionen wie z.B. EMail, SMS etc zu realisieren.

 

 

 

Ich würde dir da auf jeden Fall zustimmen, dass das der wesentliche Ansatz sein sollte. In meinen Augen ist es aber ein gutes (und für Umfeld Schule auch wichtiges) Feature, wenn die Quellcode-Generierung bereits mit implementiert ist.

 

Aber da du ja schon selber sagst, dass das voraussichtlich nicht gerade der schwierigste Aspekt sein sollte, sind wir uns da vermutlich einig, dass man das einfach mit einbaut. Oder habe ich dich da missverstanden?

Link zu diesem Kommentar
Share on other sites

Hallo FabianB,

 

nein, das mit dem Quellcode erstellen ist wirklich simpel.

 

Das kann sogar soweit gehen, dass man wahlweise nur das reine Programm ohne grafischen Schnickschnak erzeugen läßt und somit ein schlankes Progrämmchen hat, dass nur die Bibliothek von TinkerForge benötigt.

Ein Einsatzgebiet dafür wäre z.B. ein Aufbau mit eigenem Display (wenn wieder lieferbar;) ).

 

gmu

 

Link zu diesem Kommentar
Share on other sites

Leider scheint meine SSD gestern abend abgeraucht zu sein. Daher komme ich momentan nicht mehr an mein Projekt ran (vielleicht auch nie mehr?) solange ich keine neue habe, kann ich die auch nicht aus dem svn repository ziehen. Kam von euch da jemand ran? Ging das mit dem svn link?

 

Gruß

 

PS.: wenn jemand weiß wie man eine SSD zum leben erweckt... schickt mir ne pm

Link zu diesem Kommentar
Share on other sites

Hallo M4ST3R,

 

das kann man sich File für File schon ziehen:

tfsoftwaretest~tinkerforge-sourcecode - Revision 2: /VisualLibraryTest/ShapeSample/src/org/netbeans/shapesample

..

Bundle.properties

GraphSceneImpl.java

LabelTextFieldEditor.java

MyNode.java

ShapeTopComponent.form

ShapeTopComponent.java

palette/

 

SSD - ich bin noch ein ein Gegner davon.

Hoffe Du kannst da noch was rausholen von den Daten.

Schon mal probiert die SSD wo anders reinzustecken?

 

Gruß

 

gmu

Link zu diesem Kommentar
Share on other sites

ich LIEBE meine SSD auch, wenn die jetzt verreckt ist und alle nicht gesicherten Daten weg sind. Allerdings liegt das an der tollen Idee einen SandForce Controller mit AES Verschlüsselung zu benutzen. Wer auch immer so clever war, hatte scheinbar nicht bedacht, dass man den mal tauschen muss.

 

Nunja solange meine neue SSD nicht da ist, läuft mein Rechner nur mit dem Lebensnotwendigsten. Daher kein Netbeans o.ä. Ich denke jeder der Interesse hat, hatte sich das Programm schon mal angesehen.

 

Wenn es nun umgesetzt werden soll (hörte sich bei Borg nicht so nach Begeisterung an?) dann sollten wir eine Liste machen, wer mitarbeiten will. Anschließend könnte es dann auch losgehen mit Pflichtenheft und Planung mit anschließender Programmierung. Würde das Projekt auch leiten, wenn da Bedarf ist.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


×
×
  • Neu erstellen...