# [C] String über die Serielle Schnittstelle einlesen



## Templorials (15. November 2007)

Hallo!

Habe mit C noch nicht allzu viel erfahrung.. Aber schreibe gerade ein kleines Programm (für einen PIC) das unter anderen Wörter und Zahlen von der seriellen Schnittstelle auslesen sollte () .. Die Strings werden von einem anderen Programm einfach auf die serielle Schnittstelle geschrieben.. 

Hab dazu zwar gets() gefunden aber das klappt nicht.. 


Bitte um Hilfe.. Über die Suche habe ich auch nichts gefunden


----------



## MCoder (15. November 2007)

Falls das Ganze unter Windows stattfindet, gibt es ein allgemeines Verfahren, um Daten von der seriellen Schnittstelle zu lesen:

Port öffnen -> *CreateFile()*
Port konfigurieren (DCB-Struktur füllen)-> *SetCommState()*
Timeouts festlegen (evt. verzichtbar, wenn die Standardeinstellungen passen)-> *SetCommTimeouts()*
Lesen der Bytes -> *ReadFile()*
Port schließen -> *CloseHandle()*

Möglicherweise kommt vor dem Lesen noch eine Schreiben ( *WriteFile()* ) dazu, falls ein Kommando gesendet werden muss, um das Übertragen der Daten anzustoßen. Außerdem muss wahrscheinlich auch ein Protokollrahmen beachtet werden, der z.B. regelt, mit welchen Bytefolgen Anfang und Ende einer Übertragung gekennzeichnet werden.

Gruß
MCoder


----------



## Templorials (15. November 2007)

Aha vielen Dank, ich denk das hilft mir schon viel weiter.. 

Also es kommt auch vor das ich einzelne Zahlen übergeben will.. zb 5 kann ich ja dann mit getc erwischen.. aber bei zahlen über 9 geht das nicht oder? gibs bei zahlen eine bessere möglichkeit die einzulesen


----------



## MCoder (15. November 2007)

Das hängt auch davon ab, wie die Zahlen übergeben werden. Entweder werden die einzelnen Ziffern als ASCII-Zeichen
übergeben (sozusagen in Textform) oder die Zahl wird in binärer Form mit der dem Datentyp entsprechenden Anzahl von
Bytes übergeben.
Am besten erscheint mir, mit ReadFile den Port byteweise auszulesen und alles in einen Puffer schreiben und diesen dann
anschließend entsprechend der übertragenen Daten auszuwerten.

Gruß
MCoder


----------

