Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- #Filtert alle Messwerte aus der CSV Datei heraus und trennt sie von Spannungsangaben der Batterie
- #use strict;
- #use warnings;
- #use diagnostics;
- use POSIX (floor);
- my $srcpath = 'source.txt'; #Pfad zur Temperaturlogger CSV Datei
- my $outpath = 'out.txt'; #Pfad zur Ausgabe
- my $xml1path = 'xml1.xml'; #Pfad zur ersten XML Datei
- my $xml2path = 'xml2.xml'; #Pfad zur zweiten XML Datei
- my $xml3path = 'xml3.xml'; #Pfad zur zweiten XML Datei
- my $xmloutpath = 'xmlout.xml'; #Pfad zur zweiten XML Datei
- my $regex = qr/\d\d\.\d\d.\d\d\d\d\s(\d{2}\:){2}\d\d\,721\;(.{1,6};){5}/;
- my $regex2 = qr/(\d{2}\:){2}\d\d/;
- print "Bereinige GPS Datenliste und runde Zeitstempel\n";
- open my $src, '<', $srcpath or die "Cant open File: $!";
- my @sensor;
- while (my $line = <$src>) {
- chomp $line;
- #Ausfiltern aller unnützen Daten sowie der Spannungsangabe der Batterie
- if ($line =~ m/^($regex)/) {
- #löschen der ",721"
- my $templine = $1;
- $templine =~ s/\,721//i;
- #Auf- und Abrunden der Zeitstempel
- $templine =~ m/($regex2)/;
- my $tmp1;
- my $tmp2;
- $tmp1 = $1;
- $tmp1 =~ m/(\d)\z/;
- $tmp2 = $1;
- if ($tmp2 <5) {
- $tmp1 =~ s/\d\z/0/;
- $templine =~ s/$regex2/$tmp1/;
- } else {
- $tmp1 =~ s/\d\z/5/;
- $templine =~ s/$regex2/$tmp1/;
- };
- #print "$templine\n";
- push(@sensor, $templine);
- };
- };
- print "Bereinige Sensordaten und runde Zeitstempel\n";
- #Bearbeitung der XML Dateien (Runden von Zeitstempeln)
- open my $xml1, '<', $xml1path or die "Cant open File: $!";
- open my $xml2, '<', $xml2path or die "Cant open File: $!";
- open my $xml3, '<', $xml3path or die "Cant open File: $!";
- open my $xmlout, '>', $xmloutpath or die "Cant open File: $!";
- print $xmlout "<params>\n";
- my @xml1;
- while (my $line = <$xml1>) {
- chomp $line;
- if ($line =~ m/^\s{0,}\<param\slat/) {
- my $templine = $line;
- $templine =~ m/.*T\d\d\:\d\d\:(\d\d)Z.*/;
- my $tmp1 = $1;
- $tmp1 = $tmp1/10;
- $tmp1 = floor($tmp1 + 0.5);
- $tmp1 = $tmp1*10;
- $templine =~ s/(?<=T\d\d\:\d\d\:)\d\d/$tmp1/;
- push(@xml1,$templine);
- };
- };
- my @xml2;
- while (my $line = <$xml2>) {
- chomp $line;
- if ($line =~ m/^\s{0,}\<param\slat/) {
- my $templine = $line;
- $templine =~ m/.*T\d\d\:\d\d\:(\d\d)Z.*/;
- my $tmp1 = $1;
- $tmp1 = $tmp1/10;
- $tmp1 = floor($tmp1 + 0.5);
- $tmp1 = $tmp1*10;
- $templine =~ s/(?<=T\d\d\:\d\d\:)\d\d/$tmp1/;
- push(@xml2,$templine);
- };
- };
- my @xml3;
- while (my $line = <$xml3>) {
- chomp $line;
- if ($line =~ m/^\s{0,}\<param\slat/) {
- my $templine = $line;
- $templine =~ m/.*T\d\d\:\d\d\:(\d\d)Z.*/;
- my $tmp1 = $1;
- $tmp1 = $tmp1/10;
- $tmp1 = floor($tmp1 + 0.5);
- $tmp1 = $tmp1*10;
- $templine =~ s/(?<=T\d\d\:\d\d\:)\d\d/$tmp1/;
- push(@xml3,$templine);
- };
- };
- print "Führe Sensordaten zu GPS Daten hinzu und erstelle XML Dateien\n";
- foreach my $xml (@xml2) {
- $xml =~ m/.*(\d\d\d\d\-\d\d-\d\dT\d\d\:\d\d\:\d\d)Z.*/;
- my $xmltime = $1;
- $xmltime =~ s/T/ /;
- my @xmltime = split(' ', $xmltime);
- $xmltime =~ s/ \d\d.*//;
- my @xmldate = split('-', $xmltime);
- $xmltime = $xmldate[2] . "." . $xmldate[1] . "." . $xmldate[0] . " " . $xmltime[1];
- foreach my $sensor (@sensor) {
- my @split = split(';', $sensor);
- #print "split $split[0] xmltime $xmltime\n";
- if ($split[0] eq $xmltime) {
- my $add = '<br>Temperatur ' . $split[4] . '"/>';
- $xml =~ s/\<\;br\>\;\"\/\>$/$add/;
- print $xmlout "$xml\n";
- last;
- };
- };
- };
- print $xmlout "</params>";
- print "Fertig!";
Add Comment
Please, Sign In to add comment