1 #! /usr/bin/perl -w |
1 #! /usr/bin/perl -w |
2 |
2 |
3 use ME8100; |
3 use ME8100 qw/:async/; |
4 |
4 |
5 my @DEVICES = qw(/dev/me8100_0a /dev/me8100_0b); |
5 my @DEVICES = qw(/dev/me8100_0a /dev/me8100_0b); |
6 my @INPUTS = qw(Tür1 Tür2 Feuerlöscher); |
6 my @INPUTS = qw(Tür1 Tür2 Feuerlöscher); |
7 |
7 |
|
8 sub _sleep($); |
|
9 |
8 |
10 |
9 MAIN: { |
11 MAIN: { |
10 my $me8100 = new ME8100(@DEVICES); |
12 my $me8100 = new ME8100(@DEVICES); |
11 my %inputs; |
13 my (%inputs, %changed); |
12 |
14 |
13 # first read will be always go through |
15 # first read will be always go through |
14 @inputs{@INPUTS} = $me8100->read(); |
16 @inputs{@INPUTS} = $me8100->read(); |
|
17 |
15 print "Read:\n"; |
18 print "Read:\n"; |
16 print map { sprintf "%20s: %d\n", $_, $inputs{$_} } @INPUTS; |
19 print map { sprintf "%20s: %d\n", $_, $inputs{$_} } @INPUTS; |
17 |
20 |
|
21 _sleep(10); |
|
22 |
18 @inputs{@INPUTS} = $me8100->status(); |
23 @inputs{@INPUTS} = $me8100->status(); |
19 print "Status:\n"; |
24 print "Status2:\n"; |
20 print map { sprintf "%20s: %d\n", $_, $inputs{$_} } @INPUTS; |
25 print map { sprintf "%20s: %d\n", $_, $inputs{$_} } @INPUTS; |
21 |
26 |
|
27 @inputs{@INPUTS} = $me8100->changed(); |
|
28 print "Changed:\n"; |
|
29 print map { sprintf "%20s: %d\n", $_, $inputs{$_} } @INPUTS; |
|
30 |
|
31 # and now block 'til the next change... |
|
32 @inputs{@INPUTS} = $me8100->read(); |
|
33 @changed{@INPUTS} = $me8100->changed(); |
|
34 print "Finally:\n"; |
|
35 print map { sprintf "%20s: %d (%d)\n", $_, $inputs{$_}, $changed{$_} } @INPUTS; |
22 |
36 |
23 } |
37 } |
24 |
38 |
|
39 # Sleep replacement, since the standard sleep |
|
40 # gets awoken on every signal |
|
41 sub _sleep($) { |
|
42 my $timeout = shift; |
|
43 while ($timeout > 0) { |
|
44 $timeout -= sleep($timeout); |
|
45 } |
|
46 } |
|
47 |
25 # vim:sts=4 sw=4 aw ai sm: |
48 # vim:sts=4 sw=4 aw ai sm: |