Forum: Projekte & Code Virtual uC Controlpanel


von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

... und noch ne virtuelle Frontplatte zur uC-Fernsteuerung über eine 
serielle Verbindung (erstmal nur UART, später gern auch 
USB/Ethernet/Wlan/whatever). Die Anregung kam von hier 
Beitrag "Projekt: Virtuelle Instrumente an serielle Schnittstelle",
da wird nur leider in Delphi geproggt, was ich nicht besonders gerne 
mag. Delphi hat mich damals schwer enttäuscht, weil es sich geweigert 
hat, meine hochwertigen Turbo-Pascal-Sourcen zu übersetzen. Ausserdem 
möchte ich dem Anwender die Wahl lassen, in welcher Sprache er seine 
Code-Fragmente verfassen möchte. Mit Glade/GTK kann praktisch jede 
Programmiersprache verwendet werden. Und es läuft auf praktisch jeder 
Kiste. Und wem die Optik missfällt, der läd sich einfach ein anderes 
"theme" runter, da gibts hunderte für Gtk 2 und 3.

Also, hier das virtuelle uC Controlpanel, abgekürzt VUC. Aktuell ist 
das mehr ne Demo, die zeigen soll, wie sowas mal aussehen könnte. Die 
GUI wurde schon mit https://glade.gnome.org/ gebaut und kann damit auch 
verändert werden. Wenn andere Bedienelemente dazukommen, müssen noch ein 
paar Zeilen perl von Hand zugefügt werden. Später wird das dann 
automatisch generiert, und nicht nur als perl.

Das Demoprojekt ist ein Audio-Messlabor (hust), bestehend aus 
Funktionsgenerator und Oszi auf einem Arduino Pro-Mini vom Chinamann. 
Müsste sich aber auf jeden Atmega mit 2 timern, uart, adc und 2K Flash 
portieren lassen.

Zum ausprobieren brauchts (die AVR-Programmierumgebung setz ich mal als 
vorhanden voraus) gtk, perl, perl-gtk, Device::SerialPort und glade. Bei 
debian/ubuntu reicht vermutlich ein

*apt-get install avr-libc avrdude libgtk2-perl libdevice-serialport-perl 
glade*

Windowser gucken mal hier: http://gtk2-perl.sourceforge.net/win32/

Die Screenshots zeigen:
1. Generator-Ausgang mit Oszi-Eingang verbunden -> langweiliges Rechteck
2.-3. Oszi-Eingang offen

: Verschoben durch User
von chris_ (Gast)


Lesenswert?

>Beitrag "Projekt: Virtuelle Instrumente an serielle Schnittstelle",
Konkurenz belebt das Geschäft ;-)
Vielleicht wäre Java oder QT auch gut geeignet, weil es überall läuft 
und man einfach zu installierende Programme damit machen kann.
Das es einfach zu installieren ist, scheint mir sehr wichtig.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Installer nötig? Perl, welche Version? Weiß die Website selber nicht so 
genau. Hm ja. Habe Perl auf dem Rechner. Was ist denn der Unterschied zu 
GTK2 ?

Also ein Programm hat einfach durch Aufruf zu funzen. Das ist meine 
Meinung!


Wenn du was alternatives machen möchtest, dann wäre eine 
Webbrowser-Version sinnvoll. Sodaß Frauchen nicht an des Herren PC 
tigern muß, nur um die Warmwasserpumpe im Keller einzuschalten. Das wäre 
was.

von Lutz M. (themroc)


Lesenswert?

chris_ schrieb:
>>Beitrag "Projekt: Virtuelle Instrumente an serielle Schnittstelle",
> Konkurenz belebt das Geschäft ;-)

So isses :)

> Vielleicht wäre Java oder QT auch gut geeignet, weil es überall läuft

Klar, das ginge auch. GTK läuft aber auch überall und lässt sich mit 
praktisch jeder Sprache verwenden, damit gibt es die freie Wahl.

> Das es einfach zu installieren ist, scheint mir sehr wichtig.

Wär schon nett, aber würd ich jetzt nicht ganz oben auf die 
Prioritätenliste setzen. Immerhin ist das Ding nicht für BWL-Studenten 
gedacht, sondern für Leute, die uCs programmieren. Bei denen setz ich 
schon ein Minimum an technischem Verständnis voraus...

von Lutz M. (themroc)


Lesenswert?

Abdul K. schrieb:
> Installer nötig? Perl, welche Version?

Dürfte unkritisch sein, ab 5.8 sollte jede gehen (ich hab hier ne uralte 
5.10)... im Zweifelsfall nimm die neueste 5.irgendwas. Aber ich mach 
nachher eh mal ne c-version von der demo, damit wird perl optional.

> Was ist denn der Unterschied zu GTK2 ?

Perl ist ne Scriptsprache, GTK eine GUI-Library.

> Also ein Programm hat einfach durch Aufruf zu funzen. Das ist meine
> Meinung!

Aber nicht bei ner 0.0.1-Version, da musste noch bissle warten...

> Wenn du was alternatives machen möchtest, dann wäre eine
> Webbrowser-Version sinnvoll. Sodaß Frauchen nicht an des Herren PC
> tigern muß, nur um die Warmwasserpumpe im Keller einzuschalten. Das wäre
> was.

