% Control de un osciloscopio Tektronix de la serie TDS200 desde una PC via
% puerto serie. Ejemplo 2.

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

s = serial('COM1')          
set(s, 'BaudRate', 9600)    
set(s, 'Terminator', 'LF')  
pause on                    
disp(' Apretar cualquier tecla para continuar ')
pause 

                            
fopen(s)                    
fprintf(s,'*IDN?')
out = fscanf(s)             % Si la comunicacion se establece correctamente,
                            % se leera algo como: TEKTRONIX, TDS 210, 0, ... . 
                            
% Si eso no ocurre, verificar: las opciones COM1 / COM2, y los valores de 
% las variables "BaudRate" y "Terminator".

% Las opciones COM1 / COM2 dependen exclusivamente de la PC. Los otros dos
% valores deben consultarse en el "TDS200 Programmer Manual". 

% Tambien conviene verificar el estado del cable RS232 que comunica la PC
% con el osciloscopio. 

disp(' Apretar cualquier tecla para continuar ')
pause

% EJEMPLO DE MEDICION

% 1a) ESPECIFICAMOS que el acoplamiento de los canales 1 y 2 sea DC...
fprintf(s,'CH1:COUPling DC')
fprintf(s,'CH2:COUPling DC')
% 1b)  ...que se promedien 16 adquisiciones... 
fprintf(s,'ACQuire:MODe AVErage; NUMAVg 16')
% 1c)  ...que la escala horizontal sea de 10 ms/div... 
fprintf(s,'HORizontal:SECdiv .01')
% 1d) ...que las mediciones 1 y 2 sean el valor medio de los canales 1 y 2 
% respectivamente...
fprintf(s,'MEASU:MEAS1:TYPE MEAN')
fprintf(s,'MEASU:MEAS2:TYPE MEAN')

fprintf(s,'MEASU:MEAS1:SOURCE CH1')
fprintf(s,'MEASU:MEAS2:SOURCE CH2') 

disp(' Verificar las especificaciones y apretar cualquier tecla para continuar ')
pause



% INICIAMOS SERIE DE MEDICIONES
tecla = 'c';
i = 0;
tabla = [];
while ( (tecla ~=  't')  &  (tecla ~=  'T') )
    disp( ' Fijar la tension de salida de la fuente y luego oprimir ENTER ' )
    pause
    
    pause(3)    % Esperamos 3 seg para que se establice el sistema bajo 
                % estudio y el osciloscopio realice el promedio. Es 
                % exagerado... , insuficiente?
    
    % PREGUNTAMOS cual es el valor numerico de las mediciones 1 y 2.
    fprintf(s,'MEASU:MEAS1:VAL?')
    med1 = str2num(fscanf(s));
    fprintf(s,'MEASU:MEAS2:VAL?')
    med2 = str2num(fscanf(s));
    
    % Construimos la tabla de mediciones
    i = i + 1;
    tabla = [tabla ; i med1/1000 med2-med1]

    tecla = input('Entrar "c" para continuar midiendo, o "t" para terminar y grabar: ', 's');
end

% Grabamos el resultado de las mediciones en un archivo de texto llamado
% ejemplo2.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 ejemplo2.txt tabla -ASCII

% Cerramos la comunicacion (NO PASEN ESTO POR ALTO).
fclose(s);
delete(s);
clear s;

% Deshabilitamos tambien la funcion PAUSE.
pause off;

