Forum: Projekte & Code Projekt: VSD - Virtual Screen Designer für Displays


von Alex R. (itaxel)



Lesenswert?

Hallo zusammen.

Ich möchte hier auch mal mein Projekt vorstellen an dem ich schon eine 
weile sitze.

Wer kennt es nicht? Man hat ein Grafikdisplay und möchte die Anzeige auf 
dem Display gut aussehen lassen. Also sitzt man Stunden davor um ein 
einigermaßen gutes UI-Design manuell zu programmieren.
Ehrlich gesagt finde ich es für mich schon lästig immer wieder das ganze 
aufzubauen, copy und paste, anpassen, kompilieren und aufspielen, 
schauen ob es passt usw. usw.

Im Internet habe ich nichts gefunden das einem die Arbeit für meine 
Bedürfnisse erleichtert. Also kurzer Hand beschlossen...
Ich mach mir ein eigenes Programm...


VSD - Virtual Screen Designer

Viele kennen es, dass "Virtual" in der Programmierung eine drag'n'drop 
Programmierung von Benutzersteuerelemente ist. Ein sogenannter 
WYSIWYG-Editor (WhatYouSeeIsWhatYouGet). Dieses Programm soll es mir 
zukünftig erleichtern Projektbasierend und Objektorientierte Screens, 
Menüs, etc. für Grafiksiplays zu erstellen.
Als Background-Programmierung habe ich mir meine eigene Display-Lib 
erstellt.


Was soll der VSD können und was kann er bis jetzt

Können soll er eigentlich alles... aber mal schauen was ich alles 
reinpcke.

Was soll VSD können :
- Auswahl verschiedener Displays
- Projekterstellung mit mehreren Screens
- Aktive Speicherplatz Berechnung
- Code-Erzeugung:
      - für ArduinoIDE und AtmelStudio
      - als Selbstlaufendes Projekt oder nur als Include
- So ziemlich alle Benutzersteuerelemente mit 
Eigenschaften-Einstellungen
     (Button, Lable, Rechtecke, Linien, Kreise, usw...)
- Button-Touch funktionen

und vielleicht noch anderes was mir bis jetzt noch nicht in den Sinn 
gekommen ist.
Vielleicht habt ihr noch Vorschläge.


Was kann VSD bis jetzt :
- Projekterstellung
- Auswahlmöglichkeit von verschiedenen Displays
- Erstellen von mehreren Screens in einem Projekt
- Eigenschaften verändern von Benutzersteuerelmente
- Erstellen von Buttons (Press-Funktion noch in Arbeit)
- Erstellen von Rechtecken
- Code-Generierung (momentan nur als Copy/Paste möglich)

Gerne könnt Ihr eure Meinung, Vorschläge mir mitteilen.

Den Fortschritt werde ich hier zukünftig weiter posten.

Gruß Alex

: Verschoben durch Admin
von Alex R. (itaxel)


Lesenswert?

Nachtrag:

Hab vergessen eindeutig zu erwähnen, dass der VSD nur für ATMEL µC ist.

Mir stehen nur µC zur Verfügung die in den Arduino Uno (28Pin) passen. 
Andere Boards zum testen habe ich leider keine.

Deshalb würde ich mich sehr freuen wenn sich der eine oder andere dazu 
bereit erklärt, hin und wieder meine Software auf andere Boards bzw. 
Atmel-µC zu testen.

Um auch später die Display-Auswahl zu erweitern, würde ich mich auf eine 
Zusammenarbeit sehr freuen. Momentan besitze ich nur die im Projekt 
enthaltenen Displays (das PIXNOR und DOG-M).

Wer interesse hat bitte per PM melden.

von Rene H. (Gast)


Lesenswert?

Super Idee, ganz ehrlich.
Was hast du als Sprache gewählt? Sieht etwas nach Delphi (Lazarus) aus.

Grüsse,
René

von Alex R. (itaxel)


Lesenswert?

Vielen Dank René.

Ich benutze Visual Basic.

