also das problem ist folgendes, von einem pic kommt über die serielle
schnittstelle folgendes:
0:64 1:64 2:63 3:64;
0:64 1:64 2:64 3:64;
0:64 1:64 2:64 3:64;
0:64 1:64 2:63 3:64;
am pc in einer textbox bleibt dann folgendes über:
0:::0:440:2:
0:440:1:3:0:64640: 2:;
0:64640: 1: 3:0:0: 2:0:0:0::
0:0:::0:430:2:
0:440:1:3:0:64640: 2:;
0:64640: 1: 3:0:0:0:0:0::
0:40:::0:440:2:
0:440:1:3:0:64630: 2:;
0:64640: 1: 3:0:
ich verstehe leider nicht warum
Die Umwandlung von ASCII/ANSI nach Unicode ist nur relevant, wenn nicht
mit dem 7-Bit-ASCII-Zeichensatz darstellbare Zeichen übertragen werden
sollen. Das scheinen bei Dir aber nur Zahlen und Doppelpunkte zu sein.
Das Problem liegt also woanders; vermutlich ist Deine serielle
Empfangsroutine verbesserungsbedürftig. Wie sieht's denn in einem
richtigen Terminalprogramm aus? (Hyperterminal genügt)
das kopierte ist ein auszug aus einem terminalprogramm :) in dem falle
zwar aus putty kopiert, aber im HT siehts nicht anders aus.
den fehler hab ich nun eingekreist: es funzt wenn man eine textbox
missbraucht als string-speicher.
weder stringbuilder, noch string selbst funktionieren, da wird entweder
verstümmelt oder es bricht gleich nach "0:" ab. ich denke es liegt hier,
aber ich wüsste echt nicht mit welchem datentyp die textbox arbeitet,
dass hier der fehler nicht auftritt.
> das kopierte ist ein auszug aus einem terminalprogramm :) in dem falle> zwar aus putty kopiert, aber im HT siehts nicht anders aus.> den fehler hab ich nun eingekreist: es funzt wenn man eine textbox> missbraucht als string-speicher.> weder stringbuilder, noch string selbst funktionieren, da wird entweder> verstümmelt oder es bricht gleich nach "0:" ab. ich denke es liegt hier,> aber ich wüsste echt nicht mit welchem datentyp die textbox arbeitet,> dass hier der fehler nicht auftritt.
Also, wenn die Terminalprogramme auch Mist ausspucken, dann hast du den
falschen Code gepostet :) Offenbar liegts dann entweder an deinem µC
oder auf dem Weg von µC zu PC.
Das ganze mit einer Textbox gerade zu biegen, ist murks. Lad dir
beispielsweise mal BrayTerminal runter (oder eine andere
Terminalsoftware, welche die empfangenen Daten in Hex anzeigen kann),
und dann poste mal die empfangenen Hex-Daten. Ich tippe nämlich auch auf
Sonderzeichen im Empfang.
Ralf
hä?
das terminalprogramm spuckt klarerweise keinen mist aus.
danke für den sinnlosen beitrag.
nein, der datenstrom enthält aus \n und \r am ende keine weiteren
steuerzeichen.
lg
argl, wie krank
der c18 gibt als leerzeichen \0 aus, die terminalprogramme stört das
wenig, aber scheinbar c#.
kann es das sein? wirds wohl :|
87 60 0F 80 78 00 00 78 03 78 CC 78 00 18 0F 00 87 60 0F 60 0F 00 00 78
0C 78 CC 78 00 18 0F 00 87 66 0F 78 0F 00 00 78 0F 78 CC 78 00 32 30 34
30
einige 00 da drinnen und wenn ich mich recht erinnere ist das das
terminierungszeichen eines strings
sorry für das mim sinnlosen beitrag ;)
morph wrote:
> einige 00 da drinnen und wenn ich mich recht erinnere ist das das> terminierungszeichen eines strings
In C schon. In C# (und .NET) eher nicht.
Kannst ja versuchen, die Nullen mit String.Replace() in Leerzeichen zu
konvertieren.
hab die dinger jetzt mit trimEnd() rausgefiltert. trimend deshalb weil
ich sowieso zeichenweise einlese und das schon für die \n und \r
verwende.
siehe da, es funktioniert, wobei mich das dennoch etwas schreckt. ich
glaub ich muss mich dem c18 compiler etwas mehr widmen, das hat doch
einige eigenarten.