停止在Matlab数据绘图应用程序设计师

8视图(30天)
阿希利里德
阿希利里德 2021年7月23日
回答: 孔雀舞Guntha 2021年7月28日
你好,
我想创建一个Arduino示波器的应用程序设计师,我functionalites之一是有一个“停止”按钮,以便用户可以在任何时候停止生活情节和观察数据。我尝试过不同的方法如:
文件关闭(应用)
似乎没有什么工作还作为数据继续无限图谋不轨,任何帮助都是感激。
属性(访问=私人)
%定义函数变量
年代;%串行端口
时间;%的策划
data = 0 (2, 1);%的数据存储在数组中
数= 0;
GREEN_COLOR = [0 1 0]
RED_COLOR = [1 0 0]
plotGraph
结束
方法(访问=私人)
函数closeApp_Callback(应用程序、~、事件)
% closeApp_Callback后执行“确认”对话框窗口
%”确认”对话框窗口从AppCloseRequest启动。
开关event.SelectedOption
情况下“好吧”
%断开与示波器的乐器
% (DisconnectButtonPushed执行回调函数)
BConButtonPushed (app, [])
删除(应用)
情况下“取消”
%继续
结束
结束
结束
%事件回调处理组件
方法(访问=私人)
%在组件创建之后执行的代码
函数startupFcn(应用)
%寻找可用的串口
%(仪器控制工具箱需要)
p = instrhwinfo (“串行”);
app.PortList。项= p.AvailableSerialPorts;
结束
%按钮推功能:StartPlotButton
函数StartPlotButtonPushed(应用程序、事件)
app.time = 0;
plotGrid =“上”;
max = 300;
最小值= 200;
延迟= . 01;
%设置情节
ax = app.UIAxes;
app.plotGraph =情节(ax, app.time, app.data (1:)“- r”);
持有(app.UIAxes“上”)
plotGraph1 =情节(ax, app.time, app.data (2:)“- m”);
持有(app.UIAxes“关闭”)
轴(ax,[0 10分钟max]);
网格(ax, plotGrid);
%启动秒表计时器
抽搐
%循环当阴谋活动
ishandle (app.plotGraph)
%从串口读取数据浮动
dat = fscanf(的应用,' % f ');
如果(~ isempty (dat) & & isfloat (dat))%确定数据类型是正确的
app.count = app.count + 1;
app.time (app.count) = toc;%提取时间以秒为单位
app.data (:, app.count) = dat (: 1);%提取第一个数据元素
集(app.plotGraph,“XData”app.time,“YData”:app.data (2));
集(plotGraph1,“XData”app.time,“YData”app.data (:));
轴(ax, [0 app.time (app.count)分钟马克斯]);
%允许MATLAB更新阴谋
暂停(延迟);
结束
结束
结束
%按钮推功能:SaveDataButton
函数SaveDataButtonPushed(应用程序、事件)
t =表(app.data);
writetable (t)“test.xlsx”,“表”1);
结束
%按钮推功能:StopButton
函数StopButtonPushed(应用程序、事件)
如果app.time.running = =“上”
停止(app.time);
stopasync(应用)
文件关闭(的应用);
结束
结束
%关闭请求功能:UIFigure
函数UIFigureCloseRequest(应用程序、事件)
问题=“关闭应用程序?”;
uiconfirm(应用程序。UIFigure,问题,确认关闭的,
“CloseFcn”@ (src、事件)closeApp_Callback(应用程序、src、事件));
结束
%按钮推功能:BCon
函数BConButtonPushed(应用程序、事件)
%如果strcmp (app.time.running,“了”)
应用=串行(app.PortList.Value);
fopen(的应用);
%开始(app.time);
app.ConnLamp。颜色= app.GREEN_COLOR;
%结束
结束
%按钮推功能:BDiscon
函数BDisconButtonPushed(应用程序、事件)
如果app.time.running = =“上”
停止(app.t);
如果~ app.data
stopasync(应用)
文件关闭(的应用);
结束
app.Lamp。颜色= app.RED_COLOR;
结束
app.ConnLamp。颜色= app.RED_COLOR;
结束
%按钮推功能:刷新
函数RefreshButtonPushed(应用程序、事件)
%删除所有串口文物从MATLAB的记忆
%(仪器控制工具箱需要)
删除(instrfind);
%寻找可用的串口
%(仪器控制工具箱需要)
p = instrhwinfo (“串行”);
app.PortList。项= p.AvailableSerialPorts;
结束
%按钮推功能:ResetButton
函数ResetButtonPushed(应用程序、事件)
班(app.UIAxes)
结束
结束
%初始化组件
方法(访问=私人)
%创建UIFigure和组件
函数createcomponent(应用)
%创建创建UIFigure和隐藏,直到所有组件
app.UIFigure = uifigure (“可见”,“关闭”);
app.UIFigure。位置= (100 100 1255 764);
app.UIFigure。Name =MATLAB应用程序的;
app.UIFigure。关闭RequestFcn = createCallbackFcn(app, @UIFigureCloseRequest, true);
%创建小组
app.Panel = uipanel (app.UIFigure);
app.Panel。Title =“小组”;
app.Panel。位置= [2 2 546 763);
%创建HardwarePanel
app.HardwarePanel = uipanel (app.Panel);
app.HardwarePanel。Title =“硬件”;
app.HardwarePanel。位置= (10 560 527 95);
%创建GridLayout11
app.GridLayout11 = uigridlayout (app.HardwarePanel);
app.GridLayout11。ColumnWidth = {“1 x”,“3 x”};
app.GridLayout11。填充= [5 5 5 5];
%创造刷新
app.Refresh = uibutton (app.GridLayout11,“推”);
app.Refresh。ButtonPushedFcn = createCallbackFcn(应用,@RefreshButtonPushed,真实);
app.Refresh.Layout。行= 2;
app.Refresh.Layout。列= 2;
app.Refresh。文本=“刷新”;
%创建PortLabel
app.PortLabel = uilabel (app.GridLayout11);
app.PortLabel。HorizontalAlignment =“对”;
app.PortLabel.Layout。行= 1;
app.PortLabel.Layout。列= 1;
app.PortLabel。文本=“端口”;
%创建PortList
app.PortList = uidropdown (app.GridLayout11);
app.PortList。项= {“COM ?”};
app.PortList。可编辑的=“上”;
app.PortList。写成BackgroundColor = (1 1 1);
app.PortList.Layout。行= 1;
app.PortList.Layout。列= 2;
app.PortList。值=“COM ?”;
%创建Panel_2
app.Panel_2 = uipanel (app.Panel);
app.Panel_2。位置= (12 654 525 80);
%创建BCon
app.BCon = uibutton (app.Panel_2,“推”);
app.BCon。ButtonPushedFcn = createCallbackFcn(应用,@BConButtonPushed,真实);
app.BCon。位置= (44 19 112 23);
app.BCon。文本=“连接”;
%创建BDiscon
app.BDiscon = uibutton (app.Panel_2,“推”);
app.BDiscon。ButtonPushedFcn = createCallbackFcn(应用,@BDisconButtonPushed,真实);
app.BDiscon。位置=(227年19 124年23);
app.BDiscon。文本=“断开”;
%创建ConnLamp
app.ConnLamp = uilamp (app.Panel_2);
app.ConnLamp。位置= (418 19 32 32);
app.ConnLamp。颜色= (1 0 0);
%创建ConnecttoHardwarefirstLabel
app.ConnecttoHardwarefirstLabel = uilabel (app.Panel_2);
app.ConnecttoHardwarefirstLabel。FontWeight =“大胆”;
app.ConnecttoHardwarefirstLabel。FontColor = (1 0 0);
app.ConnecttoHardwarefirstLabel。位置= [5 52 152 22];
app.ConnecttoHardwarefirstLabel。文本=“连接硬件第一”;
%创建y_axis_1_menu
app.y_axis_1_menu = uidropdown (app.Panel);
app.y_axis_1_menu。项= {“选择…”,通道1的,通道2的,通道3的,“第四频道”,“第5频道”,“六频道”,“频道7”,“8频道”,“频道9”};
app.y_axis_1_menu。标签=“y_axis_1_menu”;
app.y_axis_1_menu。字形大小= 10.6666666666667;
app.y_axis_1_menu。写成BackgroundColor = (0.729411764705882 0.831372549019608 0.956862745098039);
app.y_axis_1_menu。位置= [39 507 132 22];
app.y_axis_1_menu。值=“选择…”;
%创建Panel2
app.Panel2 = uipanel (app.UIFigure);
app.Panel2。Title =“Panel2”;
app.Panel2。位置= (545 711 666);
%创建UIAxes
app.UIAxes = uiaxes (app.Panel2);
标题(app.UIAxes,示波器的)
包含(app.UIAxes“时间(s)”)
ylabel (app.UIAxes“数据”)
zlabel (app.UIAxes“Z”)
app.UIAxes。XLim = 50 [0];
app.UIAxes。YLim = (-1.5 - 1.5);
app.UIAxes。XTick = [0 5 10 15 20 25 30 35 40 45 50);
app.UIAxes。XGrid =“上”;
app.UIAxes。YGrid =“上”;
app.UIAxes。位置= [55 653 614];
%创建Panel3
app.Panel3 = uipanel (app.UIFigure);
app.Panel3。Title =“Panel3”;
app.Panel3。位置= (547 667 712 99);
%创建StartPlotButton
app.StartPlotButton = uibutton (app.Panel3,“推”);
app.StartPlotButton。ButtonPushedFcn = createCallbackFcn(应用,@StartPlotButtonPushed,真实);
app.StartPlotButton。写成BackgroundColor = (0.3294 0.9216 0.3294);
app.StartPlotButton。FontWeight =“大胆”;
app.StartPlotButton。FontColor = (0.149 0.149 0.149);
app.StartPlotButton。位置= (70 100 47);
app.StartPlotButton。文本=“开始阴谋”;
%创建StopButton
app.StopButton = uibutton (app.Panel3,“推”);
app.StopButton。ButtonPushedFcn = createCallbackFcn(应用,@StopButtonPushed,真实);
app.StopButton。写成BackgroundColor = (1 0 0);
app.StopButton。FontWeight =“大胆”;
app.StopButton。FontColor = (0.149 0.149 0.149);
app.StopButton。位置=[218年18 100年47];
app.StopButton。文本=“停止”;
%创建SaveDataButton
app.SaveDataButton = uibutton (app.Panel3,“推”);
app.SaveDataButton。ButtonPushedFcn = createCallbackFcn(应用,@SaveDataButtonPushed,真实);
app.SaveDataButton。写成BackgroundColor = (0.8 0.8 0.8);
app.SaveDataButton。FontWeight =“大胆”;
app.SaveDataButton。FontColor = (0.149 0.149 0.149);
app.SaveDataButton。位置= (516 100 47);
app.SaveDataButton。文本=“保存数据”;
%创建ResetButton
app.ResetButton = uibutton (app.Panel3,“推”);
app.ResetButton。ButtonPushedFcn = createCallbackFcn(应用,@ResetButtonPushed,真实);
app.ResetButton。写成BackgroundColor = [0 1 1];
app.ResetButton。FontWeight =“大胆”;
app.ResetButton。FontColor = (0.149 0.149 0.149);
app.ResetButton。位置=[360年18 100年47];
app.ResetButton。文本=“重置”;
%显示所有组件创建后的图
app.UIFigure。可见=“上”;
结束
结束
%的应用程序创建和删除
方法(=公共访问)
%构建应用程序
函数应用= OscilloscopeGUI
%创建UIFigure和组件
createcomponent(应用)
%注册应用程序与应用程序设计师
app.UIFigure registerApp(应用)
%执行启动功能
@startupFcn runStartupFcn(应用)
如果nargout = = 0
清晰的应用程序
结束
结束
%执行的代码在应用程序删除
函数删除(应用)
%删除UIFigure当应用程序被删除
删除(app.UIFigure)
结束
结束
结束

答案(1)

孔雀舞Guntha
孔雀舞Guntha 2021年7月28日
嗨阿希利,
我知道这个问题是关于集成的 停止 按钮的 uiaxes 。你可以看附件示例应用程序演示所需的行为。
希望这可以帮助!

类别

找到更多的在使用应用程序开发应用程序设计师帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!