Soll mit GTK 3.2 gehen: 
http://www.webupd8.org/2011/09/gtk-32-released-with-html5-allows.html 
Habs aber noch nicht ausprobiert, ich hab hier noch 2.20.

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Sodele, endlich mal wieder etwas Zeit gefunden... Das Hauptprogramm ist 
jetzt in C geschrieben und das ganze hat ein anständiges build-system 
welches sogar auf windows funzt. Die fertige .exe hab ich mal angehängt, 
damit braucht nicht jeder, ums mal schnell zu testen, diese 700 MB fette 
MinGW-Umgebung runterzuladen.

Ausprobieren mit windows:
vuc-0.0.2.tar.bz2 auspacken (geht z.B. mit winrar), die demo.exe in das 
Verzeichnis vuc-0.0.2 kopieren, aufrufen mit sowas wie

demo demo.glade com3 38400

. Mit Linux (und evtl. MacOS, nicht getestet):

vuc-0.0.2.tar.bz2 auspacken,

./configure && make
./demo demo.glade /dev/ttyUSB0 38400

Die Baudrate muss natürlich mit der in demo.h angegebenen übereinstimmen 
und der com-port ggf. angepasst werden.

Die Bildchen 1+2 zeigen einen Grund, warum ich so auf Gtk stehe: 
flexibilität fast zum Nulltarif. Bei Nr. 3 ist der Tongenerator aus, 
damit der ADC mal ungestört messen kann. Nr. 4 zeigt die 
Windows-version.

Richtig rund läuft es leider noch nicht, da gehen offenbar hin und 
wieder ein paar Bytes unterwegs verloren, obwohl ich schon auf 
lächerliche 38400 runtergegangen bin. Das äussert sich dann in eiin paar 
hundert Fehlermeldungen, die rasend schnell über die Konsole huschen. 
Keine Ahnung ob das an meinem billigen Händie-UART-Kabel liegt oder 
irgendeinem Murks in der Software (würde mich beides nicht wundern). 
Kann man natürlich einfach ignorieren, nach spätestens 1 Sekunde ist es 
ja wieder synchron. Aber morgen werd ich trotzdem mal gucken, was der 
Analyzer dazu sagt...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Lutz M. schrieb:
> vuc-0.0.2.tar.bz2 auspacken (geht z.B. mit winrar)

Warum nicht zip welches von Windows nativ unterstützt wird?

von Lutz M. (themroc)


Lesenswert?

Läubi .. schrieb:
> Lutz M. schrieb:
>> vuc-0.0.2.tar.bz2 auspacken (geht z.B. mit winrar)
>
> Warum nicht zip welches von Windows nativ unterstützt wird?

Weil das zip-Format nicht besonders effektiv ist:

vuc-0.0.2.zip          150 222
vuc-0.0.2.tar.bz2      134 738
vuc-0.0.2.tar.xz       120 496

Bei den paar Bytes wärs ja egal, aber das Ding wird noch erheblich 
grösser. Bald kommt ein gehacktes glade dazu, dann haben wir mindestens

glade-3.16.0.tar.xz         2.9M
glade-3-14-2-installer.exe  17M

pro release.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Danach möchte er dann libgtk-Dateien. Pack die bitte dazu.

von Ingo W. (Gast)


Lesenswert?

Lutz M. schrieb:
>> Warum nicht zip welches von Windows nativ unterstützt wird?
>
> Weil das zip-Format nicht besonders effektiv ist:
>
> vuc-0.0.2.zip          150 222
> vuc-0.0.2.tar.bz2      134 738
> vuc-0.0.2.tar.xz       120 496
>

7zip packt die .tar.bz2 auch problemlos aus.

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Abdul K. schrieb:
> Danach möchte er dann libgtk-Dateien. Pack die bitte dazu.

Uuups, danke für den Hinweis, das hätte ich auch nochmal extra erwähnen 
können, das da ohne Gtk natürlich nix läuft... Bitteschön, der 
Downloadlink:

http://sourceforge.net/projects/gtk-win/files/GTK%2B%20Runtime%20Environment/GTK%2B%202.24/gtk2-runtime-2.24.10-2012-10-10-ash.exe/download

Aber da jetzt jedesmal diese fast 8 MB dazuzupacken seh ich nicht ein, 
einmal muss reichen.

von Lutz M. (themroc)


Lesenswert?

Lutz M. schrieb:

> Richtig rund läuft es leider noch nicht, da gehen offenbar hin und
> wieder ein paar Bytes unterwegs verloren, obwohl ich schon auf
> lächerliche 38400 runtergegangen bin.

Der Saleae hat gesprochen: Der uC sendet exakt das was er soll. Trotzdem 
fehlten am anderen Ende hin&wieder mal ca. 64 Byte... Auch ein anderer 
USB-Seriell-Adapter (auch PL2303) zeigte den gleichen Fehler. Zum Glück 
hab ich hier noch ein älteres Board mit ner echten Sellerie-Schnitte in 
meiner Kiste und mit einem schnell zusammengelöteten, wackeligen 
2-Transistor-Pegelwandler läuft das ganze jetzt problemlos mit 115 
kbaud.

Wie es aussieht, haben auch schon andere Leute Probleme mit Linux und 
dem PL2303 gehabt:

http://ubuntuforums.org/showthread.php?t=1735418

Genau so einen uralt-Kernel, der auch bei Ubuntu 10.10 verwendet wurde, 
hab ich hier immer noch im Einsatz :-/

