res = read (fd, buffer, 255)

Gast #487893
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...!
Gast #487964
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!
Gast #487996
"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.
Gast #487998
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.
Gast #488032
@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

Eine eigene Frage? Dieser Thread ist über 19 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.