Forum: PC-Programmierung serielle Verbindungen bidirektional mit php ansprechen


von Fi P. (fips)


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

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

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?

von Fi P. (fips)


Lesenswert?

Das Startscript liegt in /etc/init.d und wird zum Systemstart 
ausgeführt. Laut Prozessliste hat er rootrechte.

von Daniel A. (daniel-a)


Lesenswert?

Ist auf dem PC SELinux oder AppArmor vorhanden?

von Fi P. (fips)


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.

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
Noch kein Account? Hier anmelden.