PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Von µC an PHP Werte übergeben



EagleStar
07.12.2006, 12:55
Servus,

ich habe mir vorgestellt -auch wenns noch relativ sinnfrei ist- Werte oder Zustände mit einem AVR zu ermitteln und diese über RS232 an einen PC weiterzugeben. Soweit dürfte das kein Problem sein, hoff ich :) .
Mein Problem besteht darin, dass ich keine Ahnung habe wie ich jetzt von PHP aus, solche Daten abfragen könnte?

Kann mir irgend jemand helfen, der sowas vllt schon mal versucht hat? Oder auf ähnliche Projekte verweisen?

MfG EagleStar

s.o.
07.12.2006, 13:33
Ohohoh...

Theoretisch möglich, aber sinnlos. Ich geb dir jetzt mal die Anleitung wie man's machen könnte, da ich mich verdammt lange schon mit php auseinandersetze. 5 Jahre oder so.

Das behandelt hier nur die Problemlösung auf dem Server. Das speichern kann ich dir leider nicht beantworten.


1.Möglichkeit. Speichere die Werte (sofern nur 1 Wertetabelle) mit einem Trennzeichen, hochladen:

Splitte die Datei dann auf mit explode und du hast die im Array.

2. Wenn du eine x-Wertetabelle haben willst. Ein Formatbsp:
Wert1Reihe1;Wert2Reihe1;Wert3Reihe1
Wert1Reihe2;Wert2Reihe2;Wert3Reihe2

nun 2 mal splitten: 1x neue Zeile splitten, und dann alle Werte in dem Array mit ";" splitten. Fertig aus.

Aber ich sehe keinen Verwendungszweck, sorry.

Grüße

s.o.

EagleStar
07.12.2006, 13:48
Sorry aber das war ein Schritt zu schnell!

Ich habe noch nicht die leiseste Ahnung, wie ich überhaupt mit PHP auf den COM-Port zugreifen kann?

BlinkyBill
07.12.2006, 14:09
sinnlos nicht... Messwerte auf ner Seite bereitstellen dürfte so ja ganz gut klappen.

Er meint eben nicht mit PHP auf die serielle zuzugreifen, sondern mit einem anderen Programm die werte in eine Datei, und aus der dann per PHP auslesen...

Eine weitere Umweg-Methode wäre wenn du ein externes Programm ausführst ,(system()) und dieses Programm die Werte als Rückgabewert ausgeben lässt.

Ansonsten kannst du noch aus folgendem codeschnipsel mal die einzelnen Befehle ergooglen..
sie sind der direkte Weg zur Schnittstelle


<?php

$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_fcntl($fd, F_SETFL, O_SYNC);

dio_tcsetattr($fd, array(
'baud' => 9600,
'bits' => 8,
'stop' => 1,
'parity' => 0
));

while (1) {

$data = dio_read($fd, 256);

if ($data) {
echo $data;
}
}

?>

Allerdings sei diese Schnittstelle wohl nur auf Linux-Systemen implementiert...

Hauptsächlich die dio_tcsetattr() ist interessant, da diese funktion nur für RS232 notwendig ist... dio_open ist hingegen sehr universell.

gruß

Johannes G.
07.12.2006, 14:09
Hallo,
ich denke mit PHP geht das nicht..
Wie wäre es wenn du mit einem kleinem C Programm die schnitstelle ausliest und das Programm mit system() startest?

Viele Grüße,
Johannes

BlinkyBill
07.12.2006, 14:10
schneller :lol:

EagleStar
07.12.2006, 14:52
Das mit system() klingt eigentlich ganz gut! :)
Auf was ist das system() bezogen PHP oder C? Ich kenne den Befehl nicht! googeln war relativ erfolglos! Wie funktioniert das genau?

MfG EagleStar

SIGINT
07.12.2006, 16:19
Also ich finde die Idee eigentlich sehr Sinnvoll....
Besser kann man sein BOT oder andere Hardware wahrscheinlich vom Internet aus nicht steuern. Ich hab beim Googlen folgende Links gefunden:
http://www.php-resource.de/forum/showthread/t-38408.html
http://www.php.net/manual/en/ref.dio.php

Gruß,
SIGINT

P.S.: Vielleicht ist ein FLASH-Film mit einem XML-Socketserver doch eine bessere Lösung. Das ist noch interaktiver als PHP.

Johannes G.
07.12.2006, 16:20
Hallo

http://de3.php.net/manual/de/function.system.php

Aber ich finde die Idee von BlinkyBill eigenltich viel besser ;)

Viele Grüße,
Johannes

EagleStar
07.12.2006, 17:06
Danke Jungs!

Eure Links sind weltklasse, SIGINT und Johannes G.!

Das wird mich auf jeden Fall weiterbringen! Vielen Dank!!!

MfG EagleStar

Johannes G.
07.12.2006, 19:34
Nix zu danken... ;)

BlinkyBill
11.12.2006, 06:57
Der beste Dank wird sein, dann hier mal ergebnisse zu zeigen ;)

Würd mich interessieren, ob und wie einfach das klappt.

Gruß

EagleStar
11.12.2006, 09:12
Das kann ich machen!

Aber es wird noch etwas dauern, ich bin grad viel unterwegs!

MfG EagleStar