Re: Was brauch ich für eine Homepage (XPORT) Kategorie: Verschiedenes (von Mark - 3.05.2007 22:26) | |
Als Antwort auf Re: Was brauch ich für eine Homepage (XPORT) von Josef - 3.05.2007 14:14
| |
Hallo Ju, ist eigentlich relativ einfach. Ich wei� allerdings nicht mehr genau was ich gemacht habe und warum, aber es funzt seit einem halben Jahr. //-----------------------Serverkommunikation--------------------------------- thread xport { byte fifo; hwcom.setbuf(fifo,128); hwcom.ret(); int i, minute; loop { wait system.minute()%2==0; minute=system.minute(); for i=0...1 { string s, send_String; hwcom.flush(); hwcom.put(0x0D); //startbedingung für den xport ? bin mir nicht mehr sicher hwcom.put(0x0A); //startbedingung für den xport ? bin mir nicht mehr sicher hwcom.print(" "); hwcom.print("!"); hwcom.print("Messwerte"); hwcom.put(0x3b); wait hwcom.ready(); // Verbindung zum Server herstellen hwcom.num(system.year()); hwcom.put(0x2d); hwcom.num(system.month()); hwcom.put(0x2d); hwcom.num(system.day()); hwcom.put(0x20); wait hwcom.ready(); hwcom.num(system.hour()); hwcom.put(0x3a); hwcom.num(system.minute()); hwcom.put(0x3a); hwcom.num(system.second()); hwcom.put(0x3b); wait hwcom.ready(); ... u.s.w. ... hwcom.num(terratempboden1); hwcom.put(0x3b); hwcom.num(terratempboden2); hwcom.put(0x3b); hwcom.num(terraluft); wait hwcom.ready(); sleep 1000; } sleep 5000; wait minute!=system.minute(); } } //-----------------------Serverkommunikation Ende---------------------------- und auf dem Webserver (Linux) läuft ein Perl-Script: (auch das ist nicht "sauber" programmiert, funzt aber) #!/usr/bin/perl use strict; use Socket; use IO::Handle; use constant MY_ECHO_PORT =>10001; use DBI; my ($bytes_out,$bytes_in) = (0,0); my $string; my @array; my $port =shift || MY_ECHO_PORT; my $protocol = getprotobyname('tcp'); my $dbname="name der Datenbank"; my $username="Benutzername für die Datenbank"; my $pw="Passwort"; my $data1 = "DBI:mysql:$dbname"; my $data2 = DBI->connect($data1, $username, $pw); my $zwischenwert; my $ipadresse; $SIG{'INT'} = sub { print STDERR "$bytes_in Bytes empfangenn"; exit 0; }; socket(SOCK, AF_INET, SOCK_STREAM, $protocol) or die "socket() fehlgeschlagen: $!"; setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR,1) or die "Kann SO_REUSEADDR nicht setztem: $!"; my $my_addr = sockaddr_in($port,INADDR_ANY); bind(SOCK,$my_addr) or die "bind() fehlgeschlagen: $!"; listen(SOCK,SOMAXCONN) or die "listen() fehlgeschlagen: $!"; # warn "Warte auf ankommende Verbindung auf Port $port...n"; while (1) { next unless my $remote_addr = accept(SESSION,SOCK); my ($port,$hisaddr) = sockaddr_in($remote_addr); # warn "Verbindung von [",inet_ntoa($hisaddr),",$port]n"; SESSION->autoflush(1); while ( { open (FH,">empfang.txt") or die "Kann Datei nicht oeffnen: $!"; $bytes_in += length($_); @array = split /!/,$_; $zwischenwert = $array[1]; print FH $zwischenwert; print FH inet_ntoa($hisaddr); $ipadresse = inet_ntoa($hisaddr); close FH; chomp; } # warn "Verbindung von [",inet_ntoa($hisaddr),",$port] beendet.n"; close SESSION; @array = split /;/,$zwischenwert; my $datum_zeit = $array[1]; my $sql = "INSERT INTO terrarium_daten (Datum_Zeit, Temp_Boden_1, Temp_Boden_2, Temp_Luft, Temp_Wasser, Feuchte, Temp_Spot, Helligkeit, IP_Adresse) VALUES ('$datum_zeit', '$array[2]', '$array[3]', '$array[4]', '$array[6]', '$array[5]', '$array[7]', '$array[8]', '$ipadresse')"; my $abfr1=$data2->prepare($sql); $abfr1->execute; unlink('empfang.txt'); }; close SOCK; Gru� Mark | |
Antwort schreiben Antworten: Re: Was brauch ich für eine Homepage (XPORT) (von ju - 4.05.2007 11:49) Re: Was brauch ich für eine Homepage (XPORT) (von JackFrost - 19.11.2007 18:39) |