From 12564c4cbce74da8ec728f0f8fe65ab88890e1d8 Mon Sep 17 00:00:00 2001 From: Zilog80 Date: Wed, 29 Nov 2017 19:56:51 +0100 Subject: [PATCH] nmea/aprs: bugfix multi-line output; negative aprs-temperature --- rs92/pos2aprs.pl | 40 ++++++++++++++++++++++------------------ rs92/pos2nmea.pl | 18 +++++++++++------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/rs92/pos2aprs.pl b/rs92/pos2aprs.pl index 71fc6b1..ecedc80 100755 --- a/rs92/pos2aprs.pl +++ b/rs92/pos2aprs.pl @@ -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; diff --git a/rs92/pos2nmea.pl b/rs92/pos2nmea.pl index 0e2ee37..a1cd9f8 100755 --- a/rs92/pos2nmea.pl +++ b/rs92/pos2nmea.pl @@ -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;