用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx

上传人:b****5 文档编号:16663430 上传时间:2022-11-25 格式:DOCX 页数:8 大小:499.32KB
下载 相关 举报
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx_第1页
第1页 / 共8页
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx_第2页
第2页 / 共8页
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx_第3页
第3页 / 共8页
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx_第4页
第4页 / 共8页
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx

《用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx》由会员分享,可在线阅读,更多相关《用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

用MATLAB的GUIDE工具做有GUI界面的串口通信上位机Word格式.docx

3在控件篮拖拽控件到如下图的形式 

进行控件设置,右击控件点“PropertyInspector”,如图

一般仅设置Tag选项和String选项。

其中String选项在按钮控件中就是GUI显示时的字符。

Tag属性较为重要,在GUI编程时控件的索引主要利用Tag选项的属性并且在GUI生成回调函数时候也是由Tag属性的值命名的。

这里将“打开串口”按钮控件的String设置为“打开串口”,tag设置为pb_OpenSerialPort。

具体控件的设置和关于GUI的编程还是看下帮助(截图部分)或找本这方面的书看一下。

这里对我即将用的功能简述一下,MALTAB的GUI主要由两个文件,当设置好GUIDE时点击保存,这时将在当前路径自动产生两个名字相同的文件,但扩展标识符不同,一个为.fig文件,一个为.m文件,.fig主要是GUI图形文件,和GUIDE设计的图像相同,.m文件为程序文件,所有事件响应和计算功能都在这里实现。

MATLAB的按钮以及各种控件事件响应是依靠一种叫做回调函数(CallbackFunction)来实现的(我理解为和VisualC++中的消息映射,C#中的异步委托事件响应一种原理),自动生成的M文件中已经自动做好回调函数的名称和参数了,我们需要做的就是在其中添加你要进行的处理。

例如:

我们要在鼠标单击按钮“打开串口”时进行一系列的串口初始化动作,这时右键单击“打开串口按钮”如图

则MALAB会自动转向相应的M文件的回调函数的位置。

如图

这里,因为该按钮的Tag为"

pb_OpenSerialPort"

则GUIDE自动生成的回调函数名即为pb_OpenSerialPort_Callback,函数有三个参数,

∙hObject是当前控件对象,即打开串口按钮对象(面向对象技术中的概念),索引或设置当前对象(打开串口按钮对象)时只需要引用hObject就可以了。

改变当前空间的可见性,只需调用set(hObject,'

Visable'

'

off'

);

打开串口对象在单击该按钮时即会隐藏。

∙eventdata我暂时没有用到,所以暂且不管他

∙handles我理解是整个GUI界面的索引句柄,所有GUI界面上的控件都可以通过他来索引,几乎有全局作用域,例如在打开串口按钮的回调中要将关闭串口按钮显示出来,可以这样调用 

set(handles.pb_CloseSerialPort,'

on'

就可以了!

这里handles还有一个作用就是在不同控件间进行参数传递,只要对handle的成员变量进行赋值就可以了。

当然后面要调用一下guidata(hObject,handles);

将变量保存。

例如打开串口按钮里面有个数据10需要关闭串口按钮调用可以这样写。

%打开串口按钮回调函数中

handles.double_vir=10;

guidata(hObject,handles);

%关闭串口按钮回调函数中

a=handles.double_vir;

5进行串口设置,参看如下图中的MATLAB帮助

串口初始化(主要在打开串口按钮的回调函数中),包括COM端口,BaudRate,DataBits,StopBits

Bytesavailable事件设置,主要触发串口响应Bytesavailable事件的条件。

BytesAvailableFcn 

SpecifytheM-filecallbackfunctiontoexecutewhenaspecifiednumberofbytesisavailableintheinputbuffer,oraterminatorisread,即指定当一个确定数量的字节数据(由BytesAvailableFcnCount属性设置)存在输入缓冲区时或一个结束符被读到时执行的m文件的回调函数。

BytesAvailableFcnCount 

Specifythenumberofbytesthatmustbeavailableintheinputbuffertogenerateabytes-availableevent.指定产生bytes-available事件串口输入缓冲区必须存在的字节数。

BytesAvailableFcnMode 

Specifyifthebytes-availableeventisgeneratedafteraspecifiednumberofbytesisavailableintheinputbuffer,orafteraterminatorisread。

指定是由串口输入缓冲区指定数量的字节数产生bytes-available事件还是由读到结束符产生bytes-available事件。

(本文选择byte)

串口初始化代码:

%%%COM端口初始化

o_SerialPort=serial(string_Select_COM);

set(o_SerialPort,'

BaudRate'

double_Baud);

%%%Baud初始化

DataBits'

double_DataBit);

%%%设置数据长度

StopBits'

double_StopBits);

%%%设置停止位长度

InputBufferSize'

1024000);

%%%设置输入缓冲区大小为1M

%%%串口事件回调设置

o_SerialPort.BytesAvailableFcnMode='

byte'

;

o_SerialPort.BytesAvailableFcnCount=10;

%输入缓冲区存在10个字节触发回调函数

o_SerialPort.BytesAvailableFcn={@EveBytesAvailableFcn,handles};

%回调函数的指定

fopen(o_SerialPort);

%打开串口

%这时在M文件中添加回调函数

functionEveBytesAvailableFcn(t,event,handles)

fread(o_SerialPort,10)%在串口输入缓冲区中读取十个字节

%其他数据处理及文字显示

end

最终实现界面及测试响应

我用两台计算机,将串口交叉相连,一台收一台发,最终得出下面测试结果,用一台机器的话只能将串口的2、3脚短接就可以了!

其他未尽细节参看代码就可以了。

源代码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1