📄 ui_check_params.m
字号:
function ui_check_params
persistent state;
if isempty(state)
state = struct('PktLen', '100', 'FreqError', '0', 'ExpDecayTrms', '50', 'SNR','2:2:20', ...
'PktsPerRun', '1000', 'RxTimingOffset', '-3');
end
curr_obj = gcbo;
obj_tag = get(curr_obj,'Tag');
%对输入的参数进行逻辑检测
switch (obj_tag)
case 'PktLen'
pkt_len_str = get(curr_obj,'String');
try
pkt_len = eval(pkt_len_str);
if pkt_len <= 0
set(curr_obj, 'String', state.PktLen);
errordlg('Packet length must be positive','Invalid input', 'modal');
else
state = setfield(state, 'PktLen', pkt_len_str);
end
catch
set(curr_obj,'String', state.PktLen);
errordlg('Packet length value not a number','Invalid input', 'modal');
end
case 'FreqError'
freq_err_str = get(curr_obj, 'String');
try
freq_err = eval(freq_err_str);
state = setfield(state, 'FreqError', freq_err_str);
catch
set(curr_obj,'String', state.FreqError);
errordlg('Frequency error value not a number','Invalid input', 'modal');
end
case 'AWGN'
awgn_val = get(curr_obj, 'Value');
if awgn_val == 1
set(curr_obj, 'Enable', 'inactive')
exp_decay_chan = findobj('Tag', 'ExponentialDecay');
set(exp_decay_chan, 'Enable', 'on')
set(exp_decay_chan, 'Value', 0);
end
case 'ExponentialDecay'
exp_decay_val = get(curr_obj, 'Value');
if exp_decay_val == 1
set(curr_obj, 'Enable', 'inactive');
awgn_chan = findobj('Tag', 'AWGN');
set(awgn_chan, 'Enable', 'on')
set(awgn_chan, 'Value', 0);
end
case 'ExpDecayTrms'
exp_decay_trms_str = get(curr_obj,'String');
try
exp_decay_trms = eval(exp_decay_trms_str);
if exp_decay_trms < 0
set(curr_obj, 'String', state.ExpDecayTrms);
errordlg('Exponential decay T rms cannot be negative','Invalid input', 'modal');
else
state = setfield(state, 'ExpDecayTrms', exp_decay_trms_str);
end
catch
set(curr_obj,'String', state.ExpDecayTrms);
errordlg('Exponential decay T rms value not a number','Invalid input', 'modal');
end
case 'SNR'
snr_str = get(curr_obj,'String');
try
snr = eval(snr_str);
state = setfield(state, 'SNR', snr_str);
catch
set(curr_obj,'String', state.SNR);
errordlg('SNR value not a number','Invalid input', 'modal');
end
case 'RxTimingOffset'
rx_timing_offset_str = get(curr_obj,'String');
try
rx_timing_offset = eval(rx_timing_offset_str);
if rx_timing_offset > 0
set(curr_obj,'String', state.RxTimingOffset);
errordlg('Rx timing offset positive','Invalid input', 'modal');
else
state = setfield(state, 'RxTimingOffset', rx_timing_offset_str);
end
catch
set(curr_obj,'String', state.RxTimingOffset);
errordlg('Rx timing offset value not a number','Invalid input', 'modal');
end
case 'PktsToSimulate'
pkts_to_simulate_str = get(curr_obj, 'String');
try
pkts_to_simulate = eval(pkts_to_simulate_str);
if pkts_to_simulate < 0
set(curr_obj,'String', state.PktsPerRun);
errordlg('Packets to simulate cannot be negative','Invalid input', 'modal');
else
state = setfield(state, 'PktsPerRun', pkts_to_simulate_str);
end
catch
set(curr_obj,'String', state.PktsPerRun);
errordlg('Packets to simulate value not a number','Invalid input', 'modal');
end
otherwise
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -