Hallo Alle zusammen, Ich benutze die Bascom AVR Version 1.11.6.3 . Das Problem das ich habe gestaltet sich wie folgt. Über die serielle Schnittstelle empfängt der AT90S8535 von einem anderen AT90S8535 am (Pin 14 (RXD)PD0 ) folgendes a1b2c3d4 . Der sendende Mikrokontroller schickt print "A";a;"B";b;"C";c;"D";d wobei a b c d Byte Typen sind in denen sich z.B. die Werte a = 1 , b = 2 , c = 3 , d = 4 befinden. Könnte aber auch a = 22, b = 1, c = 100, d = 31 sein Durch den Input Befehl auf dem zweiten Mikrokontroller wurde z.B. A1B2C3D4 als String empfangen . Meine Frage ist nun : Wie kann ich den String wieder aufschlüßeln ? Mit dem var = MID(var1 ,st [, l] ) ist das wohl nicht machbar, da mein empfangener String A1B2C3D4 nicht von konstanter Länge ist. Es ist möglich, das der sendende Mikrokontroller z.B. A10B201C3D43 sendet , und somit ein insgesamt längerer String empfangen wird. Also mein Problem ist , daß ich nicht weiß wie ich an die veränderlichen Inhalte a b c d des empfangenen Strings gelange. Das Senden von 4 Byte Typen also nur 5 1 6 2 kann auf der Empfängerseite als 5 1 6 2 in einen String der Länge 3 also (0 1 2 3) abgelegt werden. Auf dem Hyperterminal erscheint dann folgerichtig 5162 Frage : Ist es möglich die gesendeten Bytes a b c d empfangsseitig in Bytes und nicht als String zu empfangen ? Bisherige versuche mit z.B. INPUT a INPUT b ....... waren nicht erfolgreich. Etwas weitergeholfen wäre mir wohl auch schon , wenn ich wüßte wie man aus einem String z.B. A123A12A87A33 das Zeichen "A" zählen kann. Sollte meine Problemschilderung nicht klar sein, so können Sie mich unter dasch@gmx.de erreichen. mfg Dieter
Hi! Du hast doch eindeutige Trennungen (A...B...C) drinn, du musst nur danach suchen. Eine ander Möglichkeit wären eindeutige Ende-/Trennzeichen ($0A0D,0..). Gruss Uwe
warum überträgst du die 4 wete nicht in einer festen länge z.b? a = 022, b = 001, c = 100, d = 031 sein damit hast du 022001100031 und kannst es mit hilfe von mid$ auslesen. die andere möglichkeit ist du wandest die werte in binärzahlen und erhälst somit pro wert 8 bit. (vorsicht: damit kannst du aber nur 256 werte übertragen) so mache ich es auch! gruß sebastian
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.