Thread Wagenanzeige Raspberry Pi (73 answers)
Opened by NIwu at 2014-10-25 13:58

Linuxer
 2014-11-04 23:34
#178120 #178120
User since
2006-01-27
3888 articles
HausmeisterIn

user image
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!

View full thread Wagenanzeige Raspberry Pi