Ich habe xampp in Fedora 13 installiert. Ich versuche mit dem Mikrocontroller über die serielle Schnittstelle mit der seriellen PHP-Klasse zu kommunizieren. Mein Code ist example.php
%Vor%Das PHP-Skript wird ausgeführt, gibt jedoch die folgenden Warnungen aus.
Warnung: Der angegebene serielle Port ist in /opt/lampp/htdocs/xampp/php_serial.class.php in Zeile 147 nicht gültig Warnung: Die Baudrate kann nicht eingestellt werden: Das Gerät ist in /opt/lampp/htdocs/xampp/php_serial.class.php in Zeile 241 nicht eingestellt oder geöffnet Warnung: Parität kann nicht eingestellt werden: Das Gerät ist in /opt/lampp/htdocs/xampp/php_serial.class.php in Zeile 295 nicht eingestellt oder geöffnet
... Ich habe den Befehl: chmod 0777 / dev / ttyUSB0 verwendet, um Berechtigungen zu erteilen. Ich habe auch versucht, den apache-Benutzer "prudhvi" der Dialout-Gruppe hinzuzufügen, indem ich folgenden Befehl benutze: $ usermod -a-G dialout prudhvi
Aber es funktioniert nicht. Wenn ich einen Befehl direkt vom Terminal aus aussende, benutze den Befehl: echo 1 & gt; / dev / ttyUSB0 funktioniert und "1" wird an die serielle Schnittstelle übertragen. Aber mit PHP bekomme ich die obigen Warnungen.
Ich habe den "$ whoami" verwendet, um den Namen des Benutzers zu überprüfen und den Benutzer "prudhvi" zur Dialout-Gruppe hinzugefügt. Es funktioniert immer noch nicht. Bitte hilf mir Jungs.
Ich habe das einmal mit Debian gemacht, um ein Arduino-Board mit einem PHP-Skript zu steuern und stieß anfangs auf das gleiche Problem.
In Debian müssen Sie den Apache-Benutzer zur Dialout-Gruppe hinzufügen, damit er serielle Verbindungsanforderungen stellen kann. Ich würde annehmen, dass das gleiche für Fedora gilt.
In Debian lautet der Befehl:
%Vor%Ich glaube jedoch, dass Fedora den Apache-Benutzer stattdessen als Apache bezeichnet. Ich habe keine Fedora-Maschine zum Testen, aber ich nehme an, der Befehl, den Sie ausführen müssen, ist:
%Vor%Sie müssen dann Ihren xampp Server neu starten.
Siehe als Referenz:
Neal
Könnten Sie die Zeilen in der Nähe von "/opt/lampp/htdocs/xampp/php_serial.class.php in Zeile 147" veröffentlichen?
Ich vermute, dass Sie versuchen, das Gerät falsch einzustellen (wie von Marc angezeigt). Entweder das oder der Port wird bereits von anderen Tests verwendet, die Sie gleichzeitig ausführen. Ich bin mir nicht sicher, ob das Skript, das Sie ausführen, Fehler enthält, die spezifisch für Ports sind, an denen Sie gerade anhängen möchten.
Testen Sie zuerst ein Hello World Type PHP-Skript, um Ihre Grundinstallation zu testen.
Überprüfen Sie dann, ob die Webserver / php-Engine als Benutzer ausgeführt wird, der in einer Gruppe berechtigt ist, auf die entsprechende / dev / ttyWHATEVER-Gerätedatei zuzugreifen, die der seriellen Schnittstelle entspricht. Es wäre überraschend, wenn dies standardmäßig der Fall wäre - Sie müssen es wahrscheinlich zur "Dialout" oder ähnlichen Gruppe hinzufügen.
Fügen Sie Ihrem Code eine Fehlerprüfung / -meldung hinzu.
Der Dank geht an Marc B. Kommentar, der mich veranlasst hat, nachzusehen, und er ist tot: Ссылка
%Vor% Ich glaube, dass der Aufruf von $serial->deviceSet("/dev/ttyUSB0");
das Problem beheben wird, aber Sie müssen möglicherweise die Quelle von php_serial.class.php
ändern, um an /dev/ttyUSB
anstelle von /dev/ttyS
zu arbeiten.
Tags und Links php linux serial-communication