Hallo Zusammen Ich habe mir ein kleines Diagnose Tool für RS232 Programmiert. Dabei kann man z.B. ein einzelnes Byte senden, und natürlich auch jedes einzelne Byte das empfangen wird, betrachten. Nun habe ich ein komisches Problem: Wenn ich die Tx und Rx Leitung miteinander verbinde, also die gesendeten Daten direkt wieder empfangen, und nun 1 byte sende, kommen jedoch 2 byte an ?!? Ist der gesendete Wert kleiner als 128 so funktionierts, ist er grösser kommen 2byte zurück. Kennt jemand das Problem, müssen die DTR, DSR, CTS, RTS irgendwie noch beachtet werden ? Liegt womöglich dort das Problem ?
Das Problem wird in Deinem Programm liegen. Die serielle Schnittstelle selbst verursacht so ein Problem nicht, und auch die Handshakeleitungen nicht. Könnte es sein, daß Du irgendwo ein Problem mit vorzeichenbehafteten Datentypen hast?
Je nach Programierumgebung werden deine Sende-char/string/byte als UTF-8 interpretiert. U+00080->c2 80 http://www.utf8-zeichentabelle.de/unicode-utf8-table.pl?number=1024&htmlent=1
Ja stimmt da hast du recht, liegt wirklich an der Codierung. Habe mal andere Codierungen ausprobiert, aber da gibt es so viele, welche muss ich den nehmen ?
Du solltest garkeine Codierung nutzen. Eventuell gibt es eine Möglichkeit die Lesedaten ungefiltert zu senden/empfangen (Ohne Konvertierung).
Michael L. schrieb: > welche muss ich den nehmen ? Dennis Heynlein schrieb: > Du solltest garkeine Codierung nutzen. Oder irgendwas, dass mit 8-bit auskommt. https://de.wikipedia.org/wiki/ISO_8859-15 https://de.wikipedia.org/wiki/MacRoman Ansonsten Netiquette
Dennis Heynlein schrieb: > Du solltest garkeine Codierung nutzen. Sehe ich auch so. mbyte schrieb: > Oder irgendwas, dass mit 8-bit auskommt. Nein, das würde sein Programm ad absurdum führen, denn dann wird ihm nicht angezeigt, was wirklich empfangen wurde. Gruß Jobst
Die ASCII-Spalte dürfte für Bytes >127(dec) eigentlich auch nichts anzeigen (oder nur nen Platzhalter), ansonsten müsste im Programm eigentlich der Zeichensatz auswählbar sein.
So nun ist das Problem gelöst. Wenn keine Codierung angegeben wird, so ist standard UTF8. Nun habe ich bei dem Senden und Empfangen ACSII Codierung verwendet, und siehe da es funktioniert !! Hier kann das Tool ausprobiert werden. Läuft auf MAC OSX ab 10.4 Die Baudrate sollte auch frei Einstellbar sein, habe ich aber noch nicht ausprobiert mit einem AVR oder so. Wer das mal testen möchte, dem währe ich dankbar.
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.