📄 selectservices.m
字号:
%SELECTSERVICES SELECTSERVICES lets the user select the service types for UL coverage analysis.
%
%Inputs:
%Outputs:
%
%Authors: Achim Wacker (AWa)
%
%Revision: 5.0.0cd Date: 17-Jul-2001
%
%needed m-files: none
function SelectServices(arg1)
if nargin == 0
arg1 = '';
else
hf1 = findobj(allchild(0), 'flat', 'Tag', 'tagSelectServices');
end
switch arg1
case ''
if (exist('previousService.mat') == 2)
load('previousService.mat');
ud.numServices = length(speed);
ud.bitrate = bitrate/1000;
ud.speed = speed;
ud.color = color;
ud.txMaxPower = txMaxPower;
else
ud.numServices = 3;
ud.bitrate = [8 64 144];
ud.speed = [50 3 3];
ud.color = [1 0 0; 0 1 0; 0 0 1];
ud.txMaxPower = [21 21 21]; %dBm
end
a1 = get(0, 'ScreenSize'); %[xLowerLeft yLowerLeft width height]
a2(1) = 30;
a2(2) = a1(4)-250-40*ud.numServices;
a2(3) = 410;
a2(4) = 170+40*ud.numServices;
ud.a2 = a2;
hf1 = dialog(...
'Position', a2, ...
'Name', 'Select services', ...
'NumberTitle', 'off', ...
'Tag', 'tagSelectServices', ...
'Resize', 'off', ...
'DeleteFcn', 'clear hf1;', ...
'UserData', ud);
InitDialog(hf1);
case 'addService'
ud = get(hf1, 'UserData');
if ud.numServices < 9
ud.numServices = ud.numServices+1;
ud.bitrate = [ud.bitrate 8];
ud.speed = [ud.speed 50];
ud.color = [ud.color; ud.numServices*[0.1 0.1 0.1]];
ud.txMaxPower = [ud.txMaxPower 21]; %dBm
set(hf1, ...
'Position', get(hf1, 'Position')+[0 -40 0 40], ...
'UserData', ud);
InitDialog(hf1);
end
case 'removeService'
ud = get(hf1, 'UserData');
if ud.numServices
delete(ud.hServiceText1(ud.numServices));
delete(ud.hServiceText2(ud.numServices));
delete(ud.hServiceText3(ud.numServices));
delete(ud.hServiceText4(ud.numServices));
delete(ud.hServiceBitRate(ud.numServices));
delete(ud.hServiceSpeed(ud.numServices));
delete(ud.hServiceColor(ud.numServices));
delete(ud.hServiceTxMaxPower(ud.numServices));
ud.numServices = ud.numServices-1;
ud.bitrate = ud.bitrate(1:end-1);
ud.speed = ud.speed(1:end-1);
ud.color = ud.color(1:end-1, :);
ud.txMaxPower = ud.txMaxPower(1:end-1);
ud.hServiceText1 = ud.hServiceText1(1:end-1);
ud.hServiceText2 = ud.hServiceText2(1:end-1);
ud.hServiceText3 = ud.hServiceText3(1:end-1);
ud.hServiceText4 = ud.hServiceText4(1:end-1);
ud.hServiceBitRate = ud.hServiceBitRate(1:end-1);
ud.hServiceSpeed = ud.hServiceSpeed(1:end-1);
ud.hServiceColor = ud.hServiceColor(1:end-1);
ud.hServiceTxMaxPower = ud.hServiceTxMaxPower(1:end-1);
set(hf1, ...
'Position', get(hf1, 'Position')+[0 +40 0 -40], ...
'UserData', ud);
InitDialog(hf1);
end
case 'OK'
ud = get(hf1, 'UserData');
bitrate = ud.bitrate*1000;
speed = ud.speed;
color = ud.color;
txMaxPower = ud.txMaxPower;
save previousService bitrate speed color txMaxPower;
assignin('base', 'ok', 1);
close(hf1);
case 'Cancel'
close(hf1);
end
return
function InitDialog(hf1)
ud = get(hf1, 'UserData');
firstTime = ~isfield(ud, 'hServiceText1');
ext = ['st'; 'nd'; 'rd'; 'th'];
if (firstTime)
ud.hFrame = uicontrol(...
'Parent', hf1, ...
'Style', 'frame', ...
'Position', [10 100 390 45+40*ud.numServices]);
ud.hFrameText = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'Services', ...
'Position', [15 127+40*ud.numServices 50 25]);
ud.hHeader1 = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'bit rate', ...
'Position', [100 105+40*ud.numServices 40 25]);
ud.hHeader2 = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'speed', ...
'Position', [175 105+40*ud.numServices 40 25]);
ud.hHeader3 = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'color', ...
'Position', [330 105+40*ud.numServices 40 25]);
ud.hHeader4 = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'max. TX power', ...
'Position', [235 105+40*ud.numServices 90 25]);
end
for kk = 1:ud.numServices
ind = ud.numServices-kk;
service(kk).textPos = [15 110+ind*40 65 25];
service(kk).text = [num2str(kk) ext(kk*(kk<4)+4*(kk>=4), :) ' service:'];
if (firstTime | length(ud.hServiceText1) < kk)
ud.hServiceText1(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', service(kk).text, ...
'HorizontalAlignment', 'right', ...
'Position', service(kk).textPos+[5 0 -5 0]);
ud.hServiceBitRate(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'Edit', ...
'String', num2str(ud.bitrate(kk)), ...
'BackgroundColor', 'w', ...
'HorizontalAlignment', 'right', ...
'Tag', 'tagBitrate', ...
'Value', kk, ...
'Position', [service(kk).textPos(1)+70 service(kk).textPos(2)+5 45 service(kk).textPos(4)], ...
'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
'ud = get(hf1, ''UserData'');' ...
'ud.bitrate(get(gcbo, ''Value'')) = str2num(get(gcbo, ''String''));' ...
'set(hf1, ''UserData'', ud);clear ud']);
ud.hServiceText2(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'kbps', ...
'HorizontalAlignment', 'left', ...
'Position', [service(kk).textPos(1)+120 service(kk).textPos(2) 30 service(kk).textPos(4)]);
ud.hServiceSpeed(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'Edit', ...
'String', num2str(ud.speed(kk)), ...
'BackgroundColor', 'w', ...
'HorizontalAlignment', 'right', ...
'Tag', 'tagSpeed', ...
'Value', kk, ...
'Position', [service(kk).textPos(1)+150 service(kk).textPos(2)+5 45 service(kk).textPos(4)], ...
'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
'ud = get(hf1, ''UserData'');' ...
'ud.speed(get(gcbo, ''Value'')) = str2num(get(gcbo, ''String''));' ...
'set(hf1, ''UserData'', ud);clear ud']);
ud.hServiceText3(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'km/h', ...
'HorizontalAlignment', 'left', ...
'Position', [service(kk).textPos(1)+200 service(kk).textPos(2) 30 service(kk).textPos(4)]);
colorData(1, 1, 1:3) = ud.color(kk, :);
ud.hServiceColor(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'pushbutton', ...
'CData', repmat(colorData, [25, 25, 1]), ...
'HorizontalAlignment', 'left', ...
'Position', [service(kk).textPos(1)+325 service(kk).textPos(2)+5 25 25], ...
'UserData', kk, ...
'Tooltip', 'Click to edit color', ...
'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
'ud = get(hf1, ''UserData'');' ...
'ud.color(get(gcbo, ''UserData''), :) = uisetcolor(ud.color(get(gcbo, ''UserData''), :), ''Select display color for sercive'');' ...
'colorData(1, 1, 1:3) = ud.color(get(gcbo, ''UserData''), :);' ...
'set(gcbo, ''CData'', repmat(colorData, [25, 25, 1]));' ...
'set(hf1, ''UserData'', ud);clear ud colorData']);
ud.hServiceTxMaxPower(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'Edit', ...
'String', num2str(ud.txMaxPower(kk)), ...
'BackgroundColor', 'w', ...
'HorizontalAlignment', 'right', ...
'Tag', 'tagTxMaxPower', ...
'Value', kk, ...
'Position', [service(kk).textPos(1)+230 service(kk).textPos(2)+5 45 service(kk).textPos(4)], ...
'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
'ud = get(hf1, ''UserData'');' ...
'ud.txMaxPower(get(gcbo, ''Value'')) = str2num(get(gcbo, ''String''));' ...
'set(hf1, ''UserData'', ud);clear ud']);
ud.hServiceText4(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'text', ...
'String', 'dBm', ...
'HorizontalAlignment', 'left', ...
'Position', [service(kk).textPos(1)+280 service(kk).textPos(2) 30 service(kk).textPos(4)]);
else
set(ud.hServiceText1(kk), 'Position', service(kk).textPos);
set(ud.hServiceText2(kk), 'Position', [service(kk).textPos(1)+120 service(kk).textPos(2) 30 service(kk).textPos(4)]);
set(ud.hServiceText3(kk), 'Position', [service(kk).textPos(1)+200 service(kk).textPos(2) 30 service(kk).textPos(4)]);
set(ud.hServiceText4(kk), 'Position', [service(kk).textPos(1)+280 service(kk).textPos(2) 30 service(kk).textPos(4)]);
set(ud.hServiceBitRate(kk), 'Position', [service(kk).textPos(1)+70 service(kk).textPos(2)+5 45 service(kk).textPos(4)]);
set(ud.hServiceSpeed(kk), 'Position', [service(kk).textPos(1)+150 service(kk).textPos(2)+5 45 service(kk).textPos(4)]);
set(ud.hServiceColor(kk), 'Position', [service(kk).textPos(1)+325 service(kk).textPos(2)+5 25 25]);
set(ud.hServiceTxMaxPower(kk),'Position', [service(kk).textPos(1)+230 service(kk).textPos(2)+5 45 service(kk).textPos(4)]);
end
end
set(ud.hFrame, 'Position', [1 1 1 0].*get(ud.hFrame, 'Position')+[0 0 0 45+40*ud.numServices]);
set(ud.hFrameText, 'Position', [1 0 1 1].*get(ud.hFrameText, 'Position')+[0 127+40*ud.numServices 0 0]);
set(ud.hHeader1, 'Position', [1 0 1 1].*get(ud.hHeader1, 'Position')+[0 105+40*ud.numServices 0 0]);
set(ud.hHeader2, 'Position', [1 0 1 1].*get(ud.hHeader2, 'Position')+[0 105+40*ud.numServices 0 0]);
set(ud.hHeader3, 'Position', [1 0 1 1].*get(ud.hHeader3, 'Position')+[0 105+40*ud.numServices 0 0]);
set(ud.hHeader4, 'Position', [1 0 1 1].*get(ud.hHeader4, 'Position')+[0 105+40*ud.numServices 0 0]);
pushbutton.text = {'Add service', 'Remove service', 'OK', 'Cancel'};
pushbutton.position = [35 60 95 25; 180 60 95 25; 35 20 95 25; 180 20 95 25];
pushbutton.callback = {...
'SelectServices(''addService'');', 'SelectServices(''removeService'');', ...
'SelectServices(''OK'');', 'SelectServices(''Cancel'');'};
if (~isfield(ud, 'hPushbutton'))
for kk = 1:4
if kk == 1
ud.hPushbutton = zeros(1, 4);
end
ud.hPushbutton(kk) = uicontrol(...
'Parent', hf1, ...
'Style', 'pushbutton', ...
'String', char(pushbutton.text(kk)), ...
'Position', pushbutton.position(kk, :), ...
'Callback', char(pushbutton.callback(kk)));
end
else
for kk = 1:4
set(ud.hPushbutton(kk), 'Position', pushbutton.position(kk, :));
end
end
set(hf1, 'UserData', ud);
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -