Hallo, ich bin auf der Suche nach einem softwareseitigen baudrate-converter. Gibt es sowas? Mein Problem: An meinen Roboter ist ein rs485 Gerät angeschlossen, das auf baudrate 2400 sendet. Der Roboter kann aber nur über 4800 kommunizieren! Das übertragene Signal des Gerätes wird dementsprechend missinterpretiert und kommt als Hieroglyphen am PC an. Gibt es ein Programm, um das "defekte" Signal zurück zu konvertieren? Rein logisch gesehen, muss es ja möglich sein, das Signal (Hex-Zahlenkette) eineindeutig in ein 2400er Signal umzurechnen, wenn man Stop- und Startbits des ursprünglichen Signal kennt. Für einen Baudrateconverter ist im Roboter leider kein Platz mehr, ich muss es also softwareseitig lösen. Hat jemand einen Vorschlag? Vielen Dank und beste Grüße OldPowel
:
Verschoben durch Admin
Paul S. schrieb: > wenn man [...] Startbits des ursprünglichen Signal kennt Wenn es 0xff sendet empfängst Du 0xfe und kein zweites Byte. Wenn es 0xf7 sendet empfängst Du 0xfe 0xfe (ab dann verschoben!) Wenn es 0xfd sendet empfängst Du 0xfe 0xfe (ab dann verschoben!) Wenn es 0xfb sendet empfängst Du 0xfe 0xfe (ab dann verschoben!) Also keine umkehrbare Abbildung. Erschwerend kommt hinzu dass Du fast immer schon beim zweiten Byte aus dem Tritt kommst und das Startbit nicht mehr erwischst, dann verschiebt sich auch noch alles. Nimm ein Blatt Papier und mals Dir auf, dann wird klar warum das nicht gehen kann. Ändere die Firmware Deines Roboters so daß er das mit der richtigen Baudrate auf normalem Wege empfangen kann, oder finde die Konfigurationsoption wo man das einstellt.
:
Bearbeitet durch User
Mir ist nicht klar, ob du beide Seiten unter Kontrolle hast. Prinzipiell kannst Du bei auf der 4800er Seite mit odd parity + 2 stoppbits fahren und auf beiden Seiten umrechnen.
Hi, die Geräteseite habe ich leider nicht unter Kontrolle. Das Teil sendet immer mit 2400er baud, 8 bits, 1 stop, parity none und flow control none.
Paul S. schrieb: > die Geräteseite habe ich leider nicht unter Kontrolle OK. Wenn da was mit 2.4 rauskommt, dann muss das 4te Bit high sein und das 5te Bit ein Low. Wenn das nicht der Fall ist, kannst Du am Empfänger nicht zurückrechnen mit 4.8.
Paul S. schrieb: > Für einen Baudrateconverter ist im Roboter leider kein Platz mehr Paul S. schrieb: > die Geräteseite habe ich leider nicht unter Kontrolle Wie willst Du das dann softwaremässig lösen? Ist das ominöse "Gerät" zwischen PC und Roboter geschaltet? Hat das "Gerät" intelligenz, also setzt es die Baudrate irgendwie um, oder wandelt es nur 2400 <-> 4800? Bitte skizziere Dein Aufbau detailliert! Gruss Chregu
Hallo, danke für die Antworten! Die Schaltung sieht so aus: PC, rs485, 4800baud <---> RoboterPortA 4800baud <-intern-> RoboterPortB, 4800baud <---> Gerät, 2400baud Das ominöse Gerät sendet ausschließlich. Es ist in keiner Weise intelligent oder konfigurierbar. Es sendet nur auf 2400. Der Roboter kann auf 1200 oder 4800 empfangen und leitet das Signal direkt an den PC weiter, den man natürlich frei konfigurieren kann. Ich bräuchte also ein Programm, das die "fehlerhafte" Weiterleitung des Signals im Roboter wieder herausrechnet. Beste Grüße OldPowel
Wäre es nicht einfacher am Gerät einen Mikrocontroller zu platzieren, der mit 2400 empfängt und mit 4800 weiter sendet? Könnte nur schwierig werden, wenn du in Gegenrichtung viele Daten sendest, also mehr, als der uC puffern kann. ich hasse die Leertaste meines Tablets .......
:
Bearbeitet durch User
Paul S. schrieb: > Das ominöse Gerät sendet ausschließlich. Es ist in keiner Weise > intelligent oder konfigurierbar. Es sendet nur auf 2400. > > Der Roboter kann auf 1200 oder 4800 empfangen und leitet das Signal > direkt an den PC weiter, den man natürlich frei konfigurieren kann. Da die Daten (bei direkter Verbindung) schon zwischen dem ominösen Gerät und dem Roboter kaputt gehen, kannst du auch auf PC Seite nichts mehr machen. Die einzig sinvolle Lösung ist zwischen Gerät und Roboter die Baud-Rate umzusetzen, z.B. mit einem solchen Teil: http://www.serialgadget.com (RS-232) oder http://www.4n-galaxy.de/440_de.html (für RS-485) Paul S. schrieb: > Für einen Baudrateconverter ist im Roboter leider kein Platz mehr, ich > muss es also softwareseitig lösen. Wenn die Kaufteile zu groß sind, kann man sich sowas natürlich auch mit einem uC selber zusammenschustern. Um eine Hardwarelösung wirst du aber nicht herum kommen. Vielleicht ist ja dieser Code hier schon alles was du brauchst, musst halt ausprobieren, ob der Code noch funktioniert, wenn du die baud-Raten-Defines entsprechend deiner Bedürfnisse anpasst. http://community.atmel.com/projects/baud-rate-converter (PCMIDIoverview.zip Attachment)
:
Bearbeitet durch User
Vielen Dank! Das werde ich in Betracht ziehen. Ihr habt mir sehr weitergeholfen. Greetz OldPowel
Es ist mich nicht ganz deutlich wie die RS485 aus der PC kommt. Falls das mittels FTDI (USB-Serial) chip gemacht wird, dann ist das folgende vielleicht eine loesung. Der FTDI chip kann mann so programmieren das, unabhaengig welche baudrate vom software eingestellt wird, immer eine feste baudrate benutzt wird. Also wenn deine PC software initialisiert mit 4800 baud, benutzt er doch 2400. Ich bin micht nicht mehr ganz sicher ob es im FTDI chip selber oder nur im driver angepasst werden musz.
Paul S. schrieb: > Das ominöse Gerät sendet ausschließlich. Es ist in keiner Weise > intelligent oder konfigurierbar. Es sendet nur auf 2400. Eine brachiale Lösung: Gerät öffnen und Quarz suchen, und den durch einen Quarz halber Frequenz ersetzen. Dann sendet das Gerät mit 1200 Baud. Welche Nebenwirkungen entstehen, kann man ohne nähere Kenntnisse über das Gerät nicht beurteilen. Aber die Modifikation lässt sich ja genauso leicht rückgängig machen. Die saubere Lösung ist in jedem Fall ein Prozessorchen, das mit 2400 Baud empfängt und mit 4800 Baud weitersendet, Hardware und Software sind ziemlich trivial. Georg
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.