重庆邮电大学本科毕业设计(论文)
字体大小等。属性界面图如图4.1.4(以下红色小框标记为需要改动的地方)
图4.1.4 修改控件属性
二、GUI中的回调函数
MALAB的GUI中,当创建一个GUI后,工作文件夹中就会自动的生成一个*.m文件,而这个文件就是GUI界面控件的回调函数文件,里面存有每一个控件对象的回调函数,用户可以选中一个控件,然后单击鼠标右键,编写该控件的回调函数或则查看该控件的回调函数。
用户用鼠标右键单击控件,这时会弹出选项菜单,选中其中的view callback,然后选择callback来创建控件的回调函数。
1.‘坐标系axes1’的回调函数
- 24 -
重庆邮电大学本科毕业设计(论文)
set(gca,'xlim',[0 1401]); set(gca,'ylim',[0 745]);
set(gca,'xtick',[0:140:1401],'ytick',[0:75:745]);
代码的第一二句就是设置横纵坐标的上下限,第三句是设置该坐标系的x轴y轴最小刻度。坐标系设置的1401x745,对应于公司环境图片的像素大小(1401X745)。
2.‘载入图片’的回调函数
[filename,pathname]=...
uigetfile({'*.png';'*.jpeg';'*.bmp';'*.gif';'*.jpg'},'load'); str=[pathname filename];
上述代码是获取不同格式图片的图片名称和路径,然后将获取的名称和路径赋给变量str,这个str用于后面读取变量str,代码如下:
[in,map]=imread(str); imshow(in);
上面函数imread是用来读入图片名称和路径的,imshow是用来显示图片的函数的 ,上述代码就是该控件主要功能代码。
plot(m1,n1,'o','MarkerFaceColor','k');
该句代码主要是在图中(m1,n1)位置画一个实心,该实心用来表示途中AP的位置,所以其它4个AP也是用该句相似的代码。
text(m1+10,n1,'AP1','color','k','fontsize',20);
该句是在(m1+10,n1)位置添加文本标注AP1,并且设置其颜色为黑色,字体大小设置为20,其余四句也是利用与该句相似的代码。
3.‘检测点’的回调函数
该控件的功能主要是点击该按钮后,会在GUI界面出现一个测试点的十字性的光标,然后单击鼠标左键便可以确定该点的坐标,然后通过相关代码将坐标显示在GUI界面上。具体代码如下:
[x,y]=ginput(1); m=46.827*x/1401;
- 25 -
重庆邮电大学本科毕业设计(论文)
n=24.95*y/745; p=num2str(m); q=num2str(n);
set(handles.kj1,'string',m); set(handles.kj2,'string',n);
函数ginput就是捕捉GUI界面坐标的函数,(x,y)就是返回的坐标;num2str是将得到的数值型的x,y转换为字符型,然后通过set函数来将字符型的p,q显示在句柄Tag为kj1和kj2的动态文本框Edit Text中,从而达到显示该坐标的功能。
4.‘计算’的回调函数
global m; global n;
A=getpot_rssi(m,n);
set(handles.ps1,'string',A(:,:,1)); set(handles.ps2,'string',A(:,:,2)); set(handles.ps3,'string',A(:,:,3)); set(handles.ps4,'string',A(:,:,4)); set(handles.ps5,'string',A(:,:,5));
第一二句是把‘检测点’中回调函数得到的全局变量坐标m,n再次申明为全局变量,因为在MATLAB中当在另一个函数中使用前一个函数中的值时,除了在原来函数中申明为全局变量,还需在另一个需要使用的函数再次申明为全局变量才可以使用。第三句是将坐标设置为函数get_rssi()的两个参数,即给这个函数一个坐标,然后获取该坐标区域的信号强度,然后通过变量A发回来一个五维数组,一次为五个AP在该位置的接收信号功率的大小,通过set函数来分别显示这个值到Edit Text中的。
5.‘退出’的回调函数
close(gcf);
此按钮就只有一句代码,其实现的功能就是关闭GUI。
- 26 -
重庆邮电大学本科毕业设计(论文)
三、运行效果图
①运行前的图形界面如图4.1.5
图4.1.5 运行前GUI界面图
②点击载入图片后,如图4.1.6
图4.1.6 载入图片后的GUI界面图
③点击检测点后,出现十字架取点光标,单击鼠标左键可以显示x,y坐标,如图4.1.7
- 27 -