Hallo alle zusammen, mein Hintergrundwissen zu Linux hält sich noch in Grenzen und nun stehe ich vor einem Problem dem ich auch mit Google und co einfach nicht auf die Spur komme. zur Hardware: Ich verwende einen Odroid U3 mit I/O-Shield als Server meiner Homepage. Nun war mein Gedanke, das es praktisch wäre weitere Elektronik über eine Webseite ansteuern zu können. Also: Webseite > PHP > Weg xyz > Serielle Verbindung > ATMEGA 328P des I/O-Shields > weitere Elektronik und zurück. Mein Problem liegt bei der Kommunikation zwischen PHP und der seriellen Schnittstelle. 3 Lösungsansätze habe ich bisher. Keiner davon erfüllt seinen Zweck. 1. eine PHPClass die die Kommunikation übernimmt.(Dazu habe ich etwas gefunden und herumprobiert aber kein sinnvolles Ergebnis) 2. proc_open und picocom (Die Kommunikation mit picocom auf /dev/ttySAC0 zum Shield funktioniert in der Kommandozeile wunderbar, aber in PHP über proc_open aufgerufen liefert picocom den Fehler "Filedes is not a tty". Ab hier kam ich auch mit Google nicht weiter. 3. serial-port-json-server ... läuft autark von Apache. Wird über localhost:port angesprochen. Daten senden funktioniert. Empfangen noch nicht. Aber das klärt sich auch noch. Größte Hürde hier ist die Startbedingung. Starte ich ihn über Kommandozeile oder ssh kann er die Verbindungen unter dev auflisten und ansprechen. Starte ich ihn in einem Script als Dienst beim Systemstart kann er das nicht. An das Eintragen der verwendeten User in die Gruppe dialout habe ich gedacht. Meine Hauptfrage dabei ist, wieso es bei 2. und 3. darauf ankommt ob ich ssh/shell verwende oder der Programmaufruf über Apache bzw. als Dienst beim Starten aufgerufen wird. Die andere wäre. Gibt es einen eleganteren Weg als 2. und 3. um eine bidirektionale Verbindung zu realisieren? Eine Lösung für Variante 3 würde mich am meisten interessieren da man mit dem serial-port-json-server auch gleich hex-dateien auf den ATMEGA übertragen kann. Ich freue mich über jede Anregung in die richtige Richtung. mfg Philipp
:
Bearbeitet durch User
Fi P. schrieb: > rößte Hürde hier ist die > Startbedingung. Starte ich ihn über Kommandozeile oder ssh kann er die > Verbindungen unter dev auflisten und ansprechen. Starte ich ihn in > einem Script als Dienst beim Systemstart kann er das nicht. Könnte ein Rechteproblem sein. Als welcher LUser wird der Service gestartet?
Das Startscript liegt in /etc/init.d und wird zum Systemstart ausgeführt. Laut Prozessliste hat er rootrechte.
Ist auf dem PC SELinux oder AppArmor vorhanden?
nein ist es nicht. habe aber herausgefunden warum 3. nicht funktioniert. das Startscript stammte von der Webseite und übergibt einen Parameter der alle Schnittstellen außer usb und acm herausfiltert. da meine Verbindung ttySAC lautet blieb nichts übrig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.