kopia lustrzana https://github.com/rs1729/RS
nmea/aprs: bugfix multi-line output; negative aprs-temperature
rodzic
9ef53fa831
commit
12564c4cbc
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/env perl
|
||||
## aprs-output provided by daniestevez
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
|
@ -55,12 +56,15 @@ while ($line = <$fpi>) {
|
|||
#print STDERR $line; ## oder: nur Zeile mit Koordinaten ausgeben
|
||||
|
||||
$hms = $1*10000+$2*100+$3;
|
||||
|
||||
if ($4 < 0) { $NS="S"; $sign *= -1; }
|
||||
else { $NS="N"; $sign = 1}
|
||||
$lat = $sign*$4*100+$5*60;
|
||||
$lat = $sign*$4*100+$5*60;
|
||||
|
||||
if ($6 < 0) { $EW="W"; $sign = -1; }
|
||||
else { $EW="E"; $sign = 1; }
|
||||
$lon = $sign*$6*100+$7*60;
|
||||
$lon = $sign*$6*100+$7*60;
|
||||
|
||||
$alt = $8*3.28084; ## m -> feet
|
||||
|
||||
if ($line =~ /(\d\d\d\d)-(\d\d)-(\d\d).*/) {
|
||||
|
@ -72,26 +76,26 @@ while ($line = <$fpi>) {
|
|||
$course = $2;
|
||||
}
|
||||
|
||||
if ($line =~ /\(([\w]+)\)/) {
|
||||
$callsign = $1;
|
||||
}
|
||||
if ($line =~ /\(([\w]+)\)/) {
|
||||
$callsign = $1;
|
||||
}
|
||||
|
||||
if ($line =~ /T=([\d.]+)C/) {
|
||||
$temp = " T=$1C";
|
||||
}
|
||||
else {
|
||||
$temp = "";
|
||||
}
|
||||
if ($line =~ /T=(-?[\d.]+)C/) {
|
||||
$temp = " T=$1C";
|
||||
}
|
||||
else {
|
||||
$temp = "";
|
||||
}
|
||||
|
||||
$str = sprintf("$mycallsign>APRS,TCPIP*:;%-9s*%06dh%07.2f$NS/%08.2f${EW}O%03d/%03d/A=%06d$comment$temp", $callsign, $hms, $lat, $lon, $course, $speed, $alt);
|
||||
print $fpo "$str\n";
|
||||
$str = sprintf("$mycallsign>APRS,TCPIP*:;%-9s*%06dh%07.2f$NS/%08.2f${EW}O%03d/%03d/A=%06d$comment$temp", $callsign, $hms, $lat, $lon, $course, $speed, $alt);
|
||||
print $fpo "$str\n";
|
||||
|
||||
}
|
||||
elsif ($line =~ / # xdata = (.*)/) {
|
||||
if ($1) {
|
||||
print STDERR $line;
|
||||
}
|
||||
}
|
||||
#elsif ($line =~ / # xdata = (.*)/) { ## nicht, wenn (oben) alle Zeilen ausgeben werden
|
||||
# if ($1) {
|
||||
# print STDERR $line;
|
||||
# }
|
||||
#}
|
||||
}
|
||||
|
||||
close $fpi;
|
||||
|
|
|
@ -60,12 +60,15 @@ while ($line = <$fpi>) {
|
|||
#print STDERR $line; ## oder: nur Zeile mit Koordinaten ausgeben
|
||||
|
||||
$hms = $1*10000+$2*100+$3;
|
||||
|
||||
if ($4 < 0) { $NS="S"; $sign *= -1; }
|
||||
else { $NS="N"; $sign = 1}
|
||||
$lat = $sign*$4*100+$5*60;
|
||||
$lat = $sign*$4*100+$5*60;
|
||||
|
||||
if ($6 < 0) { $EW="W"; $sign = -1; }
|
||||
else { $EW="E"; $sign = 1; }
|
||||
$lon = $sign*$6*100+$7*60;
|
||||
$lon = $sign*$6*100+$7*60;
|
||||
|
||||
$alt = $8;
|
||||
|
||||
if ($line =~ /(\d\d\d\d)-(\d\d)-(\d\d).*/) {
|
||||
|
@ -88,11 +91,12 @@ while ($line = <$fpi>) {
|
|||
printf $fpo "\$$str*%02X\n", $cs;
|
||||
|
||||
}
|
||||
elsif ($line =~ / # xdata = (.*)/) {
|
||||
if ($1) {
|
||||
print STDERR $line;
|
||||
}
|
||||
}
|
||||
#elsif ($line =~ / # xdata = (.*)/) { ## nicht, wenn (oben) alle Zeilen ausgeben werden
|
||||
# if ($1) {
|
||||
# print STDERR $line;
|
||||
# }
|
||||
#}
|
||||
|
||||
}
|
||||
|
||||
close $fpi;
|
||||
|
|
Ładowanie…
Reference in New Issue