static void *k213_Create (gpibioPtr dev) { k213Ptr quadsrc; int port; quadsrc = malloc (sizeof(k213Type)); if (dev) quadsrc->id = dev->id; quadsrc->range[0] = range_Create(0, 0, 0); quadsrc->range[1] = range_Create(1, -1, 0.00025); quadsrc->range[2] = range_Create(5, -5, 0.00125); quadsrc->range[3] = range_Create(10, -10, 0.0025); quadsrc->range[4] = NULL; for (port = 0; port < 4; port++) { quadsrc->port[port].autorange = TRUE; quadsrc->port[port].range = 0; } quadsrc->port[0].src = source_Create ("K213 Port 1", dev, k213_SetPort1, k213_GetPort1); quadsrc->port[1].src = source_Create ("K213 Port 2", dev, k213_SetPort2, k213_GetPort2); quadsrc->port[2].src = source_Create ("K213 Port 3", dev, k213_SetPort3, k213_GetPort3); quadsrc->port[3].src = source_Create ("K213 Port 4", dev, k213_SetPort4, k213_GetPort4); if (dev) dev->device = quadsrc; return quadsrc; }
void dda08_Create (MCCdevPtr dev) { int i; char name[50]; dda08Ptr dda = malloc(sizeof(dda08Type)); dev->device = dda; dda->panel = 0; for(i = 0; i < 8; i++) { //portPtr create_Port(*dev, *name, type, direction, GetReading, SetLevel, channel, range) Fmt (name, "DDA08 analog out %i", i); dda->Achannels[i] = create_Port(dev, name, ANALOGUE, OUT_PORT, ReadAnalogueOut, SetAnalogue, i, BIP10VOLTS); dda->Achannels[i]->port.analogueIOport.IO.source->max = 10; dda->Achannels[i]->port.analogueIOport.IO.source->min = -10; dda->Achannels[i]->port.analogueIOport.IO.source->ranges.temprange[0] = range_Create(10, -10, 0.000305); } dda->range[0] = range_Create(10, -10, 0.000305); dda->range[1] = range_Create(5, -5, 0.0001525); dda->range[2] = range_Create(2.5, -2.5, 0.00007625); dda->buttons[0] = onoff_Create(DDA_CTRL_RANGE_0, DDA_CTRL_ANALOG_OUT_0, DDA_CTRL_SOURCE_0); dda->buttons[1] = onoff_Create(DDA_CTRL_RANGE_1, DDA_CTRL_ANALOG_OUT_1, DDA_CTRL_SOURCE_1); dda->buttons[2] = onoff_Create(DDA_CTRL_RANGE_2, DDA_CTRL_ANALOG_OUT_2, DDA_CTRL_SOURCE_2); dda->buttons[3] = onoff_Create(DDA_CTRL_RANGE_3, DDA_CTRL_ANALOG_OUT_3, DDA_CTRL_SOURCE_3); dda->buttons[4] = onoff_Create(DDA_CTRL_RANGE_4, DDA_CTRL_ANALOG_OUT_4, DDA_CTRL_SOURCE_4); dda->buttons[5] = onoff_Create(DDA_CTRL_RANGE_5, DDA_CTRL_ANALOG_OUT_5, DDA_CTRL_SOURCE_5); dda->buttons[6] = onoff_Create(DDA_CTRL_RANGE_6, DDA_CTRL_ANALOG_OUT_6, DDA_CTRL_SOURCE_6); dda->buttons[7] = onoff_Create(DDA_CTRL_RANGE_7, DDA_CTRL_ANALOG_OUT_7, DDA_CTRL_SOURCE_7); }
void das1602_Create (MCCdevPtr dev) { int i; char name[50]; das1602Ptr das = malloc(sizeof(das1602Type)); dev->device = das; das->panel = 0; for(i = 0; i < 8; i++) { //portPtr create_Port(*dev, *name, type, direction, GetReading, channel, range) Fmt (name, "PCI-DAS1602 analog in %i", i); das->Achannels[i] = create_Port(dev, name, ANALOGUE, IN_PORT, ReadAnalogue, i, BIP10VOLTS); das->Achannels[i]->control = 0; } for(i = 0; i < 2; i++) { //portPtr create_Port(*dev, *name, type, direction, GetReading, SetLevel, channel, range) Fmt (name, "PCI-DAS1602 analog out %i", i); das->Achannels[i+8] = create_Port(dev, name, ANALOGUE, OUT_PORT, ReadAnalogueOut, SetAnalogue, i, BIP10VOLTS); das->Achannels[i+8]->port.analogueIOport.IO.source->max = 10; das->Achannels[i+8]->port.analogueIOport.IO.source->min = -10; das->Achannels[i+8]->port.analogueIOport.IO.source->ranges.temprange[0] = range_Create(10, -10, 0.000305); } das->Achannels[0]->menuitem_id = DASMENU_MEAS_IN_0; das->Achannels[1]->menuitem_id = DASMENU_MEAS_IN_1; das->Achannels[2]->menuitem_id = DASMENU_MEAS_IN_2; das->Achannels[3]->menuitem_id = DASMENU_MEAS_IN_3; das->Achannels[4]->menuitem_id = DASMENU_MEAS_IN_4; das->Achannels[5]->menuitem_id = DASMENU_MEAS_IN_5; das->Achannels[6]->menuitem_id = DASMENU_MEAS_IN_6; das->Achannels[7]->menuitem_id = DASMENU_MEAS_IN_7; }
void dda08_Load (MCCdevPtr dev) { int i; dda08Ptr dda = dev->device; for(i = 0; i < 8; i++) { port_Load(dev, dda->Achannels[i]); dda->Achannels[i]->port.analogueIOport.IO.source->max = 10; dda->Achannels[i]->port.analogueIOport.IO.source->min = -10; dda->Achannels[i]->port.analogueIOport.IO.source->ranges.range[0] = range_Create(10, -10, 0.000305); } }
void das1602_Load (MCCdevPtr dev) { int i; das1602Ptr das = dev->device; for(i = 0; i < 10; i++) port_Load(dev, das->Achannels[i]); for(i = 8; i < 10; i++) { das->Achannels[i]->port.analogueIOport.IO.source->max = 10; das->Achannels[i]->port.analogueIOport.IO.source->min = -10; das->Achannels[i]->port.analogueIOport.IO.source->ranges.range[0] = range_Create(10, -10, 0.000305); } }
/* create_Port(*dev, *name, type, direction, GetReading, port, devtype, bits;) create_Port(*dev, *name, type, direction, GetReading, SetLevel, port, devtype, bits) create_Port(*dev, *name, type, direction, GetReading, channel, range) create_Port(*dev, *name, type, direction, GetReading, SetLevel, channel, range) //*/ void usb1208ls_Create (MCCdevPtr dev) { usb1208lsPtr pmd = malloc(sizeof(usb1208lsType)); int i; char name[30]; dev->device = pmd; pmd->ranges = calloc(1, sizeof(rangeType)); pmd->bits = calloc(6, sizeof(int)); pmd->panel = 0; pmd->ranges[0] = range_Create (5, 0, 5.0/1024.0); for (i = 0; i < 4; i ++) { Fmt(name, "analog IN %i", i); pmd->aiPorts[i] = create_Port (dev, name, ANALOGUE, IN_PORT, ReadAnalogue, i, BIP10VOLTS); } for (i = 0; i < 2; i ++) { Fmt(name, "analog OUT %i", i); pmd->aoPorts[i] = create_Port (dev, name, ANALOGUE, OUT_PORT, usb1208ls_ReadAnalogueOut, SetAnalogue, i, UNI5VOLTS); pmd->aoPorts[i]->port.analogueIOport.IO.source->ranges.temprange[0] = pmd->ranges[0]; pmd->aoPorts[i]->port.analogueIOport.IO.source->min = 0; pmd->aoPorts[i]->port.analogueIOport.IO.source->max = 5; } pmd->aoPorts[1]->port.analogueIOport.IO.source->SetLevel = SetAnalogue; Fmt(name, "IPS100 ramp"); pmd->aoPorts[2] = create_Port (dev, name, ANALOGUE, OUT_PORT, usb1208ls_ReadDigitalFeedback, usb1208ls_SetLevel, 0, UNI5VOLTS); pmd->aoPorts[2]->port.analogueIOport.IO.source->ranges.temprange[0] = pmd->ranges[0]; pmd->aoPorts[2]->port.analogueIOport.IO.source->min = 0; pmd->aoPorts[2]->port.analogueIOport.IO.source->max = 5; pmd->aoPorts[2]->port.analogueIOport.IO.source->segments[0]->error.on = 1; Fmt(name, "digital OUT %i", i); pmd->doPort = create_Port (dev, name, DIGITAL, OUT_PORT, usb1208ls_ReadFeedback, SetDigital, FIRSTPORTA, 0, 8); Fmt(name, "digital IN %i", i); pmd->diPort = create_Port (dev, name, DIGITAL, IN_PORT, ReadDigital, FIRSTPORTB, 0, 0); pmd->aiPorts[0]->menuitem_id = USBMENU_MEAS_IN_0; pmd->aiPorts[1]->menuitem_id = USBMENU_MEAS_IN_1; pmd->aiPorts[2]->menuitem_id = USBMENU_MEAS_IN_2; pmd->aiPorts[3]->menuitem_id = USBMENU_MEAS_IN_3; }