Gruß Alex

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Sieht gut aus, so etwas in der Art habe ich auch schon gesucht, 
allerdings µC- und TFT-Unabhängig. Leider habe ich nichts gefunden was 
mich so richtig zufriedengestellt hätte, da zuviel Gimmicks im Spiel 
waren. Ich bräuchte einen Designer der nackten Code erzeugt und ich den 
dann händisch in mein System einbinden kann, wenn du verstehst was ich 
meine.

Ansonsten würde ich mich und mein Equipment anbieten: STM32F429 über 
eigenen LTDC an 7" 800x480 TFT.

Und wie gesagt, ich fände es sehr interessant, wenn der Designer nur das 
Nötigste erzeugt, um das händisch auf dem Controller zu implementieren.

Grüße
Reggie

von Weinga U. (weinga-unity)


Lesenswert?

Ohne selbst sowas zu benötigen,

aber da wäre eine XHTML+CSS Kombination was nettes. Im Browser kann man 
sich das Ergebnis ansehen. Eine XSL-Transformation wandelt dann die 
XHTML Datei in C oder was auch immer um. Da könnte man dann bei den 
Buttons und sonst was auch direkt gleich C-Code in HTML als Tag 
reinschreiben, der dann in das Ziel-File rumgebogen wird.

Lg

PS: Delphi ist super. Habe mir eine Delphi 7 Lizenz gegönnt. Vor vielen 
Jahren.

von Alex R. (itaxel)


Lesenswert?

Reginald L. schrieb:
> µC- und TFT-Unabhängig

µC unabhängig ist es im indirektem Sinne auch. Mit geringem Aufwand kann 
man auch andere Lib's einbinden die für andere µC gedacht sind. Ausgeben 
kann man dann ja einfach include-Files in C++.

TFT unabhängig wird es auch. Statt ein Display auszuwählen wählt man die 
Auswahl "Eigenes Display" aus.


Reginald L. schrieb:
> Ich bräuchte einen Designer der nackten Code erzeugt
Wie nackt meinst du?
Ausgegeben wird der ganze Quellcode. Also Funktionsaufruf und 
Parameterübergabe.


Reginald L. schrieb:
> würde ich mich und mein Equipment anbieten
Vielen dank, werde gerne mal darauf zurück kommen. Momentan ist die 
Programmierung noch nicht so weit um jetzt schon weitere Displays 
einzubinden.

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Alex R. schrieb:
> Wie nackt meinst du?
> Ausgegeben wird der ganze Quellcode. Also Funktionsaufruf und
> Parameterübergabe.
Damit meinte ich, dass man selber einen simplen Scheduler programmieren 
kann. Einfach um die eigenen Wünsche erfüllen kann.

Alex R. schrieb:
>> würde ich mich und mein Equipment anbieten
> Vielen dank, werde gerne mal darauf zurück kommen. Momentan ist die
> Programmierung noch nicht so weit um jetzt schon weitere Displays
> einzubinden.
Gerne doch, kannst mich dann auch per PM erreichen.


Ich habe vor einiger Zeit mal eine Textausgabe-Funktion für den STM32 
geschrieben (mit Antialiasing, Fonts können mit FontConverter oder 
TheDotFactory erstellt werden) und eine Console implementiert. Ist jetzt 
nichts großartiges, aber wenn da Interesse besteht kannst dich auch 
gerne melden. Dein Vorhaben finde ich allerdings grandios, wäre cool, 
wenn da was draus wird.

von Lars R. (lrs)


Lesenswert?

So etwas gibt es unter den Namen HMI, HMI display, HMI display design 
oder ähnlichen. Dennoch wäre dieses Projekt nicht weniger interessant. 
Vor allem für kleine uC und auch, weil es bisher bei wenig bekannten 
Insellösungen geblieben ist.

Konsequent fände ich bei dem GUI-Feeling, dass Du anhand der ersten 
Bilder scheinbar anstrebst, die Nutzung des QT-Designer mit einer 
Einschränkung (Liste) der benutzbaren Elemente und Attribute. Dann 
braucht man sich mit der (Weiter-)Entwicklung und Wartung des 
GUI-Designers nicht befassen und setzt beim Parsing des oder der 
QT-Files an. Idealerweise hat Deine Wunschprogrammiersprache bereits 
einen passenden Parser dafür. Und Du kannst alle QT-Nutzer ansprechen.

