用MATLAB的GUIDE工具做有GUI界面的串口通信上位机

上传人:积*** 文档编号:124834693 上传时间:2022-07-25 格式:DOC 页数:11 大小:601.50KB
返回 下载 相关 举报
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机_第1页
第1页 / 共11页
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机_第2页
第2页 / 共11页
用MATLAB的GUIDE工具做有GUI界面的串口通信上位机_第3页
第3页 / 共11页
点击查看更多>>
资源描述
这是我好久之前写串口通信程序时编的,网上这写资料很少,我是看着MATLAB的协助文档自己一点点写的,虽然最后放弃了matlab上位机程序的方案,但是还是整顿了一下之前的某些收获,写下如下的阐明。编译环境:MATLAB a1 打开GUIDE工具,点击红圈中的GUIDE图标。 2 直接运用默认设立点OK即可 3 在控件篮拖拽控件到如下图的形式 4 进行控件设立,右击控件点“Property Inspector”,如图 一般仅设立Tag选项和String选项。其中String选项在按钮控件中就是GUI显示时的字符。Tag属性较为重要,在GUI编程时控件的索引重要运用Tag选项的属性并且在GUI生成回调函数时候也是由Tag属性的值命名的。这里将“打开串口”按钮控件的String设立为“打开串口”,tag设立为pb_OpenSerialPort。 具体控件的设立和有关GUI的编程还是看下协助(截图部分)或找本这方面的书看一下。 这里对我即将用的功能简述一下,MALTAB的GUI重要由两个文献,当设立好GUIDE时点击保存,这时将在目前程径自动产生两个名字相似的文献,但扩展标记符不同,一种为.fig文献,一种为.m文献,.fig重要是GUI图形文献,和GUIDE设计的图像相似,.m文献为程序文献,所有事件响应和计算功能都在这里实现。MATLAB的按钮以及多种控件事件响应是依托一种叫做回调函数(Callback Function)来实现的(我理解为和Visual C+中的消息映射,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,Visable,on);就可以了! 这里handles尚有一种作用就是在不同控件间进行参数传递,只要对handle的成员变量进行赋值就可以了。固然背面要调用一下guidata(hObject, handles);将变量保存。例如打开串口按钮里面有个数据10需要关闭串口按钮调用可以这样写。 %打开串口按钮回调函数中 handles.double_vir=10; guidata(hObject, handles); %关闭串口按钮回调函数中a=handles.double_vir;5 进行串口设立,参看如下图中的MATLAB协助 串口初始化(重要在打开串口按钮的回调函数中),涉及COM端口,BaudRate,DataBits,StopBitsBytes available事件设立,重要触发串口响应Bytes available事件的条件。BytesAvailableFcn Specify the M-file callback function to execute when a specified number of bytes is available in the input buffer, or a terminator is read,即指定当一种拟定数量的字节数据(由BytesAvailableFcnCount属性设立)存在输入缓冲区时或一种结束符被读届时执行的m文献的回调函数。BytesAvailableFcnCountSpecify the number of bytes that must be available in the input buffer to generate a bytes-available event.指定产生bytes-available事件串口输入缓冲区必须存在的字节数。BytesAvailableFcnMode Specify if the bytes-available event is generated after a specified number of bytes is available in the input buffer, or after a terminator is read。指定是由串口输入缓冲区指定数量的字节数产生bytes-available事件还是由读到结束符产生bytes-available事件。(本文选择byte)串口初始化代码:%COM端口初始化o_SerialPort=serial(string_Select_COM);set(o_SerialPort,BaudRate,double_Baud);%Baud初始化set(o_SerialPort,DataBits,double_DataBit);%设立数据长度set(o_SerialPort,StopBits,double_StopBits);%设立停止位长度set(o_SerialPort,InputBufferSize,1024000);%设立输入缓冲区大小为1M%串口事件回调设立 o_SerialPort.BytesAvailableFcnMode=byte; o_SerialPort.BytesAvailableFcnCount=10;%输入缓冲区存在10个字节触发回调函数 o_SerialPort.BytesAvailableFcn=EveBytesAvailableFcn,handles;%回调函数的指定fopen(o_SerialPort);%打开串口%这时在M文献中添加回调函数function EveBytesAvailableFcn( t,event,handles )fread(o_SerialPort,10)% 在串口输入缓冲区中读取十个字节%其她数据解决及文字显示end6 最后实现界面及测试响应我用两台计算机,将串口交叉相连,一台收一台发,最后得出下面测试成果,用一台机器的话只能将串口的2、3脚短接就可以了! 7 其她未尽细节参看代码就可以了。源代码
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!