de.comp.lang.php.* FAQ

13.8. Wie kann ich mit PHP auf die serielle Schnittstelle zugreifen?

Antwort von Matthias P. Wuerfl

Da PHP serverseitig interpretiert und ausgeführt wird, ist es nicht möglich, mit PHP auf die serielle Schnittstelle eines Clients zuzugreifen. Allerdings besteht die Möglichkeit, auf die seriellen Schnittstellen des Computers zuzugreifen, auf dem das Script ausgeführt wird. Hierzu müssen jedoch die entsprechenden Rechte gesetzt sein, so dass der PHP-Interpreter oder der Webserver auch darauf zugreifen dürfen.

Windows und Unixe stellen die serielle Schnittstelle im Filesystem zur Verfügung und man kann mit den normalen Dateisystemfunktionen darauf zugreifen. Um Daten an die serielle Schnittstelle zu senden, genügt schon ein sehr kleines Script:

$string = "Hallo Schnittstelle!\n";
$pointer = fopen("/dev/ttyS0","w");
fwrite ($pointer, $string);
fclose($pointer);

In diesem Beispiel wird die serielle Schnittstelle /dev/ttyS0 zum Schreiben geöffnet, ein String wird hineingeschrieben und die Schnittstelle wird wieder geschlossen. Analog dazu könnte man die Schnittstelle auch zum Lesen öffnen und mit fgets() auf Input warten. Hierbei ist allerdings zu beachten, dass das Script nicht weiterarbeitet, bis nicht eine Zeile eingelesen ist. Können von der seriellen Schnittstelle keine Daten gelesen werden, so stoppt das Script beim fgets() und wartet bis zum Timeout.

Die serielle Schnittstelle kann nicht zum gleichzeitigen Lesen und Schreiben geöffnet werden; jedoch kann ein Script lesend darauf zugreifen, während ein anderes schreibt. Da die seriellen Schnittstellen einen bunten Strauß an Konfigurationsmöglichkeiten kennen, ist die Konfiguration der Schnittstelle auf Betriebssystemebene mitunter etwas kniffelig. Bevor man mit PHP darauf zugreift, sollte man seine Konfiguration mit den Mitteln des Betriebssystems testen, um bei der Erstellung eines PHP-Scriptes eine falsche Schnittstellenkonfiguration als Grund für das Nichtfunktionieren auszuschließen.

Valid HTML 4.01! Valid CSS!

13.8. Wie kann ich mit PHP auf die serielle Schnittstelle zugreifen?
http://www.php-faq.de/q/q-php-schnittstelle.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team