mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik res = read (fd, buffer, 255)


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Folgende Funktionsaufruf zum Einlesen einer I/O-Verbindung habe ich 
gefunden.
res = read (fd, buffer, 255)
Jetzt würde ich gerne, was die einzelnen Parameter bedeuten und
wie ich diese weiter verarbeiten kann. Ich lese damit den seriellen Port 
ein,
was für einen Inhalt hat denn res ??
fd = filediscriptor,
255 = Anzahl der Bytes
Vermutlich ist buffer, vorher als char *buffer deklariert

Wie übergebe ich res an einen String ?
Danke vorab für Eure Mithilfe...!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi !
Sorry, aber irgendwie komme ich mit den Informationen nicht weiter. Aus 
dem was ich gelesen habe, bekomme ich mit "res = read (fd, buffer, 255)" 
einen Wert an res übergeben. Nur ich kann immer noch nicht 100% sagen, 
was der Inhalt des buffer ist. Am Anfang des Quelltext ist noch char 
buffer[255] und int res definiert. Fall ich jetzt die serielle einlesen, 
als Besipiel ich tippe hallo ein, wird der Wert doch irgendwo vorhanden 
sein,oder?
Wäre nett, wenn mir jemand weiterhelfen könnte!

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"read gibt die Anzahl der gelesenen Zeichen zurück."

d.h. 'res' ist nach dem Aufruf die Anzahl der gelesenen Zeichen. Wenn 
res > 0, dann sind im 'buffer' sind die Zeichen buffer[0] bis 
buffer[res-1] gültig.

> Fall ich jetzt die serielle einlesen, als Besipiel ich tippe hallo ein, > wird 
der Wert doch irgendwo vorhanden sein,oder?

Irgendwo ja. Mit read() bekommst du diese Daten allerdings nur, wenn 
read() in der Library so geschrieben ist, dass ein Einlesen von der 
seriellen Schnittstelle möglich ist UND du 'fd' so eingestellt hast, 
dass der Dateideskriptor der Eingabe von der seriellen Schnittstelle 
entspricht. En detail erklärt das die Dokumentation der von dir 
benutzten C-Library.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich würde sagen, dass die eingelesenen Daten in 'buffer' stehen (im 
Speicher beginnend an der Adresse 'buffer'). In 'res' (=result=ergebnis) 
wird übergeben, ob 'read' funktioniert hat, oder ob ein Fehler auftrat.

Eine genaue Beschreibung von 'read' und dessen Parametern würde ich in 
der Dokumentation des verwendeten Compilers vermuten.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tatstendrücker
Angenommen die eingelesenen Daten stehen in buffer,
wie kann ich diese an einen String weiter geben..?
Buffer hat ja den Inhalt "hallo"...
strcpy() ?

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.