Forum: PC-Programmierung string filtern?


von tron (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Start- und Stopbits werden von der UART-Hardware verwaltet, die bekommst 
Du (und auch Dein µC-Programm) nicht zu sehen.

von Christoph M. (Firma: privat) (mauralix)


Lesenswert?

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.

von tron (Gast)


Lesenswert?

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

von Christoph M. (Firma: privat) (mauralix)


Lesenswert?

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
Noch kein Account? Hier anmelden.