www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik String von Serieller Schnittstelle auslesen


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle!

Ich habe ein Problem:

Weiß jemand von euch, wie ich einen String von der seriellen 
Schnittstelle auslesen kann, also mit SBUF und so?

Danke schonmal!

lg Hans

Autor: F. Kriewitz (freddy436)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SBUF, ist das basecom?
hab ich noch nie gehört, general kannst du aber immer nur ein Byte lesen 
(gegebenenfalls auch mehrere Bytes aus einem Buffer). Wenn du einen 
String sendest solltest du auch irgendwas zum Abschluss mitsenden (in 
der Regel ist das bei Strings 0x00), dann musst du den string einfach 
nur solange in einen Buffer schreiben bis du beim 0x00 Byte angekommen 
bist. Dann hast du im Buffer dein String.

Wenn es Basecom ist würde ich mich nicht wundern wenn da schon irgend 
eine Funktion dabei ist die genau so was macht.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ... mit SBUF und so

Nun weiß ich das du von einem 8x51 Derivat sprichst. Gib dir mal nen 
bischen Mühe bei der Formulierung deiner Frage ansonsten bekommst du 
keine Antwort.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tschuldigung!

Also ich hab einen AD89C51ED2. Mit SBUF=... kann ich ein Byte aus der 
Schnittstelle lesen, das weiß ich ja. Aber wie kann ich die Bytes dann 
wieder zu einem String zusammenbasteln?

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interrupt Serielle Schnittstelle - Byte auslesen - nacheinander in den 
Speicher packen.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich glaube so dürfte es funktionieren:

for(y=0; y<20; y++)
{
   charReceive[y]=SBUF;
   strcat(stringReceive, charReceive);
}

Danke für die Antworten.

lg Hans

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Üblicherweise hast du eine Funktion um ein Zeichen zu Empfangen 
(getchar), vorrausgesetzt die UART ist initialisiert.

char getchar (void)    {
  while (!RI);                   // Receiver ready/busy ?
  RI = 0;                        // Zeichen empfangen, clear RI Flag
  return SBUF;                   //
}

Achte darauf das du RI abfragst (polling mode). Ansonsten kannst du das 
auch in einer Interrupt Routine erledigen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.