https://de.wikipedia.org/wiki/Qt_%28Bibliothek%29

Falls Du Bitmaps speicherst, so könntest Du (automatisiert) auch gleich 
Sceenshots am PC machen.

von Alex R. (itaxel)


Lesenswert?

Hallo zusammen,

ich möchte mal kurz den aktuellen stand mitteilen.

Anfangs kam ich leider nicht mehr dazu weiter zu machen.
Die letzte Zeit habe ich meine Display-Lib etwas umgeschrieben um andere 
Displays besser und einfacher implementieren zu können.

Des weiteren bin ich gerade dabei einen Einrichtungs-Assistenten zu 
machen. Sobald dieser fertig ist und die größten Bugs beseitigt sind 
werde ich den VSD zum download einstellen.

Bis dahin dauert es noch eine Weile.

Gruß Alex

: Bearbeitet durch User
von .-. (Gast)


Lesenswert?


von Alex R. (itaxel)


Lesenswert?

OHA...

Danke für den Link.
Habe früher wirklich lange recherchiert aber bin noch nie auf dieses 
Seite gestoßen.
Werde es mir heute Abend mal anschauen.
Dann werde ich mich entscheiden ob ich mein Projekt einstampfen kann :/

von Reginald L. (Firma: HEGRO GmbH) (reggie)


Lesenswert?

Alex R. schrieb:
> Dann werde ich mich entscheiden ob ich mein Projekt einstampfen kann :/
Wenn du in Richtung MIT-Lizenz gehst, stampf es nicht ein. Wenn du damit 
Geld verdienen möchtest, gibt es allerdings schon einige Projekte dieser 
Art.

Ich bin für nicht-einstampfen.

von Alex R. (itaxel)


Lesenswert?

Ich werde es nicht einstampfen.

Ich habe uGFX ausprobiert. Es ist zwar nice to use aber zu kompliziert 
um sofort ein brauchbares Ergebnis zu haben.
Ich möchte das Ziel-Display und Microcontroller auswählen, Screens 
erstellen und dann den Code ausgeben und hochladen. Fertig. Ohne im 
Quellcode rumpfuschen zu müssen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Prinzipiell finde ich die Idee gut, aaaaaber:

Bitte zur Entwicklung unbedingt !!! ein Werkzueg verwenden, welches 
plattformunabhängig einsetzbar ist!

Ich finde diese einseitige Windows-Zentriertheit dumm, unangemessen und 
zudem vollkommen unnötig

Es ist einfach schade, wie viele gute Ideen dadurch für Entwickler auf 
anderen Plattformen (Mac, Linux, ...) verloren gehen. Mit ein wenig 
Überlegung im Vorfeld ist das kein großes Ding (Java, Xojo, HTML/CSS 
....)

ERST DENKEN, DANN MACHEN, bitte ...

von Michael U. (amiga)


Lesenswert?

Hallo,

ich verstehe zwar Deinen Wunsch, aber: warum sollte er?
Er braucht dieses Programm und erstellt es mit den Mitteln, die er 
beherrscht auf seinem System.
Er stellt es zur Verfügung, jeder kann die Ideen und Abläufe nutzen und 
für ein eigenes Tool nutzen. Vielleicht gibt es auch den Source-Code, 
dann hat man es etwas einfacher es zu protieren.

Habe ich vor Jahren mit meinem Logic-Analyzer auch so gehalten. War in 
VB6 und spielt (auch bei ein paar anderen leuten) heute noch.

>Ich finde diese einseitige Windows-Zentriertheit dumm, unangemessen und
>zudem vollkommen unnötig

Ah ja.

RasPi Jessie, USB-Soundkarte. Schnell ein paar Einstellungen noch 
ändern.
Ach? Der alsa-Kram ist inzwischen ganz anders organisiert?
WLAN-Stick noch ran. Nanu, Nichtmehr network sondern ein dhcpcd als 
Dämon. ok, hat ja irgendwo eine config. Achso, die Einstellungen werden 
durch irgendwelche hidden-Dateien im $home sowiese überschreiben???

