Hallo leute, Ich versuche eine RS232 Kommunikation mit einem Mikrocontroller zu realisieren, über die ich dann zwei Motoren steuern will (rechts und links drehen). Einzelne Bytes kann ich bereits senden und auch wieder empfangen und auch die gesamte Hardware und teile des GUI stehen bereits. Nun muss ich eine Datenstruktur für die Kommunkikation machen, hab da aber kein Plan! Ich hab mir das etwa so vorgestellt. struktur{ motor1 motor2 } Das c++ Programm liest die Daten an der RS232 Schnittstelle aus und speichert sie ein eine Variabel. Die Variabel wird wie folgt übermittelt: sartbit+motor1+stopbit Wie muss ich es anstellen, damit ich in c++ die Information der Variabel motor1 heruasfiltern kann und die start und stopbits nicht beachet werden? Hat mir jemand einen Tipp, Beispiele, Code Schnipsel? Ich suche keine Beispiele um eine RS232 Verbindung aufzubauen sondern wie ich eine Datenstruktur sinvoll übermitteln und wieder herausfiltern kann. Danke
Start- und Stopbits werden von der UART-Hardware verwaltet, die bekommst Du (und auch Dein µC-Programm) nicht zu sehen.
Wenn ich das richtig sehe, hast du ein GUI Programm welches über RS232 mit dem µC kommuniziert. Der µC nimmt die Daten über UART vom Gui Programm entgegen und steurt mit diesen Informationen dann die Motoren. Das heißt, du benötigst eine Art Protokoll damit der Controller weiß was zu tun ist. Du kannst z.B 0x01 schicken um Motor1 zu schalten und 0x02 um Motor2 zu schalten. Sollte also kein grosses Problem sein. Du kannst dir ja selbst ein ausgeklügeltes Protokoll überlegen. mfg Christoph M.
Ich möchte die ganzen Parameter für die Motoren, GPS Position (hab ich im letzten Post vergessen zu erwähnen) in einer Struktur der RS232 Schnittstelle übergeben. Ist es nicht zu fehleranfällig nur Hexwerte zu übermitteln? @Rufus ich weiss, dass ich auf die Stop und Startbits der RS232 Schnittstelle keinen Einfluss nehmen kann, will ich auch nicht. Die "Start- und Stopbits" sind Informationen welchem Parameter der Struktur die Information übergeben werden soll. zB. [motor1start]rechts[motor1stop] [motor2start]rechts[motor2stop] etc..... Dann könnte ich die Parameter der Struktur übergeben und es wäre auch egal wenn halt mal nicht 16 Bit sondern nur 15 Bit gesendet werden, weil ich ja die Informationen rausfilter könnte. Nur weiss ich nicht wie ich aus einem String nur bestimmt abschnitte auslesen kann?! Ich hoffe ich habe nun mein Problem eingermassen verständlich rübergebracht. Ist sau schwer ;) Danke
Wegen der Übertragungssicherheit, kann man eine Prüfsumme oder ähnliches verwenden. Zum "Filtern" der Strings: Du musst keine ganzen Strings übertragen(Redundanz). Es reicht auch wenn du z.B deine ganzen Informationen in ein Byte gibst und auf die einzelnen Bits zugreifst.
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.