... 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
>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...
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.
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"
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
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.
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.
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
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:> 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
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:
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:
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