%% Control de osciloscopios Tektronix TBS1052B-EDU 

% Se realiza desde una PC via puerto USB. Ejemplo basico.

% Para mas informacion consultar el manual: "TBS1000-EDU Programmer Manual" 
% que se encuentra en la pagina web de Tektronix y en la de la materia. 


pause on                    % Habilitamos la funcion PAUSE (permite pausar 
                            % la ejecucion del programa para ver el 
                            % resultado de cada bloque de instrucciones 
                            % de a uno por vez).
disp(' Apretar cualquier tecla para continuar ')    % Envia un mensaje 
                            % explicativo a la pantalla. 
pause                       % Efecua la pausa.

if(exist('osc') == 1)
    % Si la comunicacion ya esta abierta, NO LA ABRO NUEVAMENTE.
    disp('La comunicacion ya esta abierta')
else
    % Si el canal de comunicacion aun no esta abiero, lo DEFINO ahora. 
    % Uso un puerto USB de la PC y el protocolo denominado: 
    % Virtual Instrument Software Architecture (VISA). 
    
    osc = visa('ni','USB0::0x0699::0x0368::C017059::INSTR')
    
    % Finalmente ABRO la comunicacion con el instrumento.
    
    fopen(osc);
end

% Ahora le pido al osciloscopio algo elemental: que se identifique. 
% Si da error, la comunicacion no esta correctamente establecida y carece 
%   de sentido continuar ejecutando el resto del programa.

fprintf(osc,'*IDN?')    % Pregunta la identificacion.       
ID = fscanf(osc)        % Escribe la identificacion en la pantalla.
   
disp(' Apretar cualquier tecla para continuar ')
pause

% EJEMPLOS DE COMUNICACION

%% 1) PREGUNTAMOS el modo en que esta acoplando el canal 1.
fprintf(osc,'CH1:COUPling?')
out = fscanf(osc)

disp(' Apretar cualquier tecla para continuar (Coupling?) ')
pause

%% 2) ESPECIFICAMOS que el acoplamiento del canal 2 (CH2) sea DC 
% (CC en castellano).

fprintf(osc,'CH2:COUPling DC')  % El canal 2 queda acoplado en DC indepen-
                                % dientemente del acoplamiento que tuviese
                                % antes de ejecutar la instruccion. 
disp(' Apretar cualquier tecla para continuar (Acoplo CH2 en DC)')
pause

%% 3) PREGUNTAMOS cual es el valor numerico de la medicion 3.
%fprintf(out,'MEASU:MEAS3:VAL?')
%out = fscanf(out)

%disp(' Apretar cualquier tecla para continuar ')
%pause
  
%% 5) ESPECIFICAMOS que la fuente (SOURCE) de la medicion 4 sea el canal 2, 
% y que ademas, la medicion consista en el valor pico a pico.
fprintf(osc,'MEASU:MEAS4:SOURCE CH2') 

pause(1)

fprintf(osc,'MEASU:MEAS4:TYPE PK2pk ')

disp(' Apretar cualquier tecla para continuar PK2pk ')
pause 

pause(1) 

%% 6) PREGUNTAMOS cual es el valor numerico de la medicion 4.
fprintf(osc,'MEASU:MEAS4:VAL?') 
medicion4 = str2num(fscanf(osc))

disp(' Apretar cualquier tecla para continuar ')
pause

%% 7) Grabamos el resultado de la medicion 4 en un archivo de texto llamado
% medicion.txt. No es necesario que tal archivo exista: si no existe, lo
% crea en el directorio de trabajo; si existe en dicho directorio, lo 
% sobreescribe.

save medicion.txt medicion4 -ASCII

%% 8) Cerramos la comunicacion (NO PASEN ESTO POR ALTO).
%fclose(osc)
%delete(osc)
%clear osc

%% 9) Deshabilitamos tambien la funcion PAUSE.

pause off

