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; }
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; }
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; }
/*---------------------------------------------------------------------------- ------------------------------------------------------------------------------ . 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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }