senden empfangen string

Gast #25279
Lesenswert?
• ▲
▼
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
Gast #25281
Lesenswert?
• ▲
▼
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.