GPS接收机总体设计——数据写入、捕获、跟踪、定位解算

1.总体流程图

GPS接收机总体设计——数据写入、捕获、跟踪、定位解算_第1张图片

2. 代码实现

disp ('Starting processing...');
settings=initSettings();%系统初始化
[fid, message] = fopen('.\GPS.bin', 'rb');%以二进制方式读写bin文件
if (fid >0)
    
    fseek(fid, settings.skipNumberOfBytes, 'bof');%移至文件开头的第settings.skipNumberOfBytes处
  
%% 捕获============================================================

    if ((settings.skipAcquisition == 0) || ~exist('acqResults', 'var'))
        
        % 每1023个CA码采样的数目
        samplesPerCode = round(settings.samplingFreq / ...
                           (settings.codeFreqBasis / settings.codeLength));
        
        % 读取11ms的数据用于捕获
        data = fread(fid, 11*samplesPerCode, settings.dataType)';
        longSignal=data;

        %--- 开始捕获-------------------------------------------
        disp ('   Acquiring satellites...');
        acqResults = acquisition(data, settings);%acquisition.m 捕获阶段程序

        plotAcquisition(acqResults);%plotAcquisition.m 捕获阶段绘图程序
    end

%% 初始化接收机跟踪通道参数 ============================

    % 所有没有捕获到的信号频率皆被置零
    if (any(acqResults.carrFreq))
        channel = preRun(acqResults, settings);%preRun.m按照捕获结果初始化跟踪通道
        showChannelStatus(channel, settings);%showChannelStatus.m在主屏幕上以表格方式打印通道状态
    else
        % 无卫星可跟踪时,退出程序
        disp('No GNSS signals detected, signal processing finished.');
        trackResults = [];
        return;%函数执行到此处结束
    end

%% 跟踪信号 =======================================================
    startTime = now;%now取系统现在时间
    disp (['   Tracking started at ', datestr(startTime)]);

    % 根据所给的数据跟踪卫星
    [trackResults, channel] = tracking(fid, channel, settings);%tracking.m跟踪阶段函数

%     % 关闭文件,避免文件丢失损坏
%     fclose(fid);
%     
%     disp(['   Tracking is over (elapsed time ', ...
%                                         datestr(now - startTime, 13), ')']) %解算跟踪需要的时间长短    

%     disp('   Saving Acq & Tracking results to file "trackingResults.mat"')
%     save('trackingResults', ...
%                       'trackResults', 'settings', 'acqResults', 'channel');  %保存这些变量                

% %% 定位解算 =========================================
%     disp('   Calculating navigation solutions...');
%     navSolutions = postNavigation(trackResults, settings);%导航解算
% 
%     disp('   Processing is complete for this data block');
% 
% %% 结果绘图阶段 ===================================================
%     disp ('   Ploting results...');
%     if settings.plotTracking %选择是否画图
%         plotTracking(1:settings.numberOfChannels, trackResults, settings);%plotTracking.m 绘制跟踪结果
%     end
% 
%     plotNavigation(navSolutions, settings);%plotNavigation.m绘制导航结果
% 
%     disp('Post processing of the signal is over.');
% 
% else
%     % 打开文件错误时显示“无法读入文件”
%     error('Unable to read file %s: %s.', settings.fileName, message);
 end 

 

你可能感兴趣的:(GPS接收机总体设计——数据写入、捕获、跟踪、定位解算)