wtorek, 20 maja 2014

Analiza plików .txt z programu ScopeDAC

Analiza plików .txt z programu ScopeDAC

Przeglądanie długiego pomiaru w programie ScopeDAC jest dość kłopotliwe. Pliki .txt są dość duże, tak że programy typu Excel/OO Calc/Numbers sobie z nimi nie radzą (mój był wielkości 4MB - 131k linii czyli próbek), tzn. jakiekolwiek poprawki generowanego wykresu powodują, że program zamiera na dłuższą chwilę.

Konwersja pliku

Plik dostajemy w postaci tzw. CSV (Comma Separated Values), do analizy programem gnuplot potrzebny jest plik w którym wartości w każdej z linii oddzielone są odstępami lub tabulacjami. Dodatkowo gnuplot oczekuje wartości z kropką dziesiętną, a ScopeDAC używa przecinka. Wykorzystałem skrypt perl (comtospaces.pl):

#!/usr/bin/perl

$in = @ARGV[0] or die "nazwa pliku we\n";
$out = @ARGV[1] or die "nazwa pliku wy\n";

open IN, "<", $in or die "nie mozna otworzyc pliku we\n";
open OUT, ">", $out or die "nie mozna otworzyc pliku wy\n";

while($i = <IN>) {
    $i =~ tr/,/\t/;
    #$i =~ tr/./,/;
    print OUT $i;
}

close OUT;
close IN;

Przykładowe uruchomienie: $ perl comtospaces.pl ATR.txt ATR.dat

Usunięcie zbędnych linii z pliku

Do analizy w gnuplot niepotrzebne są nagłówki generowane przez ScopeDAT. Należy z pliku ATR.dat usunąć linie 1 do 3. Oraz przyglądnąć się dalszym liniom. W moim przypadku próbki od 0 do 40 zawierały błędny czas pomiaru (858.993). Te linie także usunąłem.

Wykres w gnuplot

Do wygenerowania wykresu potrzebny jest program gnuplot (najlepiej przygotowany dla środowiska graficznego, tzn. w ubuntu potrzebny jest pakiet gnuplot-qt). Po jego uruchomieniu generujemy wykres w następujący sposób:

$ gnuplot

    G N U P L O T
    Version 4.6 patchlevel 3    last modified 2013-04-12
    Build System: Linux x86_64

    Copyright (C) 1986-1993, 1998, 2004, 2007-2013
    Thomas Williams, Colin Kelley and many others

    gnuplot home:     http://www.gnuplot.info
    faq, bugs, etc:   type "help FAQ"
    immediate help:   type "help"  (plot window: hit 'h')

Terminal type set to 'wxt'
gnuplot> plot "ATR.dat" using 2:3 with lines title "1W", "ATR.dat" using 2:4 with lines title "AVR"

Tutaj należy się krótki komentarz. W moim przypadku plik .txt zawierał w pierwszej kolumnie numer próbki, w drugiej czas pomiaru, w trzeciej zrzut z linii 1-wire, w czwartej był to dodatkowy pin z mikrokontrolera, pokazujący co kontroler wystawia na magistralę 1-wire. Tak więc wykres składa się z dwóch linii łamanych, każda z nich pobrana jest z pliku ATR.dat i jako X brane są wartości z drugiej kolumny (czas próbki), a jako Y brane są odpowiednio wartości z trzeciej i czwartej kolumny (odpowiednio dla opisu w legendzie “1W” i “AVR”). W przypadku potrzeby zapisu wyniku do pliku można to wykonać następująco:

gnuplot> set terminal png size 20000,800
Terminal type set to 'png'
Options are 'nocrop font "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf,12" fontscale 1.0 size 20000,800 '
gnuplot> set output 'test.png'
gnuplot> plot "ATR.dat" using 2:3 with lines title "1W", "ATR.dat" using 2:4 with lines title "AVR"

Wynik zostanie zapisany w pliku test.png

Brak komentarzy:

Prześlij komentarz