Skip to content
Snippets Groups Projects
readTsgDataLabview.m 4.2 KiB
Newer Older
function [error] = readTsgDataLabview( hTsgGUI, filename  )
% 
% Fonction de lecture des fichiers TSG issus du programme
% d'acquisition LabView XXX
%
% [error] = rdtsglabview( Fichier )
%
% Input
% hTsgGUI ............ Handel to the main user interface
% filename ........... Data filename
%
% Output
% error .............. 1: OK - -1 : an error occured
%
% Liste des intitules des colonnes dans les entetes des fichiers Labview :
% Date
%     Pc Date  - RMC_Date - ZDA_Date
% Heure
%     Pc Time - RMC_Time - ZDA_Time - GLL_Time
% Position
%     RMC_Latmn - RMC_Lonmn - RMC_Latdec - RMC_Londec - 
%     GGA_Latdec - GGA_Londec - GLL_Latdec - GLL_Londec
% Mesures
%     SBE21_Temp1 - SBE21_Sal - SBE21_Cond - SBE21_Raw
% Vitesse et cap
%     RMC_Sog - RMC_Cog - 3026L_Cog - 3026L_Sog
% Autre
%     RMC_Status - GGA_Hog - VTG True Track - T - Magn Track - M -
%     Ground spd- N - Ground Spd - K - dd - tete - ttt


% Get the data from the application GUI
% -------------------------------------
tsg = getappdata( hTsgGUI, 'tsg_data');

% Display read file info on console
% ---------------------------------
fprintf('\nREAD_LABVIEW_FILE\n'); tic;

% Chaque colonne du fichier est separee par DELIMITER
% ---------------------------------------------------
DELIMITER = ',';
  
% Ouverture du fichier '.CSV'
% ---------------------------
fid = fopen( filename, 'r');

% Teste si le fichier existe
% --------------------------
if fid ~= -1
    
  % Choix des parametres qui seront utilises par TSG-QC
  % ColNo : structure des numeros de colonnes a conserver
  % ---------------------------------------------------
  [choix, ColNo, paraName, nPara] = choixparametres( fid, DELIMITER );
  
  if strcmp( choix, 'ok' ) == 1
    
    % Lecture et decodage du fichier TSG LabView. En sortie
    % ------------------------------------------
    [date, time, lat, lon, sst, sss, cond, condRaw, sog, cog] =...
                decodeficlabview( fid, DELIMITER, ColNo, paraName, nPara ); 

    % Nombre de lignes du fichier et allocation de memoire
    % ----------------------------------------------------
    nblig = length(sst);
  
    % Indice des lignes pour lesquelles les dates
    % ou les heures ne sont pas a NaN
    % -------------------------------------------
    noNaN = find( strcmp( date, 'NaN') == 0 & strcmp( time, 'NaN') == 0 );

    % Every variable are put in a structure
    % -------------------------------------
    blanc           = char(blanks(1)*ones(nblig,1));
    tsg.DAYD        = NaN*ones(nblig,1);
    tsg.DAYD(noNaN) = datenum(...
                    [char(date(noNaN)) blanc(noNaN) char(time(noNaN))],...
                    'dd/mm/yyyy HH:MM:SS');
                
    % save original date
    % ------------------
    tsg.DATE       = datestr(  tsg.DAYD, 'yyyymmddHHMMSS' );
    tsg.LATX       = lat;
    tsg.LONX       = lon;
    tsg.SSJT       = sst;
    tsg.SSPS       = sss;
    % Set active code to NOCONTROL
    % ----------------------------
    tsg.qc.active.Code = get(tsg.qc.hash, 'NO_CONTROL', 'code');
    
    % Set salinity QC (SSPS_QC) par NOCONTROL code
    % --------------------------------------------
    tsg.SSPS_QC    = tsg.qc.active.Code * ones(nblig,1);
    
    % populate tsg.file structure
    % ---------------------------
    tsg.file.name = filename;

    % Save the data in the application GUI
    % ------------------------------------
    setappdata( hTsgGUI, 'tsg_data', tsg );

    % Clear the Workspace
    % -------------------
    clear date time lat lon sst sss cond condRaw sog cog
    
  end  % fin de boucle if strcmp(choix,'yes')
    
  % Fermeture du fichier
  % --------------------
  fclose( fid );

  % Display time to read file on console
  % ------------------------------------
  t = toc; fprintf('...done (%6.2f sec).\n\n',t);

  error = 1;
  
else

  % Gestion d'erreur ouverture de fichier
  % -------------------------------------
  msg_error = ['TSG_LABVIEW file_lecture : Open file error : ' filename];
  warndlg( msg_error, 'LabView error dialog');
  sprintf('...cannot locate %s\n', filename);
  error = -1;
  return;
    
end