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


von Martin (Gast)


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...!

von Stefan (Gast)


Lesenswert?


von Martin (Gast)


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!

von Stefan (Gast)


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.

von tastendrücker (Gast)


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.

von Martin (Gast)


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() ?

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
Noch kein Account? Hier anmelden.