⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setsettings.m

📁 ASoftwareDefinedGPS&GalileoReceiver一书的matlab源码。
💻 M
📖 第 1 页 / 共 2 页
字号:
            % Exclude satellite from the list
            settings.acqSatelliteList = ...
                                  setdiff(settings.acqSatelliteList, PRN);
        end
    end

    %--- Acquisition parameters -------------------------------------------
    settings.acqSearchBand     = edit2double(handles.editAcqSearchBand);
    settings.acqThreshold      = edit2double(handles.editAcqThreshold);
    settings.skipAcquisition   = getCheckbox(handles.checkboxSkipAcquisition);    
    
    %--- Tracking ---------------------------------------------------------
    settings.dllCorrelatorSpacing = edit2double(handles.editDllCorrelatorSpacing);
    settings.dllDampingRatio   = edit2double(handles.editDllDampingRatio);
    settings.dllNoiseBandwidth = edit2double(handles.editDllNoiseBandwidth);
    settings.pllDampingRatio   = edit2double(handles.editPllDampingRatio);
    settings.pllNoiseBandwidth = edit2double(handles.editPllNoiseBandwidth);
       
    %--- Nav solutions ----------------------------------------------------
    settings.elevationMask      = edit2double(handles.editElevationMask);
    settings.navSolPeriod       = edit2double(handles.editNavSolPeriod);
    settings.useTropCorr        = getCheckbox(handles.checkboxUseTropCorr);
    settings.truePosition.E     = edit2double(handles.editUtmE);
    settings.truePosition.N     = edit2double(handles.editUtmN);
    settings.truePosition.U     = edit2double(handles.editUtmU);
    
    %--- Plotting ---------------------------------------------------------    
    settings.plotTracking       = getCheckbox(handles.checkboxPlotTracking);

catch
    %Please read the Matlab help for mo details on TRY, CATCH and ERROR
    %commands. 
    
    %--- Read error information -------------------------------------------
    e = lasterror;
    
    %If this error caused by bad input 
    if strcmp(e.identifier, 'setSettings:badInput')
        % then do not save settings, return an error indication 
        error = 1;
    else
        % Not our error, this error must be handled/reported in the system 
        rethrow(e);
    end    
end

%@@@ Function loads the settings into the GUI @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function loadSettings(handles)

%--- Signal properties related fields -------------------------------------
set(handles.editFileName, 'String', handles.settings.fileName);
set(handles.editNumberOfChannels, 'String', num2str(handles.settings.numberOfChannels));
set(handles.editSkipNumberOfBytes, 'String', num2str(handles.settings.skipNumberOfBytes));
set(handles.editMsToProcess, 'String', num2str(handles.settings.msToProcess));
set(handles.editIF, 'String', num2str(handles.settings.IF));
set(handles.editSamplingFreq, 'String', num2str(handles.settings.samplingFreq ));
set(handles.editDataType, 'String', handles.settings.dataType);

%--- Satellite PRN numbers ------------------------------------------------
for PRN = 1:32
    % If the PRN number is in the list
    if ismember(PRN, handles.settings.acqSatelliteList)
        % then set the checkbox to "checked" state
        setCheckbox(getfield(handles, ['checkboxPRN', num2str(PRN)]), 1);
    else
        % set the checkbox to "unchecked" state
        setCheckbox(getfield(handles, ['checkboxPRN', num2str(PRN)]), 0);
    end
end

%--- Acquisition parameters -------------------------------------------
set(handles.editAcqSearchBand, 'String', num2str(handles.settings.acqSearchBand));
set(handles.editAcqThreshold, 'String', num2str(handles.settings.acqThreshold));
setCheckbox(handles.checkboxSkipAcquisition, handles.settings.skipAcquisition);

