serielle Verbindungen bidirektional mit php ansprechen

OP #4393273
Lesenswert?

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
OP #4394089
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren