Thread Wagenanzeige Raspberry Pi
(73 answers)
Opened by NIwu at 2014-10-25 13:58
Punkt 1 versteh ich nicht. Welchen Punkt zeigt er statt eines Ortes an?
Punkt 2 dürfte ein Kodierungsproblem der Zeichensätze sein. Sei es ein Unterschied zwischen den Daten vom Webserver und dem Skript, oder zwischen der Skriptausgabe und der Konsole, auf der es ausgegeben wird. Schau mal, wie die Umlaute damit aussehen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 #!"D:\webserver\xampp\perl\bin\perl.exe" #! /usr/bin/perl use strict; use warnings; use JSON; # muss evtl. nachinstalliert werden use LWP::UserAgent; # muss evtl. nachinstalliert werden use Data::Dumper; # Wo sind die Daten Haltestellen ID zu holen? #my $url = "http://localhost/abfahrten.do?id=01"; my $url = "http://phoenix/abfahrt.json"; # Wie viele Abfahrten sollen gezeigt werden my $how_many = 3; my @titles = ( 'Zug', 'Zielort', 'Abf. in' ); # Ueberschriften der Ausgabe my @formats = ( '%4s', '%15s', '%8s' ); # Feldbreiten der Ausgabe my $format = join( ' ', @formats ) . "\n"; # baue Format fuer Ausgabe zusammen sub fetch_data { my $url = shift; my $ua = LWP::UserAgent->new( timeout => 10 ); my $response = $ua->get($url); if ( $response->is_success ) { return $response->decoded_content; } else { die $response->status_line; } } # Hauptprogramm # ################################################################### # Daten abholen lasssen my $content = fetch_data( $url ); #my $content = '[["S3","Dresden, Plauen","1"],["S1","Dresden, Flughafen","2"],["RE01","Meissen","10"],["ICE","Hamburg, Neugraben","15"]]'; # Abbruch, wenn Daten nicht geholt werden konnten die "Could not load data from $url." if not defined $content; #print Dumper $content; # Bereite JSON-Parser vor my $json = JSON->new->allow_nonref; # Dekodiere JSON-Daten und erstelle eine Datenstruktur [ [ nr, richtung, minuten ], [ nr, richtung, minuten ] ] my $array_from_json = $json->decode( $content ); # Kontrollausgabe #print Dumper $data; # Sortiere nach Abfahrtszeiten my @sorted = sort { $a->[2] <=> $b->[2] } @$array_from_json; #print Dumper \@sorted; # Zeige die nächsten Abfahrten gemäß $how_many print "Abfahrten\n"; printf $format, @titles; for my $aRef ( @sorted[ 0 .. $how_many-1 ] ) { my ( $zugnr, $ziel, $min ) = @$aRef; $ziel = ( split m/,\s+/, $ziel )[1] if $ziel =~ m/,/; printf $format, $zugnr, $ziel, $min; } Last edited: 2014-11-04 23:47:46 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |