%MATLAB Code for Serial Communication between Arduino and MATLAB
clear 
clc
%definování portù
%ultrazvuk
port_1=serial('COM7','BAUD', 115200);
%laser
port_2=serial('COM12','BAUD', 19200);
%totální stanice
port_3 = serial('COM11');
set(port_3,'BaudRate',19200,'DataBits',8,'StopBits',1,'Terminator','CR/LF')

%otevírání portù
fopen(port_1);
fopen(port_2);
fopen(port_3)
%tvorba souboru pro zápis
port_3.RecordDetail = 'verbose';
port_3.RecordName = 'mereni.txt';
record(port_3,'on')
port_3
port_1.RecordDetail = 'verbose';
port_1.RecordName = 'arduino.txt';
record(port_1,'on')
%otevírání laseru
fprintf(port_2,'O');
 laser_start= fgetl(port_2)
port_1

%cyklus pro mìøení (na jedno mìøení totální stanicí 5 mìøení snímaèi)
for j = 1:4
for i = 1:5
    fprintf(port_1,'GET/M/sonar[i].ping_cm()');
    
    tline= fgetl(port_1);
    fprintf(port_2,'D');
    laser= fgetl(port_2);

    a(j,i) =sscanf(tline,'%f%*f');
    b(j,i) =sscanf(tline,'%*f%f');
    c(j,i) =sscanf(laser,'%*[D: ]%f%*s%*f');
    
end
fprintf(port_3,'GET/M/WI31');
    
    total= fgetl(port_3);
    d(j) = sscanf(total,' %*[31..00+]%f');
% if j==1
%      i = 1:5;
% elseif j==2
%       i = 1:10;
% elseif j==3
%       i = 1:15;
% elseif j == 4
%       i = 1:20;
% end
end
%naètení dat do vektorù
ult_neupr = [a'/100]
ult_upr = [b'/50]
ls = [c']
ts = [d'/1000]

%vypnutí laseru
fprintf(port_2,'C');
%zavøení portù
fclose(port_1);
delete(port_1);
clear port_1;

fclose(port_2);
delete(port_2);
clear port_2;

fclose(port_3);
delete(port_3);
clear port_3;