% Programa Exemplo para Acquisiçao de Dados com o TDS 1002
% Laboratorio de Controle i - 1/2005
%
% Baseado no programa de acquisicao do Prof. Wallace C. Boaventura
%
% Autores: HP, Jonathan, Eduardo Mendes, Fernando Souza, Reinaldo Palhares
% Data: 14/03/2005


clc;

disp('Observacao: Deixar os dois canais do TDS 1002 ativos');

disp('Abrindo a COM1');

scom1 = serial('COM1')
set(scom1,'BaudRate',9600)
set(scom1,'Terminator','LF')
set(scom1,'Parity','none')
set(scom1,'FlowControl','hardware');
set(scom1,'InputBufferSize',50000);
fopen(scom1)
fprintf(scom1,'*IDN?')
out = fscanf(scom1)

disp('Configurando a porta para acquisicao de 2500 pontos.');

fprintf(scom1,'DATA:START 1');
fprintf(scom1,'DATA:STOP 2500');
fprintf(scom1,'DATA:ENCDG RPBINARY');
pause(0.1);

disp('Acquisicao de dados CH1');

fprintf(scom1,'DATA:SOURCE CH1');pause(0.1);
fprintf(scom1,'CH1:VOLTS?');pause(0.1);
res = fscanf(scom1); yvdiv = str2num(res);
fprintf(scom1,'CH1:POSITION?');pause(0.1);
ypos = str2num(fscanf(scom1));
ymax = (5-ypos)*yvdiv; ymin = (-5-ypos)*yvdiv;
ymult = 10*yvdiv/256;
fprintf(scom1,'HORIZONTAL:SCALE?');pause(0.1);
xmult = str2num(fscanf(scom1));
t = (0:2499)*(100*xmult/2500);

nbytes = scom1.bytesavailable;
if nbytes ~= 0
    onda = fread(scom1,scom1.bytesavailable,'uint8'); % Limpa Buffer
end

fprintf(scom1,'CURVE?');pause(0.5);
disp(sprintf('bytes = %g',scom1.bytesavailable));
while 1==1
    if scom1.bytesavailable == 2507
        onda = fread(scom1,2507,'uint8');
        break;
    else
        pause(0.1);
    end
end
y = (onda(7:2506)-128)*ymult - ypos*yvdiv;
disp(sprintf('bytes = %g',scom1.bytesavailable));
pause(0.1);
disp(sprintf('bytes = %g',scom1.bytesavailable));
pause(0.1);

disp('Acquisicao de dados - CH2');

fprintf(scom1,'DATA:SOURCE CH2');pause(0.1);
fprintf(scom1,'CH2:VOLTS?');pause(0.1);
res = fscanf(scom1); yvdiv2 = str2num(res);
fprintf(scom1,'CH2:POSITION?');pause(0.1);
ypos2 = str2num(fscanf(scom1));
ymax2 = (5-ypos2)*yvdiv2; ymin2 = (-5-ypos2)*yvdiv2;
ymult2 = 10*yvdiv2/256;

nbytes = scom1.bytesavailable;
if nbytes ~= 0
    onda = fread(scom1,scom1.bytesavailable,'uint8');
end

fprintf(scom1,'CURVE?');pause(0.5);
disp(sprintf('bytes = %g',scom1.bytesavailable));

while 1==1
    if scom1.bytesavailable == 2507
        onda = fread(scom1,2507,'uint8');
        break;
    else
        pause(0.1);
    end
end
y2 = (onda(7:2506)-128)*ymult2 - ypos2*yvdiv2;

disp(sprintf('bytes = %g',scom1.bytesavailable));
pause(0.1);
disp(sprintf('bytes = %g',scom1.bytesavailable));
pause(0.1);

disp('Plotando os dados');
disp('    CH 1 - Figura 1');
disp('    CH 2 - Figura 2');


figure(1);
plot(t,y);
grid on
axis([0 max(t) ymin ymax])
ylabel('Tensao CH1');
xlabel('tempo (s)');

figure(2);
plot(t,y2,'r');
grid on
axis([0 max(t) ymin2 ymax2])
ylabel('Tensao CH2');
xlabel('tempo (s)');

disp('Liberando a COM1'); 

fclose(scom1);
clear scom1;

