% Funzione che ricostruisce la tipologia di nodi presenti % NodoRSNLink ad esempio contiene numero del nodo e profondità per tutti i % nodi di questo tipo % idTool rappresenta l'identificativo con cui sono definite le % installazioni su DB, serve più avanti nell'elaborazione % idNode scrive gli identificativi dei nodi del DB. E' un output di % controllo function [idTool,NodoRSNLink,NodoSS,NodoRSNLinkHR,NodoRSNLinkHR3D,NodoLoadLink,... NodoTriggerLink,NodoGflowLink,NodoGshockLink,NodoDebrisLink] = tipologiaNodi(... DTcatena,unitID,conn,FileName) %% Informazioni e credenziali relative al DataBase da leggere fileID = fopen(FileName,'a'); fmt = '%s \r'; text = 'tipologiaNodi function started'; fprintf(fileID,fmt,text); %% A partire dal nome della catena, risalgo all'identificativo con cui è % definita nel Database (mi serve successivamente) comando = ['select id from tools where name = ''' DTcatena ''' and unit_id = ''' num2str(unitID) ''' ']; idTool = num2str(cell2mat(fetch(conn,comando))); % leggo e converto in stringa %% RSN Link % carico le informazioni relative al numero e alla profondità per RSN LINK comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 38 order by num']; Leggo = fetch(conn,comando); [rL,cL] = size(Leggo); if rL <= 1 && cL <= 1 textRSN = 'There are no RSN Link; '; NodoRSNLink = []; nodoRSN = 0; % mi serve nei RSN Link HR3D (SVILUPPO FUTURO?) else nodoRSN = 1; % mi serve nei RSN Link HR3D (SVILUPPO FUTURO?) depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('RSN Link'); end NodoRSNLink = [nome Leggo(:,1) depth Leggo(:,3)]; textRSN = ['There are ',num2str(rL),' RSN Link nodes; ']; end fprintf(fileID,fmt,textRSN); %% Shock Sensor % carico le informazioni relative al numero e alla profondità per SHOCK SENSOR comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 54 order by num']; Leggo = fetch(conn,comando); [rL,cL] = size(Leggo); if rL <= 1 && cL <= 1 textSS = 'There are no Shock Sensor; '; NodoSS = []; else depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('Shock Sensor'); end NodoSS = [nome Leggo(:,1) depth Leggo(:,3)]; textSS = ['There are ',num2str(rL),' Shock Sensor nodes; ']; end fprintf(fileID,fmt,textSS); %% RSN Link HR % carico le informazioni relative al numero e alla profondità per % RSN LINK HR comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 39 order by num']; Leggo = fetch(conn,comando); [rL,cL] = size(Leggo); if rL <= 1 && cL <= 1 textRSNHR = 'There are not RSN HR Link; '; NodoRSNLinkHR = []; nodoRSNHR = 0; % mi serve nei RSN Link HR3D (SVILUPPO FUTURO?) else nodoRSNHR = 1; % mi serve nei RSN Link HR3D (SVILUPPO FUTURO?) depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('RSN Link HR'); end NodoRSNLinkHR = [nome Leggo(:,1) depth Leggo(:,3)]; textRSNHR = ['There are ',num2str(rL),' RSN Link HR nodes; ']; end fprintf(fileID,fmt,textRSNHR); % confrontando le profondità di RSN Link e RSN Link HR riconosco i RSN LINK HR 3D if nodoRSN == 1 && nodoRSNHR == 1 [rRSN,~] = size(NodoRSNLink); [rRSNHR,~] = size(NodoRSNLinkHR); NodoRSNLinkHR3Dwork = cell(rRSN,4); % creo matrice di zeri p=1; Control = 0; for i=1:rRSN for j=1:rRSNHR if cell2mat(NodoRSNLink(i,3)) == cell2mat(NodoRSNLinkHR(j,3)) prof = NodoRSNLink(i,3); nome = cellstr('RSN Link HR 3D'); % il numero nodo del RSN Link lo faccio diventare il numero nodo del RSN Link HR3D num = NodoRSNLink(i,2); num2 = NodoRSNLinkHR(j,2); Leggo = [nome,num,num2,prof]; NodoRSNLinkHR3Dwork(p,:) = Leggo; p = p+1; Control = 1; break end end end % elimino gli zeri in più q = 1; rL = 0; [s,~] = size(NodoRSNLinkHR3Dwork); a = 1; while a == 1 if q > s a = 0; else if strcmp(cell2mat(NodoRSNLinkHR3Dwork(q,1)),'RSN Link HR 3D') rL = 1+rL; % ultima riga con dati che non siano celle vuote end end q = q+1; end if Control == 1 NodoRSNLinkHR3D = NodoRSNLinkHR3Dwork(1:rL,:); elseif Control == 0 NodoRSNLinkHR3D = []; end textRSNHR3D = ['There are ',num2str(rL),' RSN Link HR 3D nodes; ']; else textRSNHR3D = 'There are no RSN Link HR 3D; '; NodoRSNLinkHR3D = []; end fprintf(fileID,fmt,textRSNHR3D); %% Load Link % carico le informazioni relative al numero e alla profondità per LOAD LINK comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 15 order by num']; curs = exec(conn,comando); curs = fetch(curs); Leggo = curs.Data; [rL,cL] = size(Leggo); if rL == 1 && cL == 1 textLL = 'There are not Load Link; '; NodoLoadLink = []; else depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('Load Link'); end NodoLoadLink = [nome Leggo(:,1) depth Leggo(:,3)]; % inverto la matrice Nodi (il primo nodo è il più profondo) textLL = ['There are ',num2str(rL),' Load Link nodes; ']; end fprintf(fileID,fmt,textLL); %% Trigger Link % carico le informazioni relative al numero e alla profondità per TRIGGER LINK comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 40 order by num']; curs = exec(conn,comando); curs = fetch(curs); Leggo = curs.Data; [rL,cL] = size(Leggo); if rL == 1 && cL == 1 textTrL = 'There are not Trigger Link; '; NodoTriggerLink = []; else depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('Trigger Link'); end NodoTriggerLink = [nome Leggo(:,1) depth Leggo(:,3)]; % inverto la matrice Nodi (il primo nodo è il più profondo) textTrL = ['There are ',num2str(rL),' Trigger Link nodes; ']; end fprintf(fileID,fmt,textTrL); %% G-Flow Link comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 48 order by num']; curs = exec(conn,comando); curs = fetch(curs); Leggo = curs.Data; [rL,cL] = size(Leggo); if rL == 1 && cL == 1 textGFL = 'There are not G-Flow Link; '; NodoGflowLink = []; else depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('G-Flow Link'); end NodoGflowLink = [nome Leggo(:,1) depth Leggo(:,3)]; % inverto la matrice Nodi (il primo nodo è il più profondo) textGFL = ['There are ',num2str(rL),' G-Flow Link nodes; ']; end fprintf(fileID,fmt,textGFL); %% G-Shock Link comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 50 order by num']; curs = exec(conn,comando); curs = fetch(curs); Leggo = curs.Data; [rL,cL] = size(Leggo); if rL == 1 && cL == 1 textGS = 'There are not G-Shock Link; '; NodoGshockLink = []; else depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('G-Shock Link'); end NodoGshockLink = [nome Leggo(:,1) depth Leggo(:,3)]; % inverto la matrice Nodi (il primo nodo è il più profondo) textGS = ['There are ',num2str(rL),' G-Shock Link nodes; ']; end fprintf(fileID,fmt,textGS); %% Debris Link comando = ['select num, depth, measurment from nodes where tool_id = ''' idTool ''' and nodetype_id = 49 order by num']; curs = exec(conn,comando); curs = fetch(curs); Leggo = curs.Data; [rL,cL] = size(Leggo); if rL == 1 && cL == 1 textDL = 'There are not Debris Link; '; NodoDebrisLink = []; else depth = cell2mat(Leggo(:,2)); depth = num2cell(depth); nome = cell(rL,1); for i=1:rL nome(i,1) = cellstr('Debris Link'); end NodoDebrisLink = [nome Leggo(:,1) depth Leggo(:,3)]; % inverto la matrice Nodi (il primo nodo è il più profondo) textDL = ['There are ',num2str(rL),' Debris Link nodes; ']; end fprintf(fileID,fmt,textDL); text = 'Nodes defined correctly and tipologiaNodi function closed'; fprintf(fileID,fmt,text); fclose(fileID); end