Beiträge von Stunk70

    Hi

    Ich baue mir derzeit ein nettes MEssgerät mit meinem Raspberry Pi Model B.
    Damit der User später mal seine Messdaten auch auf einen USB-Stick ect exportieren kann, muss ich mir min. 1 USB Steckplatz herausführen an die Gehäusefront. Daheim hatte ich noch einen 0815-USB-Hub (Marke: Trust) rumliegen. Ich möchte diesen einfach hernehmen und einbauen.

    Nachdem ich aber gelesen haben, dass die Rechenleistung des Rasp einbricht, sobald der Prozessor zu wenig Strom/Spannung ziehen kann, stehe ich vor einem Problem, was die Spannungsversorgung des Hubs angeht. Dieser wird ja vorerst über die Spannungsversorgung des Raspberry Pi gespeist. Nun meine Frage: Kann ich mir mit einem 7805 zB die 5V selber bauen und damit den USB-Hub Spiesen? Ich habe eine Netzteil mit 12V und 1200mA, welches mir bereits über einen 7805 die 5V für den Raspberry Pi zur Verfügung stellt bzw mit den 12V das 10Zoll Touch-Display ansteuert. Mir ist klar, das Netzteil gibt noch nicht so viel her, wird aber in Zukunft ausgetauscht.

    Ist also meine Überlegung OK oder geht das aus prinzip nicht?


    Vielen Dank jetzt schon für eure Hilfe.

    1. Sry für den Doppelpost

    2. Ich habe die Lösung für mein Problem gefunden. Mit PHP können durchaus WebSockets programmkiert werden. Das starten der server.php ist gegen alle Behauptungen tatsächlich auf keine Laufzeit beschränkt. Und die Lösung war, dass das Datenpaket, welches an den Server geschickt werden kann zunächst maskiert werden muss, damit es nachher auf die Reise geschickt werden muss. Porgrammcode ist nicht meiner, wems interessiert:

    [code=php]

    //Encode message for transfer to client.
    function mask($text)
    {
    $b1 = 0x80 | (0x1 & 0x0f);
    $length = strlen($text);

    if($length <= 125)
    $header = pack('CC', $b1, $length);
    elseif($length > 125 && $length < 65536)
    $header = pack('CCn', $b1, 126, $length);
    elseif($length >= 65536)
    $header = pack('CCNN', $b1, 127, $length);
    return $header.$text;
    }

    [/php]

    Hat nun gefruchtet und funktioniert einwandfrei. Projekt wird also fortgesetz und nun werden mal die Daten aus einem Text-Dokument ausgelesen. Anschließend wird dann, sofern das Auslesen funktioniert hat, die Hardware ausgelesen, statt einem Text-Dokument.

    Danke für die Hilfe

    Hi

    Also herzlichen Dank einmal für deine Hilfeleistung. Weiß ich zu schätzen.

    Hier ist einmal der Link von dem Chat-Script, dass ich zum laufen gebracht habe.
    http://www.sanwebe.com/2013/05/chat-u…cket-php-socket

    Dass der Server zuerst gestartet werden muss, bevor ein Client dazu verbinden kann ist mir klar. deswegen habe ich bereits vorher glaub ich erwähnt, dass ich zuerst den Server via Shell starte. Anschließend den Browser öffne und die Ziel-IP in meine Adressleiste eingebe, öffnet sich auch die index.html

    Ich gelange auch in die connection.onopen hinein, kann mir mit einem Alert dies auch anzeigen lassen. connection.onclose funktioniert auch einwandfrei, sobald ich die Shell beispielsweise schließe und somit der Server nichtmehr läuft. Auch die connection.onerror wird aufgerufen, sobald der Server nicht erreichbar ist.

    Einzig die connection.onmessage schaffe ich nicht, dass sich die bei einer eingehenden Nachricht des Servers aufruft. Das ist quasi nurmehr der einzige Fehler der mir hier auffällt.


    So am Rande gedacht: Was würdest du denn deiner meinung nach als Lösungsansatz nehmen?
    (Ich habe nämlich Websockets über PHP gewählt, weil das die einzige Programmiersprache im Netz ist, die ich irgendwie beherrsche)


    Als Attachment habe ich noch zwei Screenshots von der Console und der Shell gemacht, falls da jemand was herrauslesen kann und etwas versteht.


    PS: Ich habe nun die von dir vorgeschlagene Änderung vorgenommen. IM JavaScript steht nun die Definition des WebSocket so wie du es vorgeschlagen hast. Die Funktion connection.onmessage startet aber trotzdem nicht. Stattdessen haben sich bei den Ereignissen in der Browserconsole die Statusinformationen geändert. nun steht statt dem 304 Error ein 200 OK Status. Dürfte sich also tatsächlich etwas getan haben. Dennoch schaffe ich es aber nicht mit socket_write oder mit socket_send etwas vom Server zum Client zu schicken. Was ja dann den Aufruf der connection.onmessage zufolge haben sollte.

    Die Sache ist aber die folgende.
    Teile aus meinem Script stammen aus einem Chat-Script (Link muss ich nochmal suchen) Dieses Script habe ich dann eifnach der Gaude-halber getestet und das hat funktioniert, auch über die 120 Sekunden hinweg. Es wurde also nicht abgebrochen wie schon so oft mir gesagt wurde. Derzeit läuft ja auch das ganze XAMPP Paket auf meinem Test-PC, wodurch ich eben die Server.php mit der Shell aufrufe die beim XAMPP dabei ist.

    php -q C:/xampp/htdocs/rasp/server.php


    Die Testausgaben die im Server.php File enthalten sind, stimmen auch datsächlich überein. Sprich die ausführungen wurden mit socket_last_error und socket_strerror überprüft und da kamen keine Fehlermeldungen.

    Wenn ich in die on.close() ein Alert einbaue, wird dieses auch beim Beenden des Servers sofort ausgeführt...auch nach einer Laufzeit von über 120 sekunden.

    HI Leute

    Ich bastle mir gerade ein eigenes Messgerät mit dem guten Raspi und jetzt bin ich an nem Punkt angelangt wo ich auf zusätzliche Hilfe angewiesen bin.

    Zum Hintergrund:
    Das gute Stück soll irgendwann Vierpole messen und die MEsskurven dann irgendwie grafisch aufbereiten. Da ich Platformunabhängig bleiben möchte und das Messergebniss gegebenfalls auf dem Smartphone im Warmen (Antennenmessung) ansehen möchte kam ich sofort zu der Lösung irgendwas mit Webinterface. Da die Daten, aber relativ schnell aktualisiert werden sollen, bin ich auf den Websocket gekommen um mir die MEssdaten vom Rasp auf das Endgerät zu streamen.

    Nun komme ich auf den Punkt meines Problems.
    Ich habe es bereits zusammengebracht, eine server.php zu schreiben welche ich dann in der shell mit php -q C:/xampp/htdocs/rasp/server.php starte.
    Der Client ladet dann quasi eine index.html mit einem JavaScript CodeSchnipsel, der die Verbindung dann aufbaut.
    Nun schaffe ich es ja schon über das Handshake, was schon ein kleiner brocken war. Jetzt kommt aber der Hund: Sobald ich vom Server eine Nachricht schicken möchte, kommt am Client nichts an.

    Hier sind die relevanten Codeteile:

    Server.php


    Und hier noch die index.html mit dem Ausschnitt aus dem JavaScript-Code:


    Ich habe mir alle möglichen Dinge ausgeben lassen, hab an der Formatierung des zu sendenden Strings gefeilt aber da geht nichts.

    Also nach langer recherche habe ich mich entschieden einen websocket zu verwenden und die Messdaten dem Client zu schicken und dann natürlich den Client die grafische Aufbereitung machen lassen. Mit eben irgendeiner von den Bibliotheken die es so im Netz gibt (flot.js hab ich da zB schon gefunden und mit ein paar sponpanadln auch zum laufen gebracht).

    Bei mir happerts jetzt beim Websocket. Ich kenn mich mit dieser Technologie nicht all zu gut aus. PHP kann ich ein wenig, aber ich denke nicht ausreichend um damit die server.php schreiben zu können, die unbedingt notwendig wäre. natürlich habe ich bereits mit der Umsetzung begonnen indem ich mir ein fertiges Script gesucht habe und versucht habe, den Source-Code zu verstehen. Trotzdem sind mir da einige Dinge noch unklar.

    Also bevor ich zum Schritt gehe, die Hardware auszulesen, möchte ich in einem Text-Dokument irgendwelche X und y-Werte für das Diagramm schreiben und diese Auslesen. Wenn das hinhaut, wage ich mich weiter.

    Ich post mal den Source-Code von meiner server.php


    Der passende Client sieht dann folgendermaßen aus: index.html



    So: Sobald ich nun die index.html aufrufe, werde ich automatisch in die onerror function geworfen, die mir dann auch relativ ungut folgendes ausgibt: WebSocket Error [object Event]

    Mehr erhalte ich nicht. Jemand ne Ahnung was ich falsch mache oder wo mein Hund begraben ist?


    PS: Die Sache soll dann eher in das ausmessen von 4polen gehen, wo eine Start und Stop-Frequenz eingegeben werden und dann für die Dauer der Messung (Frequenzsweep) alle 10ms ein neuer Wert ausgelesen wird.

    Hi

    Nachedem ich nich unbedingt ein neuesy Thema aufmachen wollte, schreib ich hier herein.

    Im Grunde genommen baue ich gerade so etwas ähnliches. Ich habe ein Messobjekt, welches mir Messdaten auf den GPIO-Port liefert und diese gilt es dann in einem Diagramm darzustellen. Das Zeitintervall sind bei mir 10ms. Ein ganzer Messdurchlauf bringt dann auch so um die 1024 Messwerte zusammen.

    Meine Frage wäre nun: Wie bewerkstelligen?

    Ein Cronjob der die Gpio-Leitungen liest und in eine Variable schreibt?
    Wie übergebe ich dann die befüllte Variable an JavaScript, damit mir die das Diagramm zeichnet.

    MfG