Pseudo "STOP" button control

Ordinarily, a function that is running cannot be stopped by a control. Here is one example to stop an executing loop by testing for a mouse press in a button control region.
// This snippet demonstrates an example to stop an executing procedure from a
//     pseudo-"STOP" button in a control panel
// To begin, first execute the Panel0() recreation macro from the command line.

function Monitor()
    variable i=0, vLoop = 1
    Do
        ModifyControl  button1  disable = 0 // show the "STOP" button
        ControlUpdate /W=Panel0  button1
// your loop step goes here;  this test is a simple count display and increment            
        ValDisplay valdisp0 value=_NUM:i
        ControlUpdate /W=Panel0 valdisp0
        i+=1
        Sleep/S 0.25
// end of your loop step       
        GetMouse /W=Panel0  // test for mouse press in pseudo-"STOP" button area
        if( (V_flag==1)&(V_left>125)&(V_left<175)&(V_top>110)&(V_top<130) )
            VLoop = 0  // condition to quit the Do-While loop
            ModifyControl  button1  disable = 1 // hide the "STOP" button
        endif
    While(vLoop)
end
//-----------------------------------------------------------------------------
Function ButtonProcStart(ctrlName) : ButtonControl
    String ctrlName
    Monitor()
End
//-----------------------------------------------------------------------------
Window Panel0() : Panel
    PauseUpdate; Silent 1       // building window...
    NewPanel /W=(708,73,1008,273)
    ValDisplay valdisp0,pos={95,71},size={100,14},title=" count"
    ValDisplay valdisp0,limits={0,0,0},barmisc={0,1000},value= _NUM:0
    Button button0,pos={125,28},size={50,20},proc=ButtonProcStart,title="START"
    Button button1,pos={125,110},size={50,20},title="STOP", disable = 1
EndMacro

Forum

Support

Gallery

Igor Pro 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More