-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcardisplay.pl
executable file
·53 lines (43 loc) · 1.51 KB
/
cardisplay.pl
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
#!/usr/bin/perl
use warnings;
use strict;
use lib './lib';
use ELM::Ford;
use Twatch;
use Daemon::Daemonize ':all';
$|=1;
if ($ARGV[0] eq '--fork') {
print "About to fork\n";
my $log_filename = "/root/carstuff/logs/log-".scalar(gmtime);
#open my $logfh, ">", $log_filename or die "Can't open $log_filename: $!";
daemonize(chdir => '/root/carstuff/logs',
close => 1,
stdout => $log_filename.".stdout",
stderr => $log_filename.".stderr",
) or die "Couldn't deamonize: $!";
print "Forked\n";
}
print "Connecting to ELM\n";
my $elm = ELM::Ford->new(usb_vendor => '0403', usb_product => '6001', verbose => 0);
#my $elm = ELM::Ford->new(port => '/dev/ttyUSB0', verbose => 1);
#print "01 0d 1: [[[", do_command($elm, "01 0d 1"), "]]]\n";
print "Connecting to twatch\n";
my $twatch = Twatch::new('169.254.1.1', undef, 4, 20);
print "Staring up\n";
$twatch->clearLCD();
$twatch->backlightOn();
print "Running!\n";
while (1) {
my $speed = $elm->mph;
# In L.
my $fuel = $elm->fuel_remaining(50);
my $speed_blocks = int($speed/5);
# \xFF is solid block.
my $speed_char = $speed > 70 ? '*' : "\xFF";
$twatch->printLine(sprintf("%2d %s", $speed, ($speed_char x $speed_blocks) . (' ' x (17-$speed_blocks))), 1, 1);
my $fuel_blocks = int($fuel/50 * 17);
$twatch->printLine(sprintf("%2d %s", $fuel, "\xFF" x $fuel_blocks . ' ' x (17 - $fuel_blocks)), 2, 1);
$twatch->printLine(scalar localtime, 4, 1);
print time, ", $speed, $fuel\n";
sleep 1;
}