Guest User

Untitled

a guest
Aug 14th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.40 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #Filtert alle Messwerte aus der CSV Datei heraus und trennt sie von Spannungsangaben der Batterie
  3. #use strict;
  4. #use warnings;
  5. #use diagnostics;
  6. use POSIX (floor);
  7. my $srcpath = 'source.txt'; #Pfad zur Temperaturlogger CSV Datei
  8. my $outpath = 'out.txt'; #Pfad zur Ausgabe
  9. my $xml1path = 'xml1.xml'; #Pfad zur ersten XML Datei
  10. my $xml2path = 'xml2.xml'; #Pfad zur zweiten XML Datei
  11. my $xml3path = 'xml3.xml'; #Pfad zur zweiten XML Datei
  12. my $xmloutpath = 'xmlout.xml'; #Pfad zur zweiten XML Datei
  13. my $regex = qr/\d\d\.\d\d.\d\d\d\d\s(\d{2}\:){2}\d\d\,721\;(.{1,6};){5}/;
  14. my $regex2 = qr/(\d{2}\:){2}\d\d/;
  15.  
  16. print "Bereinige GPS Datenliste und runde Zeitstempel\n";
  17. open my $src, '<', $srcpath or die "Cant open File: $!";
  18.  
  19. my @sensor;
  20. while (my $line = <$src>) {
  21.     chomp $line;
  22.     #Ausfiltern aller unnützen Daten sowie der Spannungsangabe der Batterie
  23.     if ($line =~ m/^($regex)/) {
  24.     #löschen der ",721"
  25.     my $templine = $1;
  26.     $templine =~ s/\,721//i;
  27.     #Auf- und Abrunden der Zeitstempel
  28.     $templine =~ m/($regex2)/;
  29.     my $tmp1;
  30.     my $tmp2;
  31.     $tmp1 = $1;
  32.     $tmp1 =~ m/(\d)\z/;
  33.     $tmp2 = $1;
  34.     if ($tmp2 <5) {
  35.         $tmp1 =~ s/\d\z/0/;
  36.         $templine =~ s/$regex2/$tmp1/;
  37.     } else {
  38.         $tmp1 =~ s/\d\z/5/;
  39.         $templine =~ s/$regex2/$tmp1/;
  40.     };
  41.     #print "$templine\n";
  42.     push(@sensor, $templine);
  43.     };
  44. };
  45. print "Bereinige Sensordaten und runde Zeitstempel\n";
  46. #Bearbeitung der XML Dateien (Runden von Zeitstempeln)
  47. open my $xml1, '<', $xml1path or die "Cant open File: $!";
  48. open my $xml2, '<', $xml2path or die "Cant open File: $!";
  49. open my $xml3, '<', $xml3path or die "Cant open File: $!";
  50. open my $xmlout, '>', $xmloutpath or die "Cant open File: $!";
  51. print $xmlout "<params>\n";
  52. my @xml1;
  53. while (my $line = <$xml1>) {
  54.     chomp $line;
  55.     if ($line =~ m/^\s{0,}\<param\slat/) {
  56.         my $templine = $line;
  57.         $templine =~ m/.*T\d\d\:\d\d\:(\d\d)Z.*/;
  58.         my $tmp1 = $1;
  59.         $tmp1 = $tmp1/10;
  60.         $tmp1 = floor($tmp1 + 0.5);
  61.         $tmp1 = $tmp1*10;
  62.         $templine =~ s/(?<=T\d\d\:\d\d\:)\d\d/$tmp1/;
  63.         push(@xml1,$templine);
  64.     };
  65. };
  66. my @xml2;
  67. while (my $line = <$xml2>) {
  68.     chomp $line;
  69.     if ($line =~ m/^\s{0,}\<param\slat/) {
  70.         my $templine = $line;
  71.         $templine =~ m/.*T\d\d\:\d\d\:(\d\d)Z.*/;
  72.         my $tmp1 = $1;
  73.         $tmp1 = $tmp1/10;
  74.         $tmp1 = floor($tmp1 + 0.5);
  75.         $tmp1 = $tmp1*10;
  76.         $templine =~ s/(?<=T\d\d\:\d\d\:)\d\d/$tmp1/;
  77.         push(@xml2,$templine);
  78.     };
  79. };
  80. my @xml3;
  81. while (my $line = <$xml3>) {
  82.     chomp $line;
  83.     if ($line =~ m/^\s{0,}\<param\slat/) {
  84.         my $templine = $line;
  85.         $templine =~ m/.*T\d\d\:\d\d\:(\d\d)Z.*/;
  86.         my $tmp1 = $1;
  87.         $tmp1 = $tmp1/10;
  88.         $tmp1 = floor($tmp1 + 0.5);
  89.         $tmp1 = $tmp1*10;
  90.         $templine =~ s/(?<=T\d\d\:\d\d\:)\d\d/$tmp1/;
  91.         push(@xml3,$templine);
  92.     };
  93. };
  94. print "Führe Sensordaten zu GPS Daten hinzu und erstelle XML Dateien\n";
  95. foreach my $xml (@xml2) {
  96.     $xml =~ m/.*(\d\d\d\d\-\d\d-\d\dT\d\d\:\d\d\:\d\d)Z.*/;
  97.     my $xmltime = $1;
  98.     $xmltime =~ s/T/ /;
  99.     my @xmltime = split(' ', $xmltime);
  100.     $xmltime =~ s/ \d\d.*//;
  101.     my @xmldate = split('-', $xmltime);
  102.     $xmltime = $xmldate[2] . "." . $xmldate[1] . "." . $xmldate[0] . " " . $xmltime[1];
  103.     foreach my $sensor (@sensor) {
  104.         my @split = split(';', $sensor);
  105.         #print "split $split[0] xmltime $xmltime\n";
  106.         if ($split[0] eq $xmltime) {
  107.             my $add = '<br>Temperatur ' . $split[4] . '"/>';
  108.             $xml =~ s/\&lt\;br\&gt\;\"\/\>$/$add/;
  109.             print $xmlout "$xml\n";
  110.             last;
  111.         };
  112.     };
  113. };
  114. print $xmlout "</params>";
  115. print "Fertig!";
Add Comment
Please, Sign In to add comment