Polling vermeiden
-
Hallo,
ich möchte die Serielle Schnittstelle auslesen bzw. überwachen.
Es existiert bereits eine Lese-Routine, die 50ms ausgeführt wird
in einer Endlosschleife.
Das ist Polling. Gibt es eine andere Möglichkeit?
Mein OS ist Linux.
-
Wenn einfach nur gelesen werden muss, benutze doch man: select(3posix), man: poll(3posix) oder man: epoll.
-
Danke. Ist die select Methode nicht ausschließlich
für die Überwachung von Sockets? Ich finde nur
TCP-Beispiele. Funktioniert das auch für die serielle Schnittstelle?
Wenn ja wie
-
Select sollte fuer jeden Filedescriptor funktionieren.
-
Also die Funktionen funktionieren mit Dateidescriptoren:
select() and pselect() allow a program to monitor multiple file descriptors, waiting until one or more of the file descriptors become "ready" for some class of I/O operation (e.g., input possible). A file descriptor is considered ready if it is possible to perform the corresponding I/O operation (e.g., read(2)) without blocking.
Und wenn man eine Datei öffnet, bekommt man einen:
Given a pathname for a file, open() returns a file descriptor, a small, non-negative integer for use in subsequent system calls (read(2), write(2), lseek(2), fcntl(2), etc.). The file descriptor returned by a successful call will be the lowest-numbered file descriptor not currently open for the process.
Also sollte es mit jeder Datei funktionieren, auch wenn es bei einer regulären Datei natürlich nicht ganz so viel Sinn ergibt.
EDIT: Viel zu langsam

-
Möglicherweise wirst du hier fündig.
EDIT: Man ich hab wohl nen knick in der Optik
:D... Hab nicht alle Antworten gesehen...
-
Vielen Dank Euch allen!