Sida 1 av 1

Matlab-support

Postat: 19 november 2012, 22:16:41
av jens8080
Ett litet bekymmer som ni säkert har en enkel lösning på.

Använder matlab för att styra o läsa från diverse mätinstrument via GPIB-interface. Problem är när programmet av någon anledning avslutas innan programmet gjort 'fclose' så hänger sig Matlab.
Har försökt använda mig av 'CloseRequestFcn' men problemet är att GPIB-variablerna ('instr') inte är tillgängliga där och därmed inte kan göra fclose() på dessa objekt.

koden ser ut typ så här och det är inte ett GUI-program utan helt 'vanlig' kod.

function aa
instr=gpib('agilent', 7, 1);
fopen(instr);
set(gcf,'CloseRequestFcn',@my_closefcn)
f=figure(1);
bla bla bla

function my_closefcn(src,evnt)
delete(gcf)
fclose(instr); %instr är ej åtkommlig här
delete(instr); %instr är ej åtkommlig här


Frågan lyder alltså kan man komma åt 'instr'-variabeln inuti funktionen 'my_closefcn'?

Re: Matlab-support

Postat: 19 november 2012, 22:26:45
av swp
Det kanske fungerar om du deklarerar variabeln som global.

function aa
global instr
instr=gpib('agilent', 7, 1);
fopen(instr);
set(gcf,'CloseRequestFcn',@my_closefcn)
f=figure(1);
bla bla bla

function my_closefcn(src,evnt)
global instr
delete(gcf)
fclose(instr);

Re: Matlab-support

Postat: 19 november 2012, 23:41:56
av Andax
Man kan även sätta user data för GUI fönstret som man senare kan plocka fram i callback funktionen.
User data kan vara en strukt så man kan skicka både filé id med mera.