Verfasst am: 31.10.2015, 12:21
Titel: .vbo Datei per pushbutton in workspace laden
Hallo,
ich versuche seit drei Tagen ein gui zu bauen und scheitere bisher immernoch einfach nur daran die Daten aus einer vbo Datei per Knopfdruck über gui in den workspace zu laden.
Ich habe mittlerweile einfach über import data ein script automatisch erzeugen lassen. Das m script funktioniert natürlich. Aber wenn ich versuche den Programmtext in gui unter den pushbutton zu kopieren, kommt beim ausprobieren keine Fehlermeldung aber die Daten landen auch nicht im workspace.
Kann mir da jemand helfen?
Code:
functionvarargout = Test4(varargin) % TEST4 MATLAB code for Test4.fig % TEST4, by itself, creates a new TEST4 or raises the existing % singleton*.
%
% H = TEST4 returns the handle to a new TEST4 or the handle to % the existing singleton*.
%
% TEST4('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in TEST4.M with the given input arguments.
%
% TEST4('Property','Value',...) creates a new TEST4 or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Test4_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Test4_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Test4
% Last Modified by GUIDE v2.5 31-Oct-2015 11:12:07
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Test4_OpeningFcn, ...
'gui_OutputFcn', @Test4_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before Test4 is made visible. function Test4_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Test4 (see VARARGIN)
% Choose default command line output for Test4
handles.output = hObject;
% UIWAIT makes Test4 wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = Test4_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
filename = 'C:\Users\Documents\MATLAB\MATLAB_uni\HA_5\Uebung_5\Uebungen im Kurs\VBOX0007.vbo';
formatSpec = '%3s%10s%13s%13s%8s%7s%10s%8s%5s%s%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', '', 'WhiteSpace', '', 'ReturnOnError', false);
fclose(fileID);
Verfasst am: 31.10.2015, 19:08
Titel: Re: .vbo Datei per pushbutton in workspace laden
Hallo Loser,
Du erzeugst die Variablen im lokalen Workspace der Funktion "pushbutton1_Callback". Jede Funktion hat ihren eigenen Workspace - das ist ja der Zweck der Funktionen im Vergleich zu Scripts.
In den Baseworkspace wandern die Variablen nicht automatisch, denn das würde ein heilloses Durcheinander produzieren. Schon das gezielte Erzeugen von Variablen in einem anderen Workspace ist so schwer nachzuvollziehen, dass ich grundsätzlich davon abrate, dies in Code zu tun, der produktiv eingesetzt wird. Aber viele andere Leute tun dies trotzdem.
Dann kann eine externe Funktion diese UserData vom GUI abfragen und nichts wird wild in fremden Workspaces geschrieben. Dann ist auch mit dem Debugger nachvollziehbar, welche Variable woher ihren aktuellen Wert hat.
Diese Zeile ist übrigens überflüssig. Es bringt nichts, lokal innerhalb der Funktion die Variablen zu löschen, weil sie beim Verlassen der Funktion sowieso gelöscht werden. Die Variable "ans" wird automatisch erstellt, wenn eine Funktion einen Output liefert, der keiner lokalen Variablen zugewisen wird. Die explizite Nutzung von "ans" oder auch sie zu löschen ist deshalb "verwirrend".
Gruß, Jan
Zuletzt bearbeitet von Jan S am 01.11.2015, 12:31, insgesamt einmal bearbeitet
Danke für die Tipps! Das hat mir wirklich geholfen erstmal ein paar grundlegende Sachen zu verstehen.
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.