matlab gui报错,gui在MATLAB中报错

这篇博客主要讲述了在MATLAB GUI中遇到的串口和定时器相关问题。作者通过展示GUI代码,包括串口打开、关闭、数据读取以及定时器的使用,寻求帮助定位报错原因。代码中包含了串口配置、定时器回调函数以及各种按钮事件的处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有调用fopen,可以帮我看看哪里的问题吗

function varargout = main(varargin)

gui_State = struct('gui_Name',       mfilename, ...

'gui_Singleton',  gui_Singleton, ...

'gui_OpeningFcn', @main_OpeningFcn, ...

'gui_OutputFcn',  @main_OutputFcn, ...

'gui_LayoutFcn',  [] , ...

'gui_Callback',   []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function main_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

global t  TIME

Ports = instrhwinfo('serial'); %%查找所有可用串口

set(handles.popupmenu1,'String',Ports.AvailableSerialPorts);

t = timer('TimerFcn', {@timerCallback}, 'ExecutionMode', 'fixedDelay', 'Period', 0.5);%创建定时器

function varargout = main_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function pushbutton1_Callback(hObject, eventdata, handles) %打开串口回调函数

global s n;

global serialport

%%

n=0;

s = instrfind('Type', 'serial', 'Port',serialport, 'Tag', ''); %查询检测串口com1

if isempty(s)

s = serial(serialport);

else

fclose(s);

s = s(1)

end

set(s,'BaudRate', 9600,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');

s.BytesAvailableFcnMode = 'terminator';   % 数据回车“\n”进入回调函数

s.BytesAvailableFcn =@callback2;       %引用回调函数

fopen(s);

function pushbutton2_Callback(hObject, eventdata, handles)%开始回调函数

global s flag t T TIME

fwrite(s,0);

flag=1;

start(t);

T=0;

TIME=[];

function pushbutton3_Callback(hObject, eventdata, handles)%停止回调函数

global  flag t s

flag=0;

stop(t);

fwrite(s,255);

function pushbutton4_Callback(hObject, eventdata, handles)%退出回调函数

global s t

ss=questdlg('你真的要退出吗?','退出信息窗口!','不,我还想看看!','是的,我要退出!','是的,我要退出!');

switch ss

case '是的,我要退出!'

delete(handles.figure1);

fclose(s);

delete(s);  %删除串口

delete(t); %删除定时器

delete(instrfindall);

clear s

end

function callback2(s,BytesAvailable)

global u

u = fscanf(s); %以字符串类型读数据

function timerCallback(obj, event) %定时器回调函数

global s T TIME flag

if flag==1

T=T+1;

TIME=[TIME T];

y=7*sin(TIME*0.005)+9;

% y1=-7*sin(TIME*0.005)+9;

handles=guidata(main);

axes(handles.axes1)

plot(handles.axes1,TIME,y);%画图

fwrite(s,18-round(y(end)));%发送数据

end

function popupmenu1_Callback(hObject, eventdata, handles)%下拉菜单回调函数

global serialport

list=get(handles.popupmenu1,'String');

val1=get(handles.popupmenu1,'Value');

serialport=list{val1}

function popupmenu1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值