function acquire(lydlab,numChan,triggering,sampleFreq, duration,saveFolder)

% ACQUIRE er en funksjon for å ta opp data fra en DAQ. Programmet tar fire
% argumenter lab, numChan, triggering, sampleFreq og saveFolder.
% - lydlab: en string som bestemmer om det er lydbølgelab (true) eller
%           vannbølgelab (false)
% - numChan: antall kanaler som det skal måles på (1 eller 2)
% - triggering: om datainnsamlingen skal trigges (true eller false)
%               NB: true forutsetter at det er 2 kanaler som det tas opp på
% - sampleFreq: hvor ofte det skal måles i Hz (50000 eller 200)
% - duration: hvor lenge det skal måles i sekunder (0.02 eller 5) 
% - saveFolder: hvor dataene skal lagres. Denne bør være tom, og
%               forskjellig mellom hver gang funksjonen kjøres
%
% Eksempel på bruk (for lydbølgelab) 
%  acquire(true,2,true,50000,0.02,'D:\Documents and Settings\localuser\Desktop\Data1')
%
% Skrevet av Pål Ellingsen, v 07.09.2012
% delvis bassert på oppsett av Iver Bakken Sperstad  

fortsett = true; 

while fortsett % for å ta flere målinger på rad
    
    %%%%%%%%Oppsett av DAQ (Data acquisition systems)%%%%%%%%%%%%%%%%%%%%
    try % Bruker try catch for å finne rett enhet
        AI=analoginput('nidaq','Dev3');
    catch exception
        try
            AI=analoginput('nidaq','Dev2');
        catch exception2
            AI=analoginput('nidaq','Dev1');
        end
    end
    %identifiserer "device"(Et National Instrument datainnsamlingkort (DAQ))

    set(AI,'InputType','Differential'); 
    %spesifiserer at det skal måles differesielt(spenningen mellom to ledninger)

    Chan=addchannel(AI,1:(numChan+triggering)); 
    % Antall kanaler som logges pluss en eventuell trigger kanal

    AI.Channel.InputRange=[-5 5];
    %spesifiserer måleområdet; mellom -1.5 og 1.5 V

    set(AI,'SampleRate',sampleFreq);
    %setter samplingsrate

    sampleFreq=get(AI,'Samplerate');
    % henter ut hva det virkelige samplingsraten er
    set(AI,'SamplesPerTrigger',duration*sampleFreq);
        %maskiner avsetter plass til datastrengen 
        
    if triggering % setter opp triggering hvis det er ønsket
        
        set(AI,'TriggerChannel',Chan(3))
        set(AI,'TriggerType','software')
        set(AI,'TriggerCondition','Rising')
        set(AI,'TriggerConditionValue',0.00)
        start(AI); % starter opptak

    else % manuell triggering
        set(AI,'TriggerType','Manual');
        start(AI); % starter opptak
        trigger(AI) % trigger opptak 
    end

    data=getdata(AI);
    %dette er datastrengen

    delete(AI); % sletter  
    clear AI;

    %%%%%%%% Databehandling %%%%%%%%%%%%%%%%%%

    s1=data(:,1:numChan); % lager en vektor for hver del av dataen

    n=1:length(data);
    tid=n./sampleFreq;
    
    %samplingstidspunktene bergnes

    figure(1) % plotter den målte dataene
    clf(1)
    plot(tid,s1(:,1),'b')
    if numChan >1
        hold on;
        plot(tid,s1(:,2),'r')
        hold off;
        legend('Channel 1','Channel 2');
	xlabel('Tid (s)')
	ylabel('Spenning (V)')
    end

    filename = ['\',datestr(now,'HH_MM_SS'), '_samp_',num2str(sampleFreq),...
		'_dur_',strrep(num2str(duration),'.','_')];
    % lager et filnavn (blir noe som 15_45_samp_50000_dur_0.02

    
    if numChan ==1
        y1=fft(s1(:,1));

        % det gjøres en Fourieromvending av signalet
        n1=length(s1(:,1));

        %finner lengden av datastrengen
        abs1=y1(1:n1/2).*conj(y1(1:n1/2));

        %regner ut absoluttverdien av den Fourieromvendte (halve lengden)
        f1=(0:(n1/2-1))*(sampleFreq/n1);

        %beregner tilhørende frekvenser

        figure(2)
        clf(2)
        plot(f1,abs1) 
        xlabel('f (Hz)')
        title('FFT')
        %frekvensspekteret plottes
    end

    if lydlab && not(triggering) && numChan~=1 % for å lese inn posisjon av mikrofon
       mic1 = input('Posisjon av mikrofon 1: ');
       mic2 = input('Posisjon av mikrofon 2: ');
       filename = [filename, '_mic1_',num2str(mic1),'_mic2_',num2str(mic2)]; 
	% legger til x1 og x2 til filnavn
	elseif not(lydlab) % For å lese inn spenning
	   V = input('Spenning: ');
	   filename = [filename, '_spenning_',num2str(V)]; 
    end 
    
    clear Chan exception
    
    save([saveFolder,filename,'.mat'])
    % lagrer alle variablene i en mat fil
    
    igjen = input('Ny måling med samme parametre? [y]','s');
    if isempty(igjen) ||    isequal(igjen,'y')
    else
        fortsett = false;
    end
end
    
end


