%% Iniciar comunicacion serial
s = serial('COM3','BaudRate',9600) 
fopen(s)


%% Ejecutar algun protocolo experimental

% Lineas Utiles
% =============

% s.BytesAvailable       > chequear si hay algo en el puerto para ser leido
% r = fscanf(s)          > leer puerto
% try;fprintf(s,'su0900');end  > escribir en puerto (notar try y end es por
% error en drivers de la fuente)


% 
% while s.BytesAvailable % limpiar buffer del puerto
%     r = fscanf(s)
% end

flushinput(s)
V = 0:0.5:12;
I = nan(size(V));

disp('Ajustando la corriente maxima')
try; fprintf(s,'si0950');end  % setear la corriente maxima
r = fscanf(s) % leer el OK


vtemp = sprintf('%04d',V(1)*100);
try; fprintf(s,['su' vtemp]);end  % setear primer el voltaje
disp('Ajustando el primer voltaje')
r = fscanf(s) % leer el OK


try; fprintf(s,'o1');end  % enciendo la fuente
disp('COMIENZO DEL EXPERIMENTO')
r = fscanf(s); % leer el OK

for i = 1:length(V)
    vtemp = sprintf('%04d',V(i)*100);
    try; fprintf(s,['su' vtemp]);end  % setear el voltaje
    r = fscanf(s); % leer el OK
    pause(6)
    try; fprintf(s,'rs');end    
    r = str2double(fscanf(s)); % leer estado CC o CV
    if r == 16;
        disp('Paro de medir, LIMITADO EN CORRIENTE')
        try; fprintf(s,'o0');end  % Apagamos la alimentación
        break % dejar de medir si pasa a estar en CC
    end
    try; fprintf(s,'ra');end
    r = fscanf(s); % leer la corriente
    I(i) = str2double(r)/1000;
end

try; fprintf(s,'o0');end  % apago la fuente



%% cerrar puerto
fclose(s)
delete s
clear s