feof() und dio-Funktionen (lesen von der seriellen Schnittstelle)
am 11.05.2005 14:55:17 von Felix HoldenerHallo
Zum Einlesen von Daten über die serielle Schnittstelle scheitere ich hier
(WinXP, Apache 2, php5) mit fget() und ähnlichem daran, dass feof() keine
Rückmeldung gibt (rsp. immer false), ob Daten anliegen oder nicht. Wenn
ich versuche, etwas zu lesen und _nichts_ liegt an, dann bleibt das
Skript hängen und ich muss den Apache abschiessen, anders bekomme ich den
Port nicht mehr frei. (Schreiben geht problemlos, ebenso klappt das
einlesen, wenn die genaue Anzahl Bytes bekannt ist und ich genau diese
Menge einlese - das kann ich aber nur in bestimmten Fällen und ist daher
extrem unsicher, auch wenn mal ein Byte verlohren geht).
Das angeschlossene Gerät arbeitet ohne Handshake (weder hard- noch
softwaremässig).
Auch habe ich versucht, set_time_limit() auf 1 Sekunde zu setzen, um ein
timeout zu bekommen. Leider bringt das offenbar nichts, denn das Skript
"läuft" ja nicht in dem Sinne, dass es Rechenzeit braucht, sondern wartet
auf Daten.
Mir gehen die Ideen aus, daher:
Gibt es eine Funktion, die mir eine Art timeout anhand der effektiven
Laufzeit eines Skriptes liefert?
Gibt es eine Möglichkeit, doch zu einer eof-Information zu kommen?
Die dio-Funktionen könnten helfen, leider gibt es dazu wenig Hilfe oder
ich finde sie nicht.
Zu dio steht im Manual:
¦ Note: This extension has been moved to the PECL repository and is no
¦ longer bundled with PHP as of PHP 5.1.0.
¦
¦ This extension is only available on Windows Platforms as of PHP 5.0.0
Also müsste es mit php 5.0.0 laufen, aber das bekomme ich nicht hin. Das
steht:
¦ To get these functions to work, you have to configure PHP
¦ with --enable-dio.
"to configure" bedeutet ja nicht kompilieren oder? Aber _wo_ konfiguriere
ich das?
Danke für Hinweise
Felix