Zaloguj się
Blog na Matlablog
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Problem z zmienną globalną
Forum MATLAB Strona Główna-> MATLAB
Post Wysłany: 17 Maj 2018, Czw 11:52 pm Temat postu: Problem z zmienną globalną Odpowiedz z cytatem
 
AUTOR:
maikeel
Pisze


Dołączył: 20 Sie 2010
Posty: 23


Ogląda profil użytkownika Wyślij prywatną wiadomość
Program nie działa i nie rozumiem dlaczego. Po wciśnięciu 'przycisku 3' wszystko działa (timer działa 10 razy), natomiast po wciśnięciu 'przycisku 4' wyświetla się informacja że zmienna s jest nieznana! - Nie rozumiem dlaczego bo na początku została zdefiniowana jako global. Nie mam koncepcji jak to rozgryźć!?

Kod:

function varargout = program(varargin)
%
PROGRAM MATLAB code for program.fig
%      PROGRAM, by itself, creates a new PROGRAM or raises the existing
%      singleton*.
%
%     
H = PROGRAM returns the handle to a new PROGRAM or the handle to
%      the existing singleton*.
%
%     
PROGRAM('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in PROGRAM.M with the given input arguments.
%
%     
PROGRAM('Property','Value',...) creates a new PROGRAM or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before program_OpeningFcn gets calledAn
%      unrecognized property name or invalid value makes property application
%      stopAll inputs are passed to program_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 program

% Last Modified by GUIDE v2.5 01-Jan-2017 00:19:06

% Begin initialization code - DO NOT EDIT
global t
global s

gui_Singleton = 1;
gui_State = struct('
gui_Name',       mfilename, ...
                   '
gui_Singleton',  gui_Singleton, ...
                   '
gui_OpeningFcn', @program_OpeningFcn, ...
                   '
gui_OutputFcn',  @program_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
% End initialization code - DO NOT EDIT


% --- Executes just before program is made visible.
function program_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 program (see VARARGIN)

% Choose default command line output for program
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% UIWAIT makes program wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = program_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;




function pushbutton3_Callback(hObject, eventdata, handles)

s = serial('
COM5');
set(s,'
BaudRate',230400);
s.InputBufferSize = 20000;
s.Terminator ='';
fopen(s);
s.Status
s.ReadAsyncMode = '
continuous';

t = timer('
TimerFcn', @(x,y)getSerialDataHandler(s, data), 'Period',  1);
set(t,'
ExecutionMode','fixedRate');
set(t,'
TasksToExecute',10);
start(t);


function pushbutton4_Callback(hObject, eventdata, handles)


t = timer('
TimerFcn', @(x,y)getSerialDataHandler(s, data), 'Period', 1);
set(t,'
ExecutionMode','fixedRate');
set(t,'
TasksToExecute',30);
start(t);


 

Post Wysłany: 20 Maj 2018, Nie 8:49 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
mc2
Może pisać książki


Dołączył: 19 Maj 2009
Posty: 2261


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
Na początku każdej funkcji, w której chcesz używać zmiennych globalnych t i s powinieneś wprost to napisać, tzn.:
Kod:
function ...
global
t
global s

https://www.mathworks.com/help/matlab/ref/global.html
 

Post Wysłany: 24 Maj 2018, Czw 9:45 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
dk2591
Początki pisania


Dołączył: 27 Kwi 2018
Posty: 7
Skąd: RzeszĂłw


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
Miałem dokładnie ten sam problem



_________________
http://helpik24.pl/
 

Forum MATLAB Strona Główna-> MATLAB
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 46820576
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Uprowadzona (Taken) {S02E16} online napisy PL 2x16 CDA  (19 Czerwca 2018, Wto 11:17 am)
Quantico {S03E08} online napisy/lektor PL 3x08 CDA/Zalukaj  (19 Czerwca 2018, Wto 11:16 am)
12 malp (12 monkeys) {S04E09} ogladaj online 4x09 napisy PL  (19 Czerwca 2018, Wto 11:14 am)
12 małp (12 monkeys) {S04E08} ogladaj online 4x08 napisy PL  (19 Czerwca 2018, Wto 11:13 am)
12 malp {S04E07} ogladaj online 4x07 napisy PL CDA/Zalukaj  (19 Czerwca 2018, Wto 11:11 am)
Paquita Salas {S02E05} ogladaj online PL 2x05 CDA/Zalukaj  (19 Czerwca 2018, Wto 11:09 am)
Paquita Salas {S02E04} ogladaj online PL 2x04 CDA/Zalukaj  (19 Czerwca 2018, Wto 11:08 am)
Paquita Salas {S02E03} ogladaj online PL 2x03 CDA/Zalukaj  (19 Czerwca 2018, Wto 11:07 am)
Paquita Salas {S02E02} ogladaj online PL 2x02 CDA/Zalukaj  (19 Czerwca 2018, Wto 11:06 am)
Paquita Salas {S02E01} ogladaj online PL 2x01 CDA/Zalukaj  (19 Czerwca 2018, Wto 11:04 am)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum