Matlab-support

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
jens8080
Inlägg: 20
Blev medlem: 2 december 2011, 22:48:21

Matlab-support

Inlägg 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'?
swp
Inlägg: 63
Blev medlem: 31 december 2010, 00:54:56

Re: Matlab-support

Inlägg 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);
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Matlab-support

Inlägg 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.
Skriv svar