... 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
>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.
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.
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...
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.
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...
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?
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.
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.
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.
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.
>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
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"
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.
Ausser rumgespiele mit deinen Themes ist hier ja nichts passiert. Was das "Dings" soll weiss bis heute niemand so recht. Hauptsache Themes in Mengen.
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
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.
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.
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.
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.
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 ?
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.
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.
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?
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.
ok, vielleicht machst du mal ne Anleitung wie man das Ganze unter WIN-7 korrekt installiert, sorry, mir ist das so nicht ersichtlich.
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.
>> 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.
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.
>> 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.
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).
OK, einen Schritt weiter. Danke für den Hinweis. COM Ports > 8 gehen per se nicht, ich werde jetzt mal testen. Danke, Bernd
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.
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!
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...
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
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
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!
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
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
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 ^^
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
>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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.