%--- Tracking ---------------------------------------------------------
set(handles.editDllCorrelatorSpacing, 'String', num2str(handles.settings.dllCorrelatorSpacing));
set(handles.editDllDampingRatio, 'String', num2str(handles.settings.dllDampingRatio));
set(handles.editDllNoiseBandwidth, 'String', num2str(handles.settings.dllNoiseBandwidth));
set(handles.editPllDampingRatio, 'String', num2str(handles.settings.pllDampingRatio));
set(handles.editPllNoiseBandwidth, 'String', num2str(handles.settings.pllNoiseBandwidth));

%--- Nav solutions --------------------------------------------------------
set(handles.editElevationMask, 'String', num2str(handles.settings.elevationMask));
set(handles.editNavSolPeriod, 'String', num2str(handles.settings.navSolPeriod));
setCheckbox(handles.checkboxUseTropCorr, handles.settings.useTropCorr);
set(handles.editUtmE, 'String', num2str(handles.settings.truePosition.E));
set(handles.editUtmN, 'String', num2str(handles.settings.truePosition.N));
set(handles.editUtmU, 'String', num2str(handles.settings.truePosition.U));

%--- Plotting -------------------------------------------------------------
setCheckbox(handles.checkboxPlotTracking, handles.settings.plotTracking);

%@@@ Function reads current state of a checkbox "in the Matlab way" @@@@@@@
function value = getCheckbox(handle)

if (get(handle, 'Value') == get(handle,'Max'))
    % then checkbox is checked
    value = 1;
else
    % checkbox is not checked
    value = 0;
end

%@@@ Function sets checkbox state @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
% Setting the "Value" variable to some number not equal to "Min" or "Max"
% will cause Matlab runtime error.
function setCheckbox(handle, value)

if (value == 1)
    % "check" the checkbox
    set(handle, 'Value', get(handle,'Max'));
else
    % "uncheck" the checkbox
    set(handle, 'Value', get(handle,'Min'));
end

%@@@ Function checks if the edit field contains a numeric value. If yes,
%then it converts string type value to double. @@@@@@@@@@@@@@@@@@@@@@@@@@@@
function value = edit2double(handle)

%--- Try to convert string in the entry field to double -------------------
value = str2double(get(handle, 'String'));

% If it is not a number, then handle the incorect input -------------------
if isnan(value) && ~strcmpi(get(handle, 'String'), 'NaN')
    %--- Make the message text ---
    text = ['Bad input in the field "', get(handle, 'UserData'),...
        '". You must enter a numeric value.'];
    
    % Show the error message in a message box
    errordlg(text, 'Bad Input', 'modal');
    
    %--- Stop code execution here and "Throw an error". The error will be
    % "cached" by the "CATCH" statement. The code execution resumes from
    % at the "CATCH" statement. Please read the Matlab help for mo details
    % on TRY, CATCH and ERROR commands.
    error('setSettings:badInput', text);
end


% --- Executes on button press in pushbuttonSelectDataFile.
function pushbuttonSelectDataFile_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonSelectDataFile (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[fileName, pathName] = uigetfile('*.bin', ...
                                 'Select data file...', ...
                                 get(handles.editFileName, 'String'));

if (~isequal(fileName, 0) && ~isequal(pathName, 0))
    set(handles.editFileName, 'String', fullfile(pathName, fileName));
    set(handles.pushbuttonApply, 'Enable', 'on');    
end

% --- Executes on button press in pushbuttonProbeData.
function pushbuttonProbeData_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonProbeData (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[settings, error] = saveSettings(handles);

%--- If no errors, then ...
if error == 0
    try
        probeData(settings);
    catch
        errStruct = lasterror;
        msgbox(errStruct.message, 'Error', 'error');
    end
end


% --- Executes on button press in pushbuttonDefault.
function pushbuttonDefault_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonDefault (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

handles.settings = initSettings();

% Assign it to the GUI data structure
loadSettings(handles);

% Update handles structure
guidata(hObject, handles);

% Turn on the apply button
set(handles.pushbuttonApply, 'Enable', 'on');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -