-
-
@Zerush: Sorry! Irgenwo habe ich es anders gelesen...
Vieleicht liegt es daran dass SerRead nicht wartet bis der Puffer gefüllt ist, sonder eine gewisse Zeit auf Zeichen wartet, diese in den Puffer schreibt, den Rest mit 'T' füllt, und wenn das Haperterminal seine Zeichen zu spät sendet ist im Puffer nut "TTT". Also mal den 3. Parameter von SerRead auf zum Beispiel 5 setzten und sehen was passiert.
Das mit der binären 0 erklär ich hier mal kurz:
Ein String (z.B.: char String[256]) kann beispielsweise mit cin(C++) eingelesen werden, wenn der Benutzer aber ein Wort eingibt,was nur 200 Zeichen enthält, dann sind die letzten 56 Zeichen "Datenmüll". Damit das nicht passiert, wird bei der Eingabe eine '\0' angehängt, und bei der Verarbeitung oder Ausgabe immer nur bis zur binären 0 gearbeitet (oder ab da angehängt), es sei denn der String-Puffer ist komplett gefüllt, dann wird bis zum Ende des Puffers ausgegeben. So wird immer nur der wirklich genutzte Teil ausgegeben.
Fazit: Mit SerRead kannst du schlimmstenfalls nur einen Teil von dem was gesendet wurde empfangen.
Es wäre kompliziert, aber du könntest auch ein Programm schreiben was die Daten (Befehle wie Fahr geradeaus) zum ASURO sendet (mit char mehr als 200 Möglichkeiten), Der sendet sie dann wieder zurück um zu überprüfen ob er auch die richtigen bekommen hat. Bei größeren Puffern (wie zb "GGGGGG" für geradeaus), wäre es sicherer.
Probier das mal, damit kannst du zwar den ASURO nur steuern aber kannst es ja ändern. https://www.roboternetz.de/phpBB2/vi...384317ee631245
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen