function [T,f,qmc]=pos_read_dlpos(file);
% Считывание данных POS, зарегистрированных на DLPOS
%       [T,f,qmc]=pos_read_dlpos(file);
%
% T     - сериальная дата
% f     - значение модуля в нТл
% qmc   - QMC в нТл
% file  - имя файла (если не в текущем каталоге, то с полным путем)
%
% Примечание: при считывании символ "-" заменяется на пробел. Заголовок с 
% символом ";" в начале строк пропускается

% формат файла данных:
%
% ; Base station data file
% ; Operator : ABSH
% ; Object   : ARTI
% ; Source   : POS
% ; Number   : 285
% ; FIELD   QMC  ST   DATE      TIME
% 56064461 00008 80 09-18-11 07:49:21,00
% 56064402 00007 80 09-18-11 07:49:26,00

% Возможный полевой формат
% 57593232 00011 80 02-13-12 09:46:53,05 0000000000 0000000000 OK
% 57596690 00011 80 02-13-12 09:47:17,50 0000000000 0000000001 OK
% 57595518 00011 80 02-13-12 09:47:36,90 0000000000 0000000002 OK

% 25.09.2011    - Хомутов С.Ю.
% 18.02.2012    - адаптация к полевому формату (с координатами)

fid=fopen(file,'rt');
while 1,                    % считываем заголовок
    str=fgetl(fid);
    if str==-1, break, end  % конец файла
    if ~isempty(findstr(str,'FIELD')), break, end  % конец заголовка
end

% формат записи в файле ниже заголовка
% "-" заменен на пробел, "," - заменена на "." 
if ~isempty(findstr(str,'LINE')) | ~isempty(findstr(str,'LAT'))  | ~isempty(findstr(str,'LB')), % длинный формат с координатами/пикетами
    dlpos_fmt='%f %f %s %d %d %d %2d:%2d:%f %f %f %s';
else
    dlpos_fmt='%f %f %s %d %d %d %2d:%2d:%f';
end

str=char(fread(fid));       % считываем остальное бинарно в символьную строку
fclose(fid);

str=strrep(str','-',' ')';  % заменяем "-" на пробел
str=strrep(str',',','.')';  % заменяем "," на "."

C=textscan(str,dlpos_fmt);  % считываем данные по формату

f=cell2mat(C(1))/1000;
qmc=cell2mat(C(2))/1000;
T=datenum(double(cell2mat(C(6)))+2000,double(cell2mat(C(4))),double(cell2mat(C(5))),...
          double(cell2mat(C(7))),double(cell2mat(C(8))),double(cell2mat(C(9))));
