LabVIEWForum.de - Über TCP mit Mikrocontroller kommunizieren

LabVIEWForum.de

Normale Version: Über TCP mit Mikrocontroller kommunizieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe nun ein neues Modul für einen Roboter, welches mit einem Mikrocontroller der Atmel-Reihe ausgestattet ist.
Dieser sendet über ein WLAN (IP: 192.168.1.171, Port: 2000) stetig Daten der Form
Code:
BAT:0924 | DL:000 | DR:000 | PL:000 | PR:000 | VL:000 | VR:000 | MCL:001 | MCR:000 | LSL:0936 | LSR:0936 | AD0:0911 | AD1:0892 | DSTL:00001 | DSTR:00001 |||| NUM:00014
BAT:0924 | DL:000 | DR:000 | PL:000 | PR:000 | VL:000 | VR:000 | MCL:000 | MCR:000 | LSL:0936 | LSR:0936 | AD0:0934 | AD1:0926 | DSTL:00001 | DSTR:00001 |||| NUM:00015
BAT:0924 | DL:000 | DR:000 | PL:000 | PR:000 | VL:000 | VR:000 | MCL:001 | MCR:000 | LSL:0936 | LSR:0937 | AD0:0927 | AD1:0928 |
usw...
Die Daten beginnen mit "BAT:xxx" und enden mit "|||| NUM:xxxxx". Ersteres ist der Batteriezustand (10bit) und Letzteres ist die Nummer des Blocks.
Befehle erwartet der Roboter in Stringform (z.B. cmd für Commands, w-a-s-d für Richtungen, Zahlen für Geschwindigkeitswerte)

Ich bekomme es aber leider absolut nicht hin!
Senden geht gar nicht, da kommt irgendetwas undefinierbares an.
Das Empfangen funktioniert so lala mit dem VI im Anhang. Mal kommen sehr viele Daten, manchmal kommen sie nur alle halbe Sekunde.

Würde mich über Eure Hilfe echt freuen!

Grüße
Habe nun ein mehr oder weniger funktionstüchtiges Schreibeprogramm in das andere integriert.
Einzeln gingen beide Teile - Lesen und Schreiben - schon mal halbwegs vernünftig, das Schreiben deutlich schlechter.
Zusammen geht gar nix mehr!?!?!?
Bahn
(19.07.2012 14:40 )fabqu schrieb: [ -> ]Habe nun ein mehr oder weniger funktionstüchtiges Schreibeprogramm in das andere integriert.
Einzeln gingen beide Teile - Lesen und Schreiben - schon mal halbwegs vernünftig, das Schreiben deutlich schlechter.
Zusammen geht gar nix mehr!?!?!?
Bahn

Gehe ich recht in der Annahme, dass du parallel lesen und schreiben willst? Dann musst du das auch parallel programmieren. Aktuell wird die Lese- & Schreibefunktion nur ausgeführt, wenn der Button 'Absenden gedrückt wird. Schon mal ein bisschen gedebuggt?

Beste Grüße,
NWO
Danke Dir.
Das hatte ich schon geändert in Form von zwei While-Schleifen parallel.
Hilft leider auch nix!
Empfangen klappt aber schon mal, nur eben das Senden gar nicht mehr.
Hallo fabqu,

auch wenn's nichts mit dem Problem zu tun hat: was sollen die "warte auf nächste Millisekunde-Vielfache" in den Schleifen? Du hast so viele Timeouts in den beiden Schleifen, da sind die unnötig...

Zitat:nur eben das Senden gar nicht mehr.
Fehlermeldungen?

Probier das Ganze doch mal entweder mit einem zweiten PC aus oder lokal, indem du "localhost" als IP verwendest. Dann kannst du schon mal prüfen, ob dein VI generell funktioniert und der Fehler evtl. beim WLAN-Client zu suchen ist...
Hi!
Das mit dem localhost kannte ich bisher nicht, werde ich ausprobieren.
könnte mir vielleicht jemand das "TCP Communication.vi" aus den Beispielen für die 2009er Version (oder älter) hochladen?
Mir sind irgendwie die Beispiele abhanden gekommen. Und in diesem Vi sollte alles geregelt sein!

Danke
Hallo fabqu,

bei LV2011 gab es kein "TCP Communicator.vi"-Beispiel.
Ich habe dir aber mal das "TCP Communicator - Active.vi"-Beispiel angehangen...
Pony
Juhuuu!
Genau das isses.
Wird eingebaut, verwertet und angenommen Big Grin

Danke!
Ich hoffe, meine Probleme sind damit dahin Wink
Doch noch eine Frage:
die '4' ist ja "end of transmission". Ist das damit gemeint, wenn im Beispiel steht "Receive loop. Stop when a ^D is received." ?

Und wenn ja, dann kann es doch passieren, dass zufällig diese Daten so ankommen!?!?!
Hallo fabqu,

ja, "^D" entspricht der 0x04.

Zitat:Und wenn ja, dann kann es doch passieren, dass zufällig diese Daten so ankommen!?!?!
Das Beispiel arbeitet mit "normalen" Strings, die da versendet werden. Da hast du üblicherweise kein 0x04 mit drin. Aber das ist ja auch nur ein Beispiel, welches man anschaut, davon lernt und an seine Bedürfnisse anpasst...
Referenz-URLs