

% Lies DSO-Dateien und stelle die Messwerte als Arrays zu
% Dateien 
% /home/hjh/homepr/geraete/etronik/messgeraete/dso2100/m220/A.dso
% /home/hjh/homepr/geraete/etronik/messgeraete/dso2100/m220/B.dso
% /home/hjh/homepr/geraete/etronik/messgeraete/dso2100/m220/Cal.dso
% /home/hjh/homepr/geraete/etronik/messgeraete/dso2100/

opt_plot = true % false
para_Dateiname ="D:\\homepr\\geraete\\etronik\\messgeraete\\dso2100\\m220\\CAL.dso"


znrBeginn = 1; % Starte von 1 ... 10098
znrEnde = 10100;	% Ende nach 2 ... 10100


starttime1 = starttime = time;
if ( 1 )
	% Fester Dateiname
	b = dlmread( para_Dateiname );
endif
if ( 0 )	% Moeglichkeit: Dateiname durch Dialog
	[fname, fpath, fltidx] = uigetfile ()	% Abfrage der Datei
	b = dlmread( [fpath , fname]);			% Einlesen der angewählten Datei
endif
printf( " %d Zeilen gelesen in %7.4fs\n", rows(b), time-starttime )
starttime = time;
fflush(stdout)

kan12 = b(22427)	% 0=Kein Kanal, 1=Nur Y1, 2=nur Y2, 3 = Y1 und Y2
if ( rem( kan12 , 2 ) == 1 )
	kan1 = true;		% 1 oder 3
else
	kan1 = false;
endif
if ( kan12 > 1 )
	kan2 = true;		% 2 oder 3
else
	kan2 = false;
endif

iN = 1 + znrEnde - znrBeginn;

ts = b(22408)	% Taktstufe  Taktstufe: 1=5ns, 2=10nS 3=20ns 4=50ns 5=100ns 6=200ns 7=0.5u 8=1u 9=2u 10=5us 11=10us 12=20us 13=50us 14=0.1ms 15=0.2ms 16=0.5ms 17=1ms 18=2ms 19=5ms 

tf=b(22444) % Zeitmasstab s/div


FK = 1000;
if ( rem(ts,3) == 1 )	% 5ns, 50ns, 500ns, 5 us
	FK = 1250;
endif

if ( kan1 )
	fy1 = b(22445); % Empfindlichkeit Y1
	ny1 = b(22430) -256; % Nullpunktverschiebung Y1
	y1 = b(znrBeginn:znrEnde);
	y1 += ny1;
	y1 *= fy1/32;
endif
if ( kan2 )
	fy2 = b(22446); % Empfindlichkeit Y2
	ny2 =  b(22431) -256; % Nullpunktverschiebung Y2
	y2 = b(10100+znrBeginn:10100+znrEnde);
	y2 += ny2;		% Die Nullpunktverschiebung
	y2 *= fy2/32;
endif


t = linspace(znrBeginn*tf/FK,znrEnde*tf/FK,iN);	% Die Zeitachse

printf( " %d Datenzeilen t,y1,y2 erzeugt in %7.4fs\n", iN, time-starttime )
starttime = time;
fflush(stdout)


if ( kan1 && !kan2 )
%	dlmwrite( "xxx_y1.csv", [t;y1]' )		% Export für Excel (Grafik)
	if opt_plot
		plot(t,y1) 				% Anzeigen der y1(t) - Grafik
%	print -deps xxx_y1.eps	% Abspeichern der Grafik in diese Datei als Encapsulated postscript (level 1, mono)
		print -dpng xxx_y1.png	% Abspeichern der y1(t)-Grafik in diese Datei als PNG-Datei
	endif
endif
if ( kan2 && !kan1 )
%	dlmwrite( "xxx_y2.csv", [t;y2]' )		% Export für Excel (Grafik)
	if opt_plot
		plot(t,y2)				% Anzeigen der y2(t) - Grafik
		print -dpng xxx_y2.png	% Abspeichern der y2(t)-Grafik in diese Datei als PNG-Datei
	endif
endif
if ( kan1 && kan2 )
%	dlmwrite( "xxx_y12.csv",  [t; y1; y2 ]' )	% Export für Excel (Grafik)
	if opt_plot
		plot(t,y1,t,y2)				% Anzeigen der y2(t) - Grafik
		print -dpng xxx_y12.png	% Abspeichern der y2(t)-Grafik in diese Datei als PNG-Datei
	endif
endif

printf("y1 und y2 sind fertig ")
printf( " %d Datenzeilen t,y1,y2 erzeugt in %7.4fs\n", iN, time-starttime )
starttime = time;
fflush(stdout)

fw1 = 131.0
nw1 = -0.049025
fw2 = 4.0
nw2 = -0.010478
w1 = (y1+nw1)*fw1;	% Spannnugen in Volt
w2 = (y2+nw2)*fw2;	% Strom in A

% m220/tvu3 2020-06-18 Siehe D:\homepr\geraete\etronik\messgeraete\dso2100\m220\Cal.dso
%                     $(HOME)/homepr/geraete/etronik/messgeraete/dso2100/m220/Cal.dso

dlmwrite( "xxx_yw12.csv",  [t'; y1; y2; w1; w2 ]' )	% Export für Excel (Grafik)

printf( " %d Datenzeilen t,y1,y2,w1,w2 geschrieben in %7.4fs\n", iN, time-starttime )
starttime = time;
fflush(stdout);

printf("Suche Nulldurchgaenge\n")
fflush(stdout);
% Suche Nulldurchgaenge
if w1(1) < 0 
	boben = false;
else
	boben = true;
endif
tp = [];
tn = [];
tkp = [];
tkn = [];
for k = 1:iN
	if boben
		if w1(k) < 0 
			boben = false;
			tp = [ tp t(k)];	% Zeitwert anfuegen
			tkp = [ tkp k];		% Indexwert anfuegen
fflush(stdout);
		endif
	else
		if w1(k) > 0 
			boben = true;
			tn = [ tn t(k)];	% Zeitwert anfuegen
			tkn = [ tkn k];		% Indexwert anfuegen
fflush(stdout);
		endif
	endif
endfor

printf( " %d Nulldurchgange gefunden in %7.4fs\n", columns(tkp), time-starttime )
printf( " Total %7.4fs\n", time-starttime1 )
starttime = time;
fflush(stdout)

printf( "Positive Nulldurchgaenge sind bei Index:\n" )
tkp
printf( "Positive Nulldurchgaenge sind bei Zeit[s]:\n" )
tp
printf( "Negative Nulldurchgaenge sind bei Index:\n" )
tkn
printf( "Negative Nulldurchgaenge sind bei Zeit[s]:\n" )
tn
fflush(stdout)

