Re: Timeserver mit der C2 Kategorie: Programmierung (von Markus - 16.05.2011 9:31) | ||
Als Antwort auf Timeserver mit der C2 von Mani - 12.05.2011 19:35 | ||
| ||
Hallo Mani Ich sende ein POST-Statment im HTTP 1.1 -Format via swcom an den XPORT. Dieses wird von einem Apache-Webserver mit einem PHP-Script empfangen und in meinem Fall in ein Text-File zur weiteren Verarbeitung abgelegt. Den XPORT musst du allerdings vorgängig mit der aktuellsten Firmware-Version upgraden, sonnst hängt dieser sich immer wieder auf. Vielleicht kannst du mit diesem Beispiel etwas anfangen thread SendDateTime { int txtLaenge; byte i; string strSend, strPrefix, strDateTime; byte buf[512]; strPrefix = "DateTime="; // Min = system.minute(); swcom.init(); sleep 500; swcom.setbuf(buf,512); swcom.setspeed(swcom.SPEED_9600); loop { if system.minute() %10 == 0 // nur alle 10 Minuten senden { strDateTime = strPrefix ; str.putintf (strDateTime,system.year()-2000,2); strDateTime = strDateTime + "-"; str.putintf (strDateTime,system.month(),2); strDateTime = strDateTime + "-"; str.putintf (strDateTime,system.day(),2); strDateTime = strDateTime + " "; str.putintf (strDateTime,system.hour(),2); strDateTime = strDateTime + ":"; str.putintf (strDateTime,system.minute(),2); strDateTime = strDateTime + ":"; str.putintf (strDateTime,system.second(),2); // in strDateTime steht nun DateTime=YY-MM-DD hh:mm:ss // dieses Datumsformat kann direkt in SQL importiert werden txtLaenge = str.length(strDateTime); // hier beginnt das eigentliche Senden // zuerst via X-PORT die Verbindung öffnen strSend="C192.168.9.5/80xD"; swcom.print2(strSend); sleep 1000; // hier wird ein HTML1.1 POST Statement an die PHP-Prozedur ccreceive.php gesendet // alles an einem Stück senden, wait cap.Capture(1); strSend ="POST /ccreceive.php"; swcom.print2(strSend);wait swcom.ready(); strSend=" HTTP/1.1rn"; swcom.print2(strSend);wait swcom.ready(); strSend="Host: 192.168.9.5rn"; swcom.print2(strSend);wait swcom.ready(); strSend="Connection: closern"; swcom.print2(strSend);wait swcom.ready(); strSend="Cache-Control: norn"; swcom.print2(strSend);wait swcom.ready(); strSend="Content-type: "; swcom.print2(strSend);wait swcom.ready(); strSend="application/"; swcom.print2(strSend);wait swcom.ready(); strSend="x-www-form-urlencodedrn"; swcom.print2(strSend);wait swcom.ready(); strSend= "Content-length: "; str.putint(strSend, txtLaenge); strSend = strSend +"rnrn"; swcom.print2(strSend);wait swcom.ready(); // hier folgen die $_POST-Daten swcom.print2(strDateTime); swcom.print("rn"); swcom.flush(); // und das Capture wieder frei geben cap.Release(1); } } } Hier noch die entsprechende PHP-Funktion <?php $zieldatei = "cc-daten.txt"; if(!$HTTP_RAW_POST_DATA) { $HTTP_RAW_POST_DATA = file_get_contents("php://input"); if(empty($HTTP_RAW_POST_DATA)) { echo 'keine Daten im POST '; } else { echo 'Daten angekommen ....'; } } if(strtolower($_SERVER['REQUEST_METHOD']) == 'post') { $dfile=fopen($zieldatei,"a"); foreach($_POST as $key => $value) { fputs($dfile, $key . '=' . $value . "rn"); } fclose($dfile); } ?> Mit besten Grüssen: Markus > Hallo! > bin nun auch Besitzer eines Xports und experimentiere damit rum. Eine Datenübertragung von > einem x-beliebigem Rechner im Netzwerk hab ich mit dem Treiber für virtuelle serielle > Schnittstellen hinbekommen. Nun aber zu meiner Frage: > Wie mache ich die C2 zu einem Timeserver im Netzwerk? > Ich hab hier im Forum gelesen wie man die C2 an einem Timeserver im WWW stellt. Das mu� doch auch > anders herum gehen. Ich hab hier überhaupt kein Problem das Zeitsignal (DCF77) zu empfangen. > Aber was das www angeht, bin ich hier im Tal der Ahnungslosen. > > Kann mir jemand helfen mit der C2 und dem genialen XPort einen Timeserver zu bauen. > Habe in der Firma eine C2-Station die 24h läuft (Kühlmaschinensteuerung) und bei mir im Haus eine > C2-Unit die 24h läuft (Haussteuerung). > > Danke Mani | ||
Antwort schreiben Antworten: Re: Timeserver mit der C2 (von Imanuel Sachse - 18.05.2011 4:11) |