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

% 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')          % Se establece que la comunicacion sera a 
                            % traves del puerto serie COM1. Tambien podria 
                            % ser COM2. (Hay que probar con esta ultima 
                            % si COM1 falla).
                            
set(s, 'BaudRate', 9600)    % Se especifican la velocidad de comunicacion y
set(s, 'Terminator', 'LF')  % el identificador de fin de linea de comandos. 
                            % Sendos valores deben coincidir con los
                            % aceptados por el instrumento. 

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.

                            
fopen(s)                    % Se abre la comunicacion.
fprintf(s,'*IDN?')          % Se pregunta por la identificacion del instru- 
                            % mento, y queda almacenada en la variable s.
out = fscanf(s)             % Se envia la respuesta a la pantalla de la PC, 
                            % a traves de la variable out.
                            % 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

% EJEMPLOS DE COMUNICACION

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

disp(' Apretar cualquier tecla para continuar ')
pause

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

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

disp(' Apretar cualquier tecla para continuar ')
pause

% 4) ESPECIFICAMOS que la medicion 2 sea: valor pico a pico.
fprintf(s,'MEASU:MEAS2:TYPE PK2PK')

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 medio.
fprintf(s,'MEASU:MEAS4:SOURCE CH2') 
fprintf(s,'MEASU:MEAS4:TYPE MEAN')

disp(' Apretar cualquier tecla para continuar ')
pause

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

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(s)
delete(s)
clear s

% 9) Deshabilitamos tambien la funcion PAUSE.
pause off

