fclose('all') % Close all open files
clear; clf; %vymaze vsechny promenne + vymaze obrazek
priorPorts=instrfind; %najde vsechna propojeni
delete(priorPorts); % zrusi vsechna pripoejni

PSoC=serial('COM7','BaudRate',57600); %Nastaveni serial prenosu, hlavne COM
set(PSoC,'Timeout',60); %cas, po ktery bude Matlab cekat na signal
fopen(PSoC); %cteni serial prenosu
firstRun=1; %pomocna promenna

NUMlohex=dec2hex(fread(PSoC,1));  % PSoC posila 16-bit hodnoty
NUMhihex=dec2hex(fread(PSoC,1));  % rozdele do dvou 8bit hodnot
                                   % prijmou se a prevededou do tvaru hex.
NUM=hex2dec([NUMhihex NUMlohex]) %informace pro Matlab o celkovem poctu mìøení

while(NUM>0)  
   
    Xlohex=dec2hex(fread(PSoC,1));  % PSoC posila 16-bit hodnoty
    Xhihex=dec2hex(fread(PSoC,1));  % rozdele do dvou 8bit hodnot
                                    % a prevedene do tvaru hex.
    X=hex2dec([Xhihex Xlohex])*10      % Napr 0xff atd.
                                    % Tyto hodnoty si Matlab
    Ylohex=dec2hex(fread(PSoC,1));  % zase spoji jako hex a prevede
    Yhihex=dec2hex(fread(PSoC,1));  % na dec hodnotu
    
    Y=hex2dec([Yhihex Ylohex])*10
    
    Zlohex=dec2hex(fread(PSoC,1));  
    Zhihex=dec2hex(fread(PSoC,1));  
    
    Z=hex2dec([Zhihex Zlohex])

    
    if(firstRun==1)
      fileID=fopen('UARTxData.txt', 'w'); 
      fileID=fopen('UARTxData.txt', 'a');
      fprintf(fileID, '%6d %6d %6d\r\n', X, Y, Z); %zapis do souboru
      pause(0.01);
      fclose(fileID);
        
    else
        fileID=fopen('UARTxData.txt', 'a');
        fprintf(fileID, '%6d %6d %6d\r\n', X, Y, Z); %zapis do souboru
        pause(0.01);
    end
    
    fid = fopen(['UARTxData.txt'],'r');
    Data = fscanf(fid,'%f',[3,inf]); 
    fclose(fid);

    whos Data; % display the dimension of Data
    Data=Data'; % row-wise - column-wise

    % demonstrate the structure and contents of Data.
    x=Data(size(Data,1),2); y=Data(size(Data,1),1); z=Data(size(Data,1),3);

  
figure(1) %%vykresleni grafu
plot3(Data(:,1),Data(:,2),Data(:,3),'.-'); %'.-' pøidá spojnice bodù
axis([0 400 0 400 0 100]) %nastaveni os
grid

    drawnow
    
    if(firstRun==1)
    view([-20 30]); grid on;

    firstRun=0;
    end
  NUM=NUM-1 %postupne ubyva az se program ukonci
  
  fopen('all') % otevre veskere otevrene soubory
  pause(0.01);
  fclose('all') % a zavre je (kvuli stabilite Matlabu)
  
end

x=Data(:,1); y=Data(:,2); z=Data(:,3) % na zaver se vykresli spojita plocha
[xx,yy]=meshgrid(0:5:400,0:5:400);
zz = griddata(x,y,z,xx,yy);
surf(xx,yy,zz)
axis([0 400 0 400 0 100])