Natürlich stört das keinen Linuxer, wenn damit etliche Anwender auf die 
Schnauze fallen, die haupsächlich nur anwenden.
Die paar dutzend Seiten man-pages wird der User ja mal schnell lesen 
können und seine Linuxkenntnisse gleich aufbessern.

Wie jetzt? Ich wollte nur den MPD und die Soundkarte anpassen und WLAN 
statt LAN nehmen? Ich wollte Debian auf einem neuen RasPi nur genauso 
nutzen wie Windows auf einem neuen PC.
Komischweise habe ich seit Ende von Win98 dort diese Probleme so nicht.

Sorry, hat mich nur letzte Woche ziemlich geärgert der beachtliche 
zusätzliche Zeitaufwand.

Gruß aus Berlin
Michael

von Frank L. (frank_l)


Lesenswert?

Hallo,

grundsätzlich muss ich Michael recht geben. Jeder sollte in dem System 
entwickeln, in dem er zu Hause ist. Ich würde auch gerne mit einem 
anderen System als Windows arbeiten und ich habe schon so ziemlich alles 
hinter mir, angefangen von Windows mit mehren VMs über Linux mit VMs, 
Mac mit Fusion. Letztlich bin ich wieder auf einem Windows Notebook 
gelandet. Warum? Alle meine Kunden haben Windows meine primäre 
Entwicklung ist .NET.

So jetzt aber zu diesem Projekt. Geile Idee!!! Mein 
Verbesserungsvorschlag, wäre lediglich direkt eine Skripting Umgebung 
vorzusehen. D.h. Der Zielcode wird nicht durch einen festen Algorithmus 
erzeugt sondern durch eine Skripting Engine, der Output sich jeder 
anpassen kann. Also seine eigenen Scripte für die jeweilige 
Zielplattform bauen.

Ich habe schon mehrfach solche Dinge programmiert um die verschiedenen 
Anforderungen in Projekten abzubilden.

Wenn Du da Tipps haben möchtest, stehe ich gerne zur Verfügung.

Gruß
Frank

von Alex R. (itaxel)


Lesenswert?

Frank E. schrieb:
> ein Werkzueg verwenden, welches
> plattformunabhängig einsetzbar ist!

Sorry, dass es dich ärgert aber ich benutze nur Windows und habe es 
damals in VB schon angefangen. Der Aufwand wäre für mich persönlich viel 
zu groß.
Ansonsten stimme ich auch Michael und Frank zu.

Frank L. schrieb:
> Mein
> Verbesserungsvorschlag, wäre lediglich direkt eine Skripting Umgebung
> vorzusehen. D.h. Der Zielcode wird nicht durch einen festen Algorithmus
> erzeugt sondern durch eine Skripting Engine, der Output sich jeder
> anpassen kann. Also seine eigenen Scripte für die jeweilige
> Zielplattform bauen.

Hab ich schon von Anfang an mit eingeplant ;)
Aber trotzdem Danke für deinen Vorschlag. Du könntest mir vielleicht 
sagen wie du das gelöst hast. Ich mache das mit xml.

: Bearbeitet durch User
von Frank L. (frank_l)


Angehängte Dateien:

Lesenswert?

Hallo Alex,

da gibt es verschiedene Möglichkeiten.

D.h. XML und Transformation ist eine Lösung. Die aus meiner persönlichen 
Sicht sauberste Lösung ist der Einsatz von VB-Script, CS-Script oder 
ähnlichem direkt in der Anwendung.

Hierzu baue ich mein Datenmodell so auf, dass ich es aus einer 
Scriptengine heraus direkt ansprechen kann.

Ich persönlich setze zu diesem Zweck CSscript ein:

http://www.csscript.net/

In Netz findest Du zum Thema einiges. Ich habe mal ein Template 
angehangen, welches wir benutzten, um Hostmasken die wir auslesen in C# 
ansprechen zu können. Es ist nur eins von insgesamt 7 Skripten die 
zusammen genommen die Zugriffsschicht generieren.

Für die Freunde von XML Transformation, ja geht auch, ist mir aber zu 
aufwendig und teilweise nicht flexibel genug.

Gruß
Frank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.