Die Sache hat natürlich auch ihre gute Seiten: Ich muss keinen 
schlechte-Leitung-Simulator basteln um die Fehlererkennung und Korrektur 
zu testen, die als nächstes eingebaut wird. Und anschliessend werd ich 
endlich mal updaten.

von chris_ (Gast)


Lesenswert?

>Der Saleae hat gesprochen: Der uC sendet exakt das was er soll. Trotzdem
>fehlten am anderen Ende hin&wieder mal ca. 64 Byte

Probleme mit der seriellen Schnittstelle kenne ich schon seit 
jahrzehnten. Anfänglich waren die im PC eingebauten Treiber nicht zu 
gebrauchen und heutzutage werden immer noch Zeichen verloren.
In meinen Projekten hat sich dieses Verfahren als absolut zuverlässig 
erwiesen:
http://de.wikipedia.org/wiki/Ping-Pong-Verfahren

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Ab diesem release kann das Protokoll Übertragungsfehler erkennen und 
korrigieren. Das lässt sich aber per Präprozessordefinition auch 
ausknipsen - der Primitivmodus, bei dem vorrausgesetzt wird das die 
Leitung perfekt ist, geht damit auch weiterhin. Sinnvoll wird das später 
mal, wenn die Übertragung z.B. über TCP läuft. Das ist ja schon 
ausreichend zuverlässig, da brauchts dann keinen zusätzlichen Overhead 
mehr.

Auf dem Bildchen sind die diversen Zähler zu sehen, an denen sich die 
Leitungsqualität ablesen lässt: Der erste zählt die "ich lebe 
noch"-Nachrichten, die der uC alle paar Millisekunden absondert, dann 
kommen 3 Zähler für verschiedene erkannte Übertragungsfehler und der 5. 
zeigt an, das trotz Prüfsumme noch offensichtlich schrottige Daten 
durchkommen. Wenn der sich jemals bewegt, sollte mit der aktuellen 
Konfiguration kein Atomkraftwerk gesteuert werden.

Als der Screenshot geschossen wurde, lief wieder das billige 
PL2303-Händiekabel, allerdings mit 230400 Baud. Ziemlich wackelige 
Angelegenheit, wie man sieht.

Die demo.exe hab ich diesmal auf Linux crosskompiliert. Trotz -g und -O0 
ist die deutlich kleiner als die auf Windoze erzeugte v0.0.2 ...

Auch diese Version braucht natürlich das GTK-runtime: 
Beitrag "Re: Virtual uC Controlpanel"

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Hier mal ein paar Screenshots mit verschiedenen Themes - das Dings soll 
ja nicht nur gut funktionieren, sondern ebenso aussehen... Das 
Theme-Paket für Windows gibts hier:

http://sourceforge.net/projects/gtk-win/files/GTK%2B%20Themes%20Package/2009-09-07/gtk2-themes-2009-09-07-ash.exe/download

Allerdings ist das noch für gtk 2.22. Die meisten Themes gehen zwar auch 
mit dem weiter oben verlinkten 2.24, aber da sind womöglich irgendwelche 
Kleinigkeiten falsch dargestellt und das will man den Künstlern ja nicht 
antun... Also, am besten auch dieses

http://sourceforge.net/projects/gtk-win/files/GTK%2B%20Runtime%20Environment/GTK%2B%202.22/gtk2-runtime-2.22.0-2010-10-21-ash.exe/download

gtk dazutun. Bei Linux dürfte schon genug Zeugs dabei sein, ansonsten 
mit dem jeweiligen Paketmanager die gtk2 engines und themes 
installieren.

Ansonsten gibts hier

http://gnome-look.org/content/search.php?xsortmode=new&search=1&type=100&user=&text=mozilla&sort=0&scorefilter=0&license=99&page=1

noch gaaanz viele andere Themes.

von Uninteressierter (Gast)


Lesenswert?

Ausser rumgespiele mit deinen Themes ist hier ja nichts passiert. Was 
das "Dings" soll weiss bis heute niemand so recht. Hauptsache Themes in 
Mengen.

von spess53 (Gast)


Lesenswert?

Hi

Für das was  Albert M. (Firma: Bastler aus Mönchengladbach) (albertm)

in Wochen geschafft hat wirst du Jahre brauchen. Ist halt nicht jeder 
zum Programmieren geboren.

MfG Spess

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Diese Version hat neben RS-232 auch den Transportmechanismus UDP drauf, 
damit können dann auch etwas weiter entfernte Gerätschaften gesteuert 
werden. Allerdings nur PC-seitig, ich hab leider keinen ENC28J60 oder so 
zum testen da. Dafür gibts nen Proxy als Gratisbeilage dazu, damit kann 
dann z.B. so ein 
http://www.aliexpress.com/item/Lactophrys-a5-wireless-router-portable-mini-wireless-router-3g-wifi-wired-wifi/838345397.html 
süsser, kleiner Linux-Rechner die Ethernet-Schnittstelle machen.

Eine Windows-exe gibts heute mal nicht, ich hab grade keine Lust diese 
lahmarschige VM anzuwerfen. Und der obligatorische Screenshot ist 
diesmal auch nicht so spannend, der zeigt nur den Proxy in Aktion.

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Netzwerk-code nach windows portiert, etwas aufgeräumt und das ganze 
Grafik- und Protokollgeraffel in ne Library gestopft. Jetzt ist das zu 
generierende Hauptprogramm wieder angenehm klein und trivial und lässt 
sich in jeder Sprache machen, mit der man shared libraries einbinden 
kann. Also ausser awk, shell und .bat dürfte wohl so ziemlich alles 
gehen. Ok, GTK-Bindings sollten auch vorhanden sein, die neu bauen zu 
müssen wär doch etwas viel... Die Mainstream-Sprachen sind diesbezüglich 
abgedeckt (http://www.gtk.org/language-bindings.php), sogar für php gabs 
mal was, das scheint aber eingeschlafen zu sein. Wer die Menschheit 
vorwärts bringen will, kann das ja mal reaktiveren ;)

Damit sind die nötigen Bausteine beisammen, nächstes Mal gibts dann die 
1. "richtige" Version mit nem schicken GUI.

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Langsam nimmt die Sache Gestalt an, jetzt kann das Demo-Projektchen mit 
etwas Mausgeschubse und wenigen Zeilen C-Code generiert werden. Einfache 
Projekte, die nur 1:1-Verbindungen zwischen Widget und Port-Adresse auf 
dem uC brauchen, kommen auch ohne Programmierung aus (jedenfalls auf der 
PC-Seite), da genügt der automatisch eingefügte default-code. Das ganze 
hat noch ein paar scharfe Kanten, die eigentlich rund gefeilt gehören... 
z.B. sollte der "Launch"-Knopf den erzeugten Code durch den Compiler 
jagen und das Ergebnis starten, und nicht nur "Launch" ausgeben...

Die Files:

vuc-0.0.6.tar.xz  Die VUC-Library. Sollte als 1. installiert werden 
(kleines README ist drin).

vuc-gl373-0.0.6.tar.xz  Modifiziertes Glade 3.7.3 für Leute wie mich, 
die noch ein uraltes GTK-2.20 auf der Kiste haben und zu faul zum 
updaten sind. Die 3.7.3 ist leider keine "stabile"-version, und das 
merkt man auch... Künftig wirds wohl die 3.6.7 geben, wenn überhaupt.

vuc-gl384-0.0.6.tar.xz  Modifiziertes Glade 3.8.4 für GTK 2.24.

Wer ein richtiges Glade hat (oder haben will), sollte vorsichtshalber 
nicht nach /usr/local installieren - da muss ich erstmal genau 
hingucken, obs da wirklich keine Konflikte mehr gibt. Also, sowas wie
1
./configure --disable-gtk-doc --disable-gnome --disable-python --disable-scrollkeeper --prefix /opt/vuc-0.0.6
ist vermutlich empfehlenswert.

Dokumentation gibts leider noch keine, da muss halt probiert werden. Das 
das ein grosses Manko ist, seh ich auch so, das wird sich auch demnächst 
bessern. Als Ausgangspunkt liegt die Datei "demo.glade" bei, daraus 
erzeugt die "vuc-glXXX"-GUI dann ein "demo"-verzeichnis mit Makefile und 
c-code drin.

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

vuc-gl384 läuft jetzt auch mit älteren GTKs (ab 2.20, noch frühere hab 
ich nicht getestet), damit ist die 373 obsolet.

Ausserdem geht der "Launch"-Knopf jetzt wie er soll. Die Ausgaben über 
stdout/stderr des erzeugten Programms landen auf stdout/stderr der GUI, 
ist also empfehlenswert die von ner Konsole aus zu starten. Irgendwann 
mach ich da ein extra Fenster für auf, aber erstmal gibts wichtigeres zu 
tun. Support für andere Sprachen, z.B. Nächstes Mal gibts perl.

von Bernd N (Gast)


Lesenswert?

Hallo Lutz,

außer das sich ein graues Fenster öffnet und binnen 1 Sekunde wieder 
schließt passiert bei mir garnichts (WIN-7). Irgendeine Idee ?

von Lutz M. (themroc)


Lesenswert?

Bernd N schrieb:
> Hallo Lutz,

Moin Bernd!

> außer das sich ein graues Fenster öffnet und binnen 1 Sekunde wieder
> schließt passiert bei mir garnichts (WIN-7). Irgendeine Idee ?

Welchen Compiler hast Du verwendet? Und starte vuc-gl384 doch mal über 
die Kommandozeile, irgendein Hinweis müsste da eigentlich zu sehen sein.

von Bernd N (Gast)


Lesenswert?

Moin zurück,

also ich denke es liegt am COM Port handling. Der Comport liegt auf 
COM10, ändere ich diesen dann startet das Programm mit "need input" also 
auch hier kein Erfolg.

von Lutz M. (themroc)


Lesenswert?

Bernd N schrieb:
> Moin zurück,
>
> also ich denke es liegt am COM Port handling. Der Comport liegt auf
> COM10, ändere ich diesen dann startet das Programm mit "need input" also
> auch hier kein Erfolg.

"need input" bedeutet, das die XML-GUI-Definition aus irgendeinem Grund 
nicht verarbeitet werden konnte. Früher wurde das XML aus ner externen 
Datei gelesen, da sollte diese Meldung sowas wie "Datei nicht gefunden" 
heissen... Weil das XML aber jetzt im sourcecode steht, kann das 
eigentlich nicht mehr vorkommen - ausser, es ist mist. Der COM-Port 
wurde zu dem Zeitpunkt schon erfolgreich geöffnet, andernfalls hätte es 
eine entsprechde (und etwas eindeutigere) Meldung geben müssen. Mit den 
Parametern
1
-V 1 com10
 wird er etwas geschwätziger und zeigt an, wenn der Port aufgemacht 
wird. Und mit
1
--dump-xml
 wird die enthaltene GUI-Definition ausgegeben. Kannst Du mir die mal 
zukommen lassen?

von Bernd N (Gast)


Lesenswert?

option parsing failed: unbekannte option, bei beiden Parametern.

von Lutz M. (themroc)


Lesenswert?

Das sind Parameter für das erzeugte Programm, nicht für den Editor (= 
vuc-gl384). Auf der gleichen Ebene wie Deine .glade-Datei müsste nach 
"create" ein gleichnamiges Verzeichnis mit Makefile und c-code erzeugt 
werden. Nach "launch" sollte da auch ne .exe rumliegen, und die 
braucht die erwähnten Parameter. Am schnellsten und einfachsten per 
"Eingabeaufforderung", geht aber auch über "prefs" ganz unten.

von Bernd N (Gast)


Lesenswert?

ok, vielleicht machst du mal ne Anleitung wie man das Ganze unter WIN-7 
korrekt installiert, sorry, mir ist das so nicht ersichtlich.

von Lutz M. (themroc)


Lesenswert?

Ja, sowas kommt noch... Aber wenn Du schon mal "need input" gesehen 
hast, kann das eigentlich nur bedeuten, dass Du die wesentlichen Hürden 
auch ohne richtige Anleitung bereits genommen hast. Diese Meldung wird 
nämlich nur vom erzeugten und kompilierten Endprodukt angezeigt. Der 
Rest sollte jetzt ein Kinderspiel sein. Schick mir mal bitte die 
erzeugte .c-Datei oder lad sie irgendwo hoch.

von Bernd N (Gast)


Lesenswert?

>> Ja, sowas kommt noch...

Besser gleich :-), ich habe die von dir oben genannte .exe verwendet 
also nichts selber kompiliert. Denke das ist auch das Problem das ich 
hier das Ganze auf meinem Rechner kompilieren muß bevor was geht und 
genau das solltest du vielleicht erklären. Bisher bin ich davon 
ausgegangen das dies nicht notwendig ist.

von Lutz M. (themroc)


Lesenswert?

Bernd N schrieb:
>>> Ja, sowas kommt noch...
>
> Besser gleich :-), ich habe die von dir oben genannte .exe verwendet
> also nichts selber kompiliert.

Uups... etwa diese 
Beitrag "vuc-0.0.3" 
uralt Version 0.0.3? Die brauchte noch ne externe .glade-Datei:
1
demo.exe -g demo.glade com10
 sollte funzen.

> Denke das ist auch das Problem das ich
> hier das Ganze auf meinem Rechner kompilieren muß bevor was geht und
> genau das solltest du vielleicht erklären. Bisher bin ich davon
> ausgegangen das dies nicht notwendig ist.

Naja, ich hab halt nur Linux, XP läuft in ner schnarchlangsamen VM. Mit 
dem crosscompiler sind die exen zwar relativ schnell gemacht, aber zum 
testen brauch ich ja trotzdem jedes Mal das echte Windows. Jedenfalls so 
lange, bis sich das Ganze etwas gesetzt hat. Wenn die Struktur stabiler 
ist, kann ich die exen auch ohne Test raushauen, aber momentan hätte das 
wenig Sinn. Du musst leider paar Tage warten oder selbst kompilieren. 
Letzteres geht wohl am einfachsten mit cygwin, das probiere ich gerade 
nebenbei (wollte ich eh schon längst mal machen) und schreib dann ne 
kleine Anleitung.

von Bernd N (Gast)


Lesenswert?

>> demo.exe -g demo.glade com10

need input, da änderst sich nichts dran.

Wir drehen uns im Kreis. Ich warte mal auf deine Beschreibung und übe 
mich in Geduld.

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Bernd N schrieb:
>>> demo.exe -g demo.glade com10
>
> need input, da änderst sich nichts dran.

Die demo.glade-Datei (hab sie nochmal angehängt) muss im aktuellen 
Verzeichnis liegen (oder der Aufruf
1
demo.exe -g c:\irgendwo\demo.glade com10
 o.s.ä. lauten).

von Bernd N (Gast)


Lesenswert?

OK, einen Schritt weiter. Danke für den Hinweis. COM Ports > 8 gehen per 
se nicht, ich werde jetzt mal testen.

Danke,

Bernd

von Bernd N (Gast)


Lesenswert?

Das mit der Cygwin Umgebung werde ich ausprobieren. Was ich dir schon 
berichten kann ist das die CPU Auslastung sofort auf 50% ansteigt. Also 
da wirst du in einer echten Windows Umgebung selber mal ausführlich 
testen müssen.

von Lutz M. (themroc)


Lesenswert?

Bernd N schrieb:
> COM Ports > 8 gehen per
> se nicht, ich werde jetzt mal testen.

Also, 9 sollte noch gehen, aber dann scheints kompliziert zu werden: 
http://support.microsoft.com/kb/115831
:D

> Danke,

Gerne!

von Lutz M. (themroc)


Lesenswert?

Bernd N schrieb:
> Das mit der Cygwin Umgebung werde ich ausprobieren. Was ich dir schon
> berichten kann ist das die CPU Auslastung sofort auf 50% ansteigt.

Autsch! Als ich das vor paar Jahren mal auf nem echten XP laufen hatte, 
wars eigentlich recht fix und hat nicht weiter gestört... Aber soweit 
ich weiss startet das Ding keine Hintergrundprozesse, also wenn kein 
Cygwin-Fenster offen ist, saugts auch keine CPU-Leistung.

Und wie ich gerade festgestellt hab, lässt sich die 0.0.7 auch nicht 
unter Cygwin kompilieren - massenhaft "undefined reference" :(
Na, morgen sehnwa weiter...

von Lutz M. (themroc)


Angehängte Dateien:

Lesenswert?

Na endlich: die 0.0.8 ist fertig. Neben einigen Detailverbesserungen 
lässt sich die jetzt auch auf Windows kompilieren. Das Beweisfoto zeigt
- das sogar eine hervorragende Library wie GTK durch ein potthässliches 
default-theme nachhaltig verhunzt werden kann
- einen merkwürdigen Bug, der nur im Editor unter Windoze auftritt. Im 
generierten Programm sind die Fader dann aber wieder so wie sie sein 
sollen: hochkant.
- das auch diese Version auf einem englischsprachigen OS irgendwie 
besser aussieht

Edit:
Einen Wiki-Artikel mit Installationsanleitung gibts jetzt auch:
http://www.mikrocontroller.net/articles/Virtual_uC_Controlpanel

: Bearbeitet durch User
von Moritz A. (moritz_a)


Lesenswert?

Gibt es irgendwo eine brauchbare Dokumentation des Protokolls oder eine 
einfach verwendbare Library (abgekapselt) für den avr-Part?

Die 730 Zeilen in vuc-0.0.8/demo-avr/main.c machten mir jetzt nicht 
gerade den alleraufgeräumtesten Eindruck, um das nachzuvollziehen.

Grüße
Moritz

von Lutz M. (themroc)


Lesenswert?

Moritz A. schrieb:
> Gibt es irgendwo eine brauchbare Dokumentation des Protokolls oder
> eine
> einfach verwendbare Library (abgekapselt) für den avr-Part?
>
> Die 730 Zeilen in vuc-0.0.8/demo-avr/main.c machten mir jetzt nicht
> gerade den alleraufgeräumtesten Eindruck, um das nachzuvollziehen.

Jepp, da müsste mal ausgemistet werden, da ist noch einiges an 
überflüssigem Gewurstel und Debug-Code drin. Erste Hilfe ist aber nicht 
so schwer: alles, was mit "vuc_" anfängt, gehört in ein include-file. Ne 
echte, separat zu kompilierende Lib brauchts wohl eher nicht, das wäre 
overkill und ich seh da bei dem bisschen Code keinen Vorteil.

Eine anständge Docu gibts leider noch nicht, nur diesen 
http://www.mikrocontroller.net/articles/Virtual_uC_Controlpanel 
wiki-Artikel, die kommentierten Konstanten in src/vuc_proto.h und 
Decodierroutinen in src/vuc_input.h (werden vom avr- und host-part 
#include t) und ein angefangenes README fürs nächste Release:

o/______________________________________
o\

Instead of a manual
===================

The VUC protocol
----------------
provides a means to send arbitrary data to a "port"-address on the other
end. The meaning of each port and the (fixed) number of bytes it needs
are determined by the user (you). Lets take the "demo"-project, a little 
audio generator and scope done with a low-cost uC. It receives on these 
Port-adresses:

Port 0: Generator frequency and pulsewidth.
Because the uC is constrained in terms of memory and performance, the
host PC should do as much work as possible. Therefore, it computes the
data to write to the PWM-Registers, so the uC only needs to copy a few
bytes. In the provided example-code (written for ATmega328) that is 16
bits for ICR1 plus 16 bits for OCR1. So, in order to change frequency
and/or pulsewidth, the host has to send 4 bytes to port 0.

Port 1: Generator on/off.
Just one byte (0=off, 1=on) is needed.

Port 2: Scope timebase.
Again, the little uC gets its data ready to write to the register. This
time, its one byte for OCR0, selecting an ADC-trigger-frequency between
250 and 50.000 Hz.

The other direction (uC to host) has only 1 port:

Port 0: Scope sample data.
250 bytes output from the ADC.


The protocol in its simplest form starts with a command byte. Bits 7,6
of it give the command, bits 5..0 are parameter #1. Commands are

00pp pppp  META
01pp pppp  PUT
10pp pppp  GET

In the case of a "PUT"-Command, the 6 parameter-bits hold the Port-
address. Allowed Range is 0..59, 60..63 is reserved for future
extensions (like "60=one byte for address-range 60..315 will follow").
After that, the predefined number of bytes are transmitted and "PUT"
is finished.

"GET" also needs the port-address, but of course no data bytes, as this
is a reqeust for data. So, the other end has to send something, usually
using a "PUT".

The "META"-command needs no port-address, here the parameter-bits select
a subcommand. One example of a subcommand is "META_HELLO" (0x21), which
should be the first thing the uC sends after reset. After the cmd-byte
comes one byte giving the protocol-version the uC can handle. Currently,
only 0x01 (meaning "version 0.1") is allowed. The complete list of
"META"-subcommands can be found in src/vuc_proto.h.

Now, this simple form should only be used if your transport is error-
free, like when using tcp or usb, both of which should already detect
and fix transmission errors. Also, a 300 Baud, 1 meter double shielded
RS232-cable could be considered "error-free". But if you don't have such
ideal conditions, the VUC protocol has some extensions:

Packets
-------
are enabled by setting the "VUC_PACKET" compiler switch. Each packet
starts with a "META_PKT" byte, followed by one byte giving the payload
length. When the payload is received, the other end should issue a
"META_PKT_OK" handshake byte. Now, this in itself is not terribly
useful, but the packet-mode is required for

Checksums
---------
or rather "check-values", as you can override the default formula
"chk= chk+d". The check-value is appended after the payload and in case
of a wrong one, the other end sends a "META_PKT_BAD" handshake. This
option is activated by setting "VUC_PKT_CHK".

Sequence numbers
----------------
make sure that packets lost on the way are detected. If a received
packet-sequence-number is not equal to the last number plus 1, a
"META_PKT_BAD" is sent back. Activate this with "VUC_PKT_SEQ".

Finally, there's the possibility of lost handshakes. When there's too
much time without receiving an expected handshake, a "META_PKT_WTF" is
sent, which causes the other end to repeat the last one.

o/______________________________________
o\

Beste Grüsse!

von X. H. (shadow0815)


Angehängte Dateien:

Lesenswert?

Ich hab mal versucht vuc-0.0.7 
(Beitrag "vuc-0.0.7") unter Manjaro 
(also quasie Arch) zu compilieren. Dass geht aber schief, vermutlich 
weil ./configure gtk version 3 wählt, obwohl gtk2 auch im System ist. 
Kenne mich mit autotools nicht so aus, was man tun kann, dass 
./configure gtk2 nimmt...

Nachtrag:
Auch version vuc-0.0.8 
(Beitrag "vuc-0.0.8 mit Anleitung") verursacht den 
Fehler


Im Anhang ein Log was schief geht.

---------------------------------------------

Im Raspberry Pi geht das Compilieren, aber das Installieren schlägt 
fehl:
1
pi@raspberrypi:/tmp/vuc_virutal_uc_controlpanel/vuc-0.0.7/ > sudo checkinstall make install
2
3
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
4
  Diese Software wurde unter der GNU GPL veröffentlicht
5
6
7
8
*****************************************
9
**** Debian package creation selected ***
10
*****************************************
11
12
Das Paket wird entsprechend dieser Vorgaben erstellt:
13
14
0 -  Maintainer: [ root@raspberrypi ]
15
1 -  Summary: [ Virtual uC Controlpanel http://www.mikrocontroller.net/topic/312841 ]
16
2 -  Name:    [ vuc ]
17
3 -  Version: [ 0.0.7 ]
18
4 -  Release: [ 1 ]
19
5 -  License: [ GPL ]
20
6 -  Group:   [ checkinstall ]
21
7 -  Architecture: [ armhf ]
22
8 -  Source location: [ vuc-0.0.7 ]
23
9 -  Alternate source location: [  ]
24
10 - Requires: [  ]
25
11 - Provides: [ vuc ]
26
12 - Conflicts: [  ]
27
13 - Replaces: [  ]
28
29
Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: 
30
31
Installing with make install...
32
33
====================== Installations-Ergebnisse ==========================
34
Making install in src
35
make[1]: Entering directory `/tmp/vuc_virutal_uc_controlpanel/vuc-0.0.7/src'
36
make[2]: Entering directory `/tmp/vuc_virutal_uc_controlpanel/vuc-0.0.7/src'
37
test -z "/opt/vuc/lib" || /bin/mkdir -p "/opt/vuc/lib"
38
/bin/mkdir: kann Verzeichnis /opt/vuc nicht anlegen: Datei oder Verzeichnis nicht gefunden
39
make[2]: *** [install-libLTLIBRARIES] Fehler 1
40
make[2]: Leaving directory `/tmp/vuc_virutal_uc_controlpanel/vuc-0.0.7/src'
41
make[1]: *** [install-am] Fehler 2
42
make[1]: Leaving directory `/tmp/vuc_virutal_uc_controlpanel/vuc-0.0.7/src'
43
make: *** [install-recursive] Fehler 1
44
45
**** Installation fehlgeschlagen. Breche Paket-Erzeugung ab.
46
47
Räume auf...OK
48
49
Auf Wiedersehen!
50
51
pi@raspberrypi:/tmp/vuc_virutal_uc_controlpanel/vuc-0.0.7/ >

: Bearbeitet durch User
von Lutz M. (themroc)


Lesenswert?

X. H. schrieb:
> Ich hab mal versucht vuc-0.0.7
> (Beitrag "vuc-0.0.7") unter Manjaro
> (also quasie Arch) zu compilieren. Dass geht aber schief, vermutlich
> weil ./configure gtk version 3 wählt, obwohl gtk2 auch im System ist.
> Kenne mich mit autotools nicht so aus, was man tun kann, dass
> ./configure gtk2 nimmt...

Wenn gtk3 vorhanden ist, wird es automatisch ausgewählt. Ne 
Kommandozeilenoption dafür hab ich noch nicht gebastelt, da müsstest Du 
wohl in configure.ac paar Zeilen löschen. Der "gtk+"-Block (ab Zeile 
170) sollte dann so aussehen:
1
dnl ================================================================
2
dnl Check for gtk+
3
dnl ================================================================
4
PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.0 gthread-2.0])
5
show_gtk_ver=$(pkg-config --modversion gtk+-2.0)
6
AC_SUBST(GTK_LIBS)
7
AC_SUBST(GTK_CFLAGS)

Dann einmal autoconf aufrufen und danach normal ./configure. Es sollte 
allerdings auch mit gtk3 funzen..... :(

> Im Raspberry Pi geht das Compilieren, aber das Installieren schlägt
> fehl:
>
> [...]
>
> test -z "/opt/vuc/lib" || /bin/mkdir -p "/opt/vuc/lib"
> /bin/mkdir: kann Verzeichnis „/opt/vuc“ nicht anlegen: Datei oder
> Verzeichnis nicht gefunden
> make[2]: *** [install-libLTLIBRARIES] Fehler 1

Da gibt es das /opt-Verzeichnis wohl nicht und Du hast keine 
Schreibrechte in /. Also entweder anlegen: als root sowas wie
1
mkdir -m 775 /opt
2
chgrp pi /opt

eingeben oder (falls es doch schon da ist) Deinem user-account 
schreibrechte geben oder beim configure ein anderes Verzeichnis angeben:
1
./configure --prefix=$HOME

z.B. müsste auf jeden Fall gehen. Aber wenn Du ein .deb bauen möchtest, 
isses wohl schöner bei /opt zu bleiben oder das Ding ins /usr zu 
installieren.

Bischen seltsam ist das allerdings schon, checkinstall läuft doch als 
root? Dann sollte ein Berechtigungsproblem eigentlich ausgeschlossen 
sein.

HTH

von SetupMan (Gast)


Lesenswert?

Sich serielle Daten vom µC schön visualisieren zu lassen hört sich ja 
erstmal super an, aber mit einem "minimum an technischem Verständnis" 
wie du schreibst hat das echt nix mehr zu tun ;)

---->  Neue Umgebungsvariable PKG_CONFIG_PATH erzeugen und auf 
C:\vuc\lib\pkgconfig setzen
Ordner C:\vuc\src und C:\vuc\gtk2 anlegen
Runterladen und installieren: http://www.7-zip.org/
Hier http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/ ein schönes GTK 
runterladen. Wer verschärften Wert auf Optik legt, sollte vlt. besser 
erstmal die 2.22 nehmen, ansonsten halt die neueste 2.24. Gefragt ist 
jeweils das gtk+-bundle_XXXX-YYYY_win32.zip. Auspacken in den Ordner 
C:\vuc\gtk2.
vuc-x.y.z.tar.xz und vuc-gl384-x.y.z.tar.xz runterladen und in 
C:\vuc\src speichern (x.y.z ist aktuell 0.0.8 und hier zu finden).
Doppelclick auf C:\MinGW\msys\1.0\msys.bat


Wirklich?!??


Das ist einfach nur extrem umständlich und nervig... Gäbe es eine 
setup.exe würde das ganze Projekt sicherlich deutlich mehr Bastler 
erreichen.

Versteh mich nicht falsch, aber im Grunde ist es schade um die ganze 
Arbeit die du da rein steckst, wenn am Ende 99% der potenziellen Nutzer 
abspringen, einfach weil der Installationsweg im Jahre 2017 nicht mehr 
zeitgemäß ist.

Respekt für deine Arbeit, aber ich bin hier raus. Gibt Software mit dem 
gleichen Funktionsumfang, die eine "usability" besitzen ^^

von Peter (Gast)


Lesenswert?

Mal eine Frage dazu:
Gibt es sowas auch in JAVA?

Ich brauche so eine Art GUI für ein Projekt und wollte nicht unbedingt 
was eigenes schreiben.
Das ist zwar kein Hexenwerk aber die paar Stunden könnte ich was 
besseres machen.


Dieses Projekt ist unbrauchbar da zu umständlich um es nutzen zu können.

VG, Peter

von Markus (Gast)


Lesenswert?

>Ich brauche so eine Art GUI für ein Projekt und wollte nicht unbedingt
>was eigenes schreiben.
>Das ist zwar kein Hexenwerk aber die paar Stunden könnte ich was
>besseres machen.

Da bist Du nicht der erste hier im Forum, der dieses Problem 
unterschätzt.

von Peter (Gast)


Lesenswert?

Na so schwer ist das nun auch nicht.

Ich brauche halt keine frei konfigurierbare GUI, das wäre inder Tat um 
einiges aufwendiger.

Das ganze Serial Zeug habe ich in anderen Projekten fertig.
Die Daten zerlegen ist nicht besonders aufwendig.
Entweder sendet man die Binär (Start,0x01,...) oder als Text (<K1=1000> 
CR LF).
Ein paar Knöpfe und Werte anzeigen macht man dann auch in weniger als 
30min.

Das einzige was richtig Zeit dauert ist eine schöne Grafik anzeige mit 
der ganzen logik dahinter.
Und das würde ich mir gerne sparen.


VG, Peter

Beitrag #5070403 wurde von einem Moderator gelöscht.
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.