Beispiel #1
0
void CVICALLBACK clbMenuDeleteItem (int menuBar, int menuItem, void *callbackData, int panel)
{
	int							iIndex				=	0,
								iCurrentIndex		=	0;
	
	GetCtrlIndex ( panel , PANEL_COMMAND_NAME_LIST , &iCurrentIndex );
			
	bSaveChanges = 1;
	
	if ( iCurrentIndex < giNumberOfItems )
	{
		giNumberOfItems--;
	
		for ( iIndex = giCurrentItemIndex; iIndex < giNumberOfItems; iIndex++ )
			gvtListOfCommands[iIndex] = gvtListOfCommands[iIndex+1];
	
		UpdateList( panel );
		
		if ( iCurrentIndex >= giNumberOfItems )
			iCurrentIndex = giNumberOfItems - 1;
		
		if ( iCurrentIndex < 0 )
			iCurrentIndex = 0;
		
		giCurrentItemIndex = iCurrentIndex;
		
		SetCtrlIndex ( panel , PANEL_COMMAND_NAME_LIST , iCurrentIndex );
		
		UpdateCurrentItem( panel );
	}

	return;
}
Beispiel #2
0
int das1602_ControlCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    portPtr port = callbackData;
    switch (control)
    {
        case DAS_CTRL_RANGE:
            if(event == EVENT_COMMIT && port)
                GetCtrlVal(panel, control, &port->port.analogueIOport.range);
            break;
        case DAS_CTRL_INPUT:
            if(event == EVENT_COMMIT && port)
            {
                int i;
                MCCdevPtr dev = port->port.analogueIOport.IO.acqchan->dev;
                das1602Ptr das = dev->device;
                GetCtrlVal(panel, control, &i);
                port->control = 0;
                if(i != -1)
                {
                    das->Achannels[i]->control = control;
                    SetCtrlAttribute (panel, control, ATTR_CALLBACK_DATA, das->Achannels[i]);
                    SetCtrlAttribute (panel, DAS_CTRL_RANGE, ATTR_CALLBACK_DATA, das->Achannels[i]);
                    SetCtrlAttribute (panel, DAS_CTRL_ACQ, ATTR_CALLBACK_DATA, das->Achannels[i]);
                    SetCtrlIndex (panel, DAS_CTRL_RANGE, das1602_IndexFromRange(das->Achannels[i]->port.analogueIOport.range));
                    SetCtrlVal (panel, DAS_CTRL_ACQ, das->Achannels[i]->port.analogueIOport.IO.acqchan->acquire);
                }
                SetCtrlAttribute (panel, DAS_CTRL_RANGE, ATTR_DIMMED, (i == -1));
                SetCtrlAttribute (panel, DAS_CTRL_ACQ, ATTR_DIMMED, (i == -1));
                if(i == -1)SetCtrlVal (panel, DAS_CTRL_ACQ, 0);
            }
            break;
        case DAS_CTRL_ACQ:
        if(event == EVENT_COMMIT && port && utilG.acq.status != ACQ_BUSY)
        {
            int i;
            MCCdevPtr dev = port->port.analogueIOport.IO.acqchan->dev;
            das1602Ptr das = dev->device;
            GetCtrlIndex (panel, DAS_CTRL_INPUT, &i);
            if(i)
            {
                GetCtrlVal (panel, control, &port->port.analogueIOport.IO.acqchan->acquire);
                    if (port->port.analogueIOport.IO.acqchan->acquire)
                    acqchanlist_AddChannel(port->port.analogueIOport.IO.acqchan);
                else
                    acqchanlist_RemoveChannel(port->port.analogueIOport.IO.acqchan);
                SetMenuBarAttribute (das->menu, port->menuitem_id, ATTR_CHECKED, port->port.analogueIOport.IO.acqchan->acquire);
            }
        else if(event == EVENT_COMMIT && utilG.acq.status == ACQ_BUSY)
            SetCtrlVal (panel, control, port->port.analogueIOport.IO.acqchan->acquire);
            
        }
        break;
    }
    if(event == EVENT_COMMIT && port)
        das1602_UpdateMeasurePanel (port);
    return 0;
}
Beispiel #3
0
int CVICALLBACK clbChangeTab (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_ACTIVE_TAB_CHANGE:

			GetCtrlIndex ( panel , PANEL_COMMAND_NAME_LIST , &giCurrentItemIndex );
			
			UpdateCurrentItem( panel );
				
			break;
	}
	return 0;
}
Beispiel #4
0
/*----------------------------------------------------------------------------
------------------------------------------------------------------------------
.	Función: 	 GRA_Etiqueta
. 	Descripcion: Retorna la etiqueta asociada al control tipo lista en el
.				 indice que actualmente ha seleccionado el usuario en la 
.				 pantalla.
.	Argumentos:	 int panel | Referencia al panel donde se encuentra localizado
.							 el control
.				 int control | Referencia al control que contiene la lista
.				 char *pcEtiqueta | Vector en el cual se retorna la etiqueta
.									que se obtiene del control
.   Retorno:	 Nada
------------------------------------------------------------------------------
----------------------------------------------------------------------------*/
int GRA_Etiqueta(int panel, int control, char *pcEtiqueta)
{
	int iIndice=0;
	int iNoItems=0;
	
	GetNumListItems (panel, control, &iNoItems);
	
	if (iNoItems==0)
		return -1;

	GetCtrlIndex(panel, control, &iIndice);
	GetLabelFromIndex (panel, control, iIndice, pcEtiqueta);
	
	return 0;
}
Beispiel #5
0
int  DoStatisticsCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    int i;
    channelPtr chan;

    if (event == EVENT_COMMIT)
    {
        GetCtrlIndex (panel, STATISTICS_CHANNELS, &i);
        chan = channellist_GetItem (i);
        chanfunc_CalcStatistics (chan);
        SetInputMode (panel, STATISTICS_SAVE,
            ((StringLength (chan->note) + StringLength(chanfunc.note)) < 255));
    }
    return 0;
}
Beispiel #6
0
int  SaveStatisticsCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    int i;
    channelPtr chan;
    if (event == EVENT_COMMIT)
    {
        GetCtrlIndex (panel, STATISTICS_CHANNELS, &i);
        chan = channellist_GetItem (i);
        if ((StringLength (chan->note) + StringLength(chanfunc.note)) < 255)
        {
            Fmt (chan->note, "%s[a]<\n%s", chanfunc.note);
            SetInputMode (panel, control, FALSE);
        }
    }
    return 0;
}
int CVICALLBACK Aquire_Display (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	double phase = 0.0;
	double datapoints[256];
	
	int i = 0;
	int index = 0;
	
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlIndex (MYPANEL, MYPANEL_MYRING, &index);
			switch (index)
			{
			case 0:
			SineWave (256, 1.0, 7.8125e-3, &phase, datapoints);
			break;
			
			case 1:
				SquareWave (256, 1.0, 7.8125e-3, &phase, 50.0, datapoints);
			break;
				
			case 2:
				TriangleWave (256, 1.0, 7.8125e-3, &phase, datapoints);
			break;
					
			case 3:
			for (i = 0; i < 256; i++)
				datapoints[i] = rand() /32767.0;
			break;
			}
			
			DeleteGraphPlot (MYPANEL, MYPANEL_MYGRAPH, -1, VAL_IMMEDIATE_DRAW);
			
			PlotY (MYPANEL, MYPANEL_MYGRAPH, datapoints, 256, VAL_DOUBLE,
			VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
			
			break;
	}
	return 0;
}
Beispiel #8
0
int CVICALLBACK SingleEventChange (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	int ring_index;
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlIndex (panel, control, &ring_index);
			if(ring_index == 0) {
				// 32-bit single event word
				SetCtrlAttribute (panel, CONFIGMB_COINCIDENCE_32_RING, ATTR_VISIBLE, 1);
				SetCtrlAttribute (panel, CONFIGMB_COINCIDENCE_64_RING, ATTR_VISIBLE, 0); 
			} else {
				// 64-bit single event word
				SetCtrlAttribute (panel, CONFIGMB_COINCIDENCE_64_RING, ATTR_VISIBLE, 1);
				SetCtrlAttribute (panel, CONFIGMB_COINCIDENCE_32_RING, ATTR_VISIBLE, 0);
			}
			break;
	}
	return 0;
}
Beispiel #9
0
int CVICALLBACK clbCommandsList (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_VAL_CHANGED:

			GetCtrlIndex ( panel , control , &giCurrentItemIndex );
			
			UpdateCurrentItem( panel );
				
			break;
			
		case EVENT_KEYPRESS:
			
			if ( GetKeyPressEventVirtualKey (eventData2) == VAL_FWD_DELETE_VKEY )
				clbMenuDeleteItem ( 0 , 0 , 0 , panel );
			
			break;			
	}
	return 0;
}
Beispiel #10
0
int usb1208ls_ControlCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    portPtr port = callbackData;
    switch (control)
    {
        case USB1208LS_RANGE:
            if(event == EVENT_COMMIT && port)
                GetCtrlVal(panel, control, &port->port.analogueIOport.range);
            break;
        case USB1208LS_INPUT:
            if(event == EVENT_COMMIT && port)
            {
                int i;
                MCCdevPtr dev = port->port.analogueIOport.IO.acqchan->dev;
                usb1208lsPtr pmd = dev->device;
                GetCtrlVal(panel, control, &i);
                port->control = 0;
                if(i != -1)
                {
                    pmd->aiPorts[i]->control = control;
                    SetCtrlAttribute (panel, control, ATTR_CALLBACK_DATA, pmd->aiPorts[i]);
                    SetCtrlAttribute (panel, USB1208LS_RANGE, ATTR_CALLBACK_DATA, pmd->aiPorts[i]);
                    SetCtrlAttribute (panel, USB1208LS_ACQ, ATTR_CALLBACK_DATA, pmd->aiPorts[i]);
                    SetCtrlAttribute (panel, USB1208LS_AVERAGE, ATTR_CALLBACK_DATA, pmd->aiPorts[i]);
                    SetCtrlVal (panel, USB1208LS_AVERAGE, pmd->aiPorts[i]->averaging);
                    SetCtrlIndex (panel, USB1208LS_RANGE, usb1208ls_IndexFromRange(pmd->aiPorts[i]->port.analogueIOport.range));
                    SetCtrlVal (panel, USB1208LS_ACQ, pmd->aiPorts[i]->port.analogueIOport.IO.acqchan->acquire);
                }
                SetCtrlAttribute (panel, USB1208LS_RANGE, ATTR_DIMMED, (i == -1));
                SetCtrlAttribute (panel, USB1208LS_ACQ, ATTR_DIMMED, (i == -1));
                if(i == -1)SetCtrlVal (panel, USB1208LS_ACQ, 0);
            }
            break;
        case USB1208LS_ACQ:
            if(event == EVENT_COMMIT && port && utilG.acq.status != ACQ_BUSY)
            {
                int i;
                MCCdevPtr dev = port->port.analogueIOport.IO.acqchan->dev;
                usb1208lsPtr pmd = dev->device;
                GetCtrlIndex (panel, USB1208LS_INPUT, &i);
                if(i)
                {
                    GetCtrlVal (panel, control, &port->port.analogueIOport.IO.acqchan->acquire);
                    if (port->port.analogueIOport.IO.acqchan->acquire)
                        acqchanlist_AddChannel(port->port.analogueIOport.IO.acqchan);
                    else
                        acqchanlist_RemoveChannel(port->port.analogueIOport.IO.acqchan);
                    SetMenuBarAttribute (pmd->menu, port->menuitem_id, ATTR_CHECKED, port->port.analogueIOport.IO.acqchan->acquire);
                }
            }
            else if(event == EVENT_COMMIT && utilG.acq.status == ACQ_BUSY)
                SetCtrlVal (panel, control, port->port.analogueIOport.IO.acqchan->acquire);
            break;
        /*case USB1208LS_DIGITAL_OUT_0:
        case USB1208LS_DIGITAL_OUT_1:
        case USB1208LS_DIGITAL_OUT_2:
        case USB1208LS_DIGITAL_OUT_3:
        case USB1208LS_DIGITAL_OUT_4:
        case USB1208LS_DIGITAL_OUT_5:
            if(event == EVENT_COMMIT && port)
            {
                MCCdevPtr dev = port->port.digitalIOport.IO.source->acqchan->dev;
                usb1208lsPtr pmd = dev->device;
                GetCtrlVal (panel, USB1208LS_DIGITAL_OUT_0, &pmd->bits[0]);
                GetCtrlVal (panel, USB1208LS_DIGITAL_OUT_1, &pmd->bits[1]);
                GetCtrlVal (panel, USB1208LS_DIGITAL_OUT_2, &pmd->bits[2]);
                GetCtrlVal (panel, USB1208LS_DIGITAL_OUT_3, &pmd->bits[3]);
                GetCtrlVal (panel, USB1208LS_DIGITAL_OUT_4, &pmd->bits[4]);
                GetCtrlVal (panel, USB1208LS_DIGITAL_OUT_5, &pmd->bits[5]);
                pmd->bits[1] *= 2;
                pmd->bits[2] *= 4;
                pmd->bits[3] *= 8;
                pmd->bits[4] *= 16;
                pmd->bits[5] *= 32;
                port->port.digitalIOport.IO.source->biaslevel = pmd->bits[0] + pmd->bits[1] + pmd->bits[2] + pmd->bits[3] + pmd->bits[4] + pmd->bits[5];
                port->port.digitalIOport.IO.source->SetLevel(port->port.digitalIOport.IO.source);
            }
            break;*/
        case USB1208LS_AVERAGE:
            if(event == EVENT_COMMIT && port)
               GetCtrlVal (panel, control, &port->averaging);
            break;
    }
    if (event == EVENT_COMMIT && port)
        usb1208ls_UpdateMeasurePanel(port);
    return 0;
}
Beispiel #11
0
int  K2400ControlCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    gpibioPtr dev = callbackData;
    k2400Ptr smu = dev->device;
	sourcePtr src = smu->source;
    char cmd[256];
    double r, level;
    int id;

    switch (control) {
        case K2400_INTTIME:		  
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->meas.inttime);
                Fmt (cmd, "SENSe:CURRent:NPLCycles %f", smu->meas.inttime);
				//sends same value to VOLTage
            }
            break;
        case K2400_FILTER:		 
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->meas.filter);
                Fmt (cmd, "SENSe:AVERage:COUNt %i", smu->meas.filter);
                k2400_Out (dev, cmd, .02);
            }
            break;
        case K2400_MEAS_V_RANGE:	//TODO
        case K2400_MEAS_I_RANGE:
            /*if (event == EVENT_COMMIT) {
                GetCtrlIndex (panel, control, &smu->meas.range);
                GetCtrlVal (panel, control, &r);
                level = k2400_GetCompLevel(dev);
                if (r < level) level = r;
				SetMeasRange();
            } */ 
            break;
        case K2400_LEVEL:	  
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &r);
				if(smu->src.current)
					Fmt(cmd,":SENSe:VOLTage:PROTection:LEVel %f",r);
				else
                	Fmt(cmd,":SENSe:CURRent:PROTection:LEVel %f",r); /* trigger level change */
                k2400_Out (dev, cmd, .04);
            }
            break;
        case K2400_SENSE: // 0 = disable remote sense, 1 = enable remote sense
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->sense);
				Fmt (cmd, ":SYSTem:RSENse %i", smu->sense);
                k2400_Out (dev, cmd, .02);
            }
            break;
        case K2400_SELECT:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->src.current);
				if(smu->src.current)
				{
					k2400_Out(dev, ":SOURce:FUNCtion:MODE CURRent", .07); 
					k2400_Out(dev, ":SENSe:FUNCtion \"VOLTage\"", .07); 
				}
				else
				{
					k2400_Out(dev, ":SOURce:FUNCtion:MODE VOLTage", .07); 
					k2400_Out(dev, ":SENSe:FUNCtion \"CURRent\"", .07); 
				}
				smu->source->sourceOn = 0;
            }
            break;
        case K2400_OPERATE:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->operate);
                Fmt (cmd, ":OUTPut:STATe %i", smu->operate);
                k2400_Out (dev, cmd, .02);
				smu->source->sourceOn = !smu->source->sourceOn;
            }
            break;
        case K2400_IDENTIFY:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &id);
				if(id)
				{
					k2400_Out(dev, ":DISPlay:WINDow:TEXT:STATe 1", .015);
					Fmt(cmd, ":DISPlay:WINDow:TEXT:DATA \"%i\"", dev->paddr);
					k2400_Out(dev, cmd, .5);
				}
				else
					k2400_Out(dev, ":DISPlay:WINDow:TEXT:STATe 0", .015);
            }
            break;
        case K2400_DELAY:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->src.delay);
                Fmt (cmd, ":SOURce:DELay:AUTO %i", smu->src.delay);
                k2400_Out (dev, cmd, .02);
            }
            break;
        case K2400_SOURCE_V_RANGE:
        case K2400_SOURCE_I_RANGE:
            if (event == EVENT_COMMIT) {
                GetCtrlVal(panel, K2400_SOURCE, &level);
				GetCtrlVal(panel, control, &r);
                if (r < level) level = r;
				if(smu->src.current)
				{
					GetCtrlIndex(panel, control, &smu->src.rangeC);
					Fmt(cmd, ":SOURce:CURRent:RANGe %f", r);
				}
				else
				{
					GetCtrlIndex(panel, control, &smu->src.rangeV);
					Fmt(cmd, ":SOURce:VOLTage:RANGe %f", r);
				}
				k2400_Out (dev, cmd, .02); 
				src->biaslevel = level;
				k2400_SetLevel(src); 
                k2400_Out (dev, cmd, .02);
                smu->source->min = -r;
                smu->source->max = r;
				if(src->panel)
					source_UpdatePanel(src->panel, src);
            }
            break;
    }

    if (event == EVENT_COMMIT) {
        k2400_UpdateControls(panel, dev);
    } //*/
    return 0;
}
Beispiel #12
0
int  K236ControlCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2)
{
    gpibioPtr dev = callbackData;
    k236Ptr smu = dev->device;
    char cmd[256];
    double r, level;
    int id;

    switch (control) {
        case K236_SUPPRESS:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->meas.supOn);
                Fmt (cmd, "Z%iX", smu->meas.supOn);
                k236_Out (dev, cmd, .01);
            }
            break;
        case K236_INTTIME:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->meas.inttime);
                Fmt (cmd, "S%iX", smu->meas.inttime);
                k236_Out (dev, cmd, .07);
            }
            break;
        case K236_FILTER:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->meas.filter);
                Fmt (cmd, "P%iX", smu->meas.filter);
                k236_Out (dev, cmd, .02);
            }
            break;
        case K236_MEAS_V_RANGE:
        case K236_MEAS_I_RANGE:
            if (event == EVENT_COMMIT) {
                GetCtrlIndex (panel, control, &smu->meas.range);
                GetCtrlVal (panel, control, &r);
                level = k236_GetCompLevel(dev);
                if (r < level) level = r;
                Fmt (cmd, "L%f[e2p4],%iX", level, smu->meas.range);
                k236_Out (dev, cmd, .04);
            }
            break;
        case K236_LEVEL:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &r);
                Fmt (cmd, "L%f[e2p4],%iH0X", r, smu->meas.range); /* trigger level change */
                k236_Out (dev, cmd, .04);
            }
            break;
        case K236_SENSE:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->sense);
				Fmt (cmd, "O%iX", smu->sense);
                k236_Out (dev, cmd, .02);
            }
            break;
        case K236_SELECT:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->src.current);
                Fmt (cmd, "F%i,0X", smu->src.current);
                k236_Out (dev, cmd, .07);
            }
            break;
        case K236_OPERATE:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->operate);
                Fmt (cmd, "N%iX", smu->operate);
                k236_Out (dev, cmd, .02);
            }
            break;
        case K236_IDENTIFY:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &id);
				if(id)
				{
					Fmt(cmd, "D1,GPIB ADDR %i X", dev->paddr);
					k236_Out(dev, cmd, .5);
				}
				else
					k236_Out(dev, "D0X", .015);
            }
            break;
        case K236_DELAY:
            if (event == EVENT_COMMIT) {
                GetCtrlVal (panel, control, &smu->src.delay);
                Fmt (cmd, "W%iX", smu->src.delay);
                k236_Out (dev, cmd, .02);
            }
            break;
        case K236_SOURCE_V_RANGE:
        case K236_SOURCE_I_RANGE:
            if (event == EVENT_COMMIT) {
                GetCtrlIndex (panel, control, &smu->src.range);
                GetCtrlVal (panel, control, &r);
                GetCtrlVal (panel, K236_SOURCE, &level);
                if (r < level) level = r;
                Fmt (cmd, "%s<B%f[e2p4],%i,0X", level, smu->src.range);
                k236_Out (dev, cmd, .02);
                smu->source->min = -level;
                smu->source->max = level;
            }
            break;
    }

    if (event == EVENT_COMMIT) {
        k236_UpdateControls(panel, dev);
    } //*/
    return 0;
}