Gut! DAs klingt auf jeden Fall interessant. Das Angebot nehme ich gern an und bitte um den Link; danke im Voraus.für Arduino zu PC habe ich eine Lösung .. VarName .. arg .. zusammen eine Übertragungseinheit .. Suchst du so etwas .. kann ich dir den Code verlinken ..
Wenn ich Werte an einen Controller sende, sollte der auch mitgeteilt bekommen wofür oder wovon diese Werte sind. Mein ÖDNV (öffentlicher Daten-Nahverkehr) bei archie und andern Projekten läuft z.B. über ne UART- oder I²C-Kommunikation und insbes. z.B. beim I²C-Bus ist die Kommunikation für die angeschlossenen Teilnehmer "öffentlich". Es gibt einzelne Kommandobytes mit denen kurze Telegramme identifiziert werden; Beispiel "A", "T", "P", "p" etc. Die zugehörigen, verschiedenen Kommandos haben unterschiedliche Längen, die dem ersten Byte natürlich fest zugeordnet sind. In diesen Längen stecken zugehörige Daten, die das jeweilige Kommando benötigt. Mit diesen Telegrammen kann Controller-Controller-Kommunikation oder PC-Controller-Kommunikation gefahren werden. Selbst WLAN-Fernsteuerung von archie ist so (simpel) möglich - ein RasPi mit autostart eines Terminalprogramms wird an den Hauptcontroller angeschlossen, der RasPi läuft mit RDP und erhält von irgendwo auf der Welt übers Internet/WLAN die Kommandodaten . . ... Wenn Du nen Byte von Controller zu Controller schickst, willst Du das wirklich wandeln ..
Beispiel "p23400030" - aufgedrüselt p 2 3400 030 - übermittelt eine (neue) gewünschte Position an die ein Servo fahren soll: p .. KommandoID für Servoposition, 2 .. Servo Nr. 2, 3400 .. neue, gewünschte Servoposition, 030 .. gewählte Servospeed - etwa 15% der üblichen Servo-Fullspeed. Anderes Beispiel: "d" .. sende eine Liste von aktuellen Zustandsdaten eines Controllers an das Terminal. Beispiel "<<<" bzw. "<<>" : Fahre Links- oder Rechtskurve . . . jedes Kommando verändert die Geschwindigkeitsdifferenz der beiden Antriebe rechts und links.
Fazit: das erste Byte MUSS sich von allen andern Daten unterscheiden, um Kuddelmuddel zu verhindern.
Nun, siehe Eingangspost, will ich Entfernungen von meinem NaCo (NavigationsController) an den MoCo (MotorController) senden. Die Ultraschallsensoren messen Entfernungen bis an die sechs Meter in Zentimetern; bei der vorhandenen Speed reicht mir ein maximaler Horizont von fünf Metern - also Werte bis etwa 500. Das ist für ein Byte zu groß und ausserdem in den ersten ca. 20 cm nicht glaubwürdig und sowieso zu wenig. Also halbiere ich den Wert und erhalte nen Bereich z.B. von 10 bis 250 der als halbe Entfernung brauchbar ist - als Angabe in 2-cm-Einheiten. In den ersten Digits, genauer 1 bis 9, steckt die Kodierung der jeweils festgelegten Sensorgruppe (oder Einzelsensor) mit der auch die Anzahl Folgebytes feststeht. Die ASCII-Steuerzeichen 1 bis >10 sind bei mir noch nicht in Verwendung, hier machen sie dann Sinn und die KommandoID ist damit eindeutig von Parameter-Bytes unterscheidbar. Akzeptiert ? Verständlich ?
Lesezeichen