Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C-Control II Station, OSOPT V3.1
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)