! CVConnectionV CLConnectionLocalLocalAIN0 AIN0'0None?MainAIN1 AIN1'0None?AIN#MainAIN2 AIN2'0None? AIN#(0:254)MainDAC0 DAC0'0NoneMainFIO1_Out FIO1_Out'0NoneMain FIO0Counter FIO0Counter'0 None?MainTCAIN3 TCAIN3'0'None?AIN3_EF_READ_AMainStartUp9H׮ҤԅѤSHbۭƤ͒T`YaΞ@JW`ΞΥCP~٭PаɗS͍lԨۗCP͘xsC_aRPNjYٯƠԕ``էaRٌHǧɴrN_VariableValueDAC0[0]ABCComponentAction?Set To05DAC0DAC0VArial ._VariableValueFIO0Counter[0]AB FIO0 CounterArial ]m_VariableValue FIO1_Out[0]AB?Set To01FIO1_Out FIO1 OutputArial  _Text  LeftABAbove are 5 Variable Value Displays which are configured by right-clicking and selecting "Properties". The expression for each is set to Channel[0], which means that each will always display the most recent value of the specified DAQFactory Channel. AIN0-AIN2 are simply voltage readings from those 3 analog inputs. The Configure sequence sets the Range of these 3 channels to +/-10V, +/-1V, and +/-0.1V. AIN3 has its extended feature enabled in the Configure sequence to handle a type K thermocouple and this Channel is linked to AIN3_EF_READ_A on the device. If you don't have a thermocouple jumper AIN3 to GND and you will be reading the device temperature. FIO0 has its extended feature enabled in the Configure sequence to be a counter and this Channel is linked to DIO0_EF_READ_A on the device. The Configure sequence also enables the 10 Hz test signal on SPC so jumper SPC to FIO0 and you should see the count increment about 10 ticks per second.Arial Q_Text  LeftABAbove are 2 Variable Value Displays which are configured by right-clicking and selecting "Properties". The expression for each is set to Channel[0], which means that each will always display the most recent value of the specified DAQFactory Channel. In addition, on the "Action" tab we have defined 1 action "Set To" and specified the desired DAQFactory Channel that we want to set. This means that when you click on the display and enter a new value it gets sent to the DAQFactory Channel, which in turn writes it to the specified register on the LabJack. Note that when first loaded both of these displays will have a red "X" through them because the DAQFactory Channel that is being displayed does not have any value until you click and set a value.Arial /v_VariableValueAIN2[0]AB AIN2 VoltageVArial ._VariableValue TCAIN3[0]AB AIN3 Deg KKArialPage_00Page_11;BHU^B  CLegacyDevice ICP7000̌? Analog InputDigital Output Digital InputCommand icp7000.dll"  LabJack_U12 @A to D (SE 0-7; Diff 8-11)D to ADig Out (IO 0-3; D 4-19)Dig In (IO 0-3; D 4-19)CounterSpecialCommand LabJack.dll" 2 LabJackUD?A to DD to ADig OutDig InCounterTimer LabJackN.dll" OPC@@Synchronous Read Analog OutputDiscrete OutputAsynchronous Read Array Read String Read String Output ) SSOPC.dll" Test@ A to DD to ADig OutDig InCountersLatchSpecialSpectrumCommandStringImage   STestDevice.dllCLabJackMDevice 'LabJackM? AIN#(0:254) DAC#(0:1) FIO#(0:7) EIO#(0:7) CIO#(0:3) MIO#(0:2)AIN#(0:149)_EF_READ_A TDAC#(0:22)SBUS#(0:22)_TEMPSBUS#(0:22)_RHDIO#(0:22)_EF_READ_ATEMPERATURE_AIR_KTEMPERATURE_DEVICE_KSpecialX0uuu " AccesPCI@A to DD to ADig OutDig InRelay ReadbackCommand acces.dll"  DDE_Client@@Read Analog ValueSet Analog ValueDDE.dll" DiamondffF@A to DD to ADig OutDig InCounterCount DurationCommand diamond.dll"  MComputing@@A to DD to ADig OutDig In Pulse Counter TemperatureCommandMComputing.dll"  National_Inst@A to DD to ADig OutDig InCounterCommand NatInst.dll" NI_435x@ Analog InputCommand NI435x.dll" RFScada@ A to DD to ADig OutDig InCountersLatchSpecialSpectrumCommandStringImage   S RFScada.dll" Sensoray_SmartAD@ Sensor InputCommandSensoraySmartAD.dll" TriLogi@ Analog Input Analog OutputDiscrete OutputDiscrete InputCounterCommand TriLogi.dll" ADEU12V3?AIDIgo SADELJU12V3.dll" hAB_SLC5?Read Analog BCCWrite Analog BCCWrite Binary BCCRead Binary BCCRead Analog CRCRead Binary CRCWrite Analog CRCWrite Binary CRC 3 DSXABSLC5.dll" nKoyo305?Read I/O BinaryWrite Timer/Counter Write I/O Bit Read I/O BitRead Timer/CounterWrite Timer/Counter BCDWrite I/O Binary Write I/O BCDDSXKOYO305.dll" g ModbusASCII?Read Coil StatusPreset Single RegisterForce Single CoilRead Input StatusRead Holding Register UnsignedRead Input Register UnsignedRead Holding Register SignedRead Input Register Signed"Read Holding Register skip 2 bytesRead Holding Register float'Read Holding Registe float skip 2 bytes$Read Holding Register inverted float3Read Holding Registers inverted floats skip 2 bytes$Read Holding Registers Signed 32-bit&Read Holding Registers Unsigned 32-bitPreset Single Register float"Preset Register float skip 2 bytesPreset Register inverted float+Preset Register inverted float skip 2 bytes DSXMODBUSA.dll" e ModbusRTU?Read Coil StatusPreset Single RegisterForce Single CoilRead Input StatusRead Holding Register UnsignedRead Input Register UnsignedRead Holding Register SignedRead Input Register Signed"Read Holding Register skip 2 bytesRead Holding Register float'Read Holding Registe float skip 2 bytes$Read Holding Register inverted float3Read Holding Registers inverted floats skip 2 bytes$Read Holding Registers Signed 32-bit&Read Holding Registers Unsigned 32-bit,Read Holding Register inverted words - floatPreset Single Register float"Preset Register float skip 2 bytesPreset Register inverted float+Preset Register inverted float skip 2 bytes DSXMODBUSB.dll"  ModbusRTU2?Read Coil StatusPreset Single RegisterForce Single CoilRead Input StatusRead Holding Register UnsignedRead Input Register UnsignedRead Holding Register SignedRead Input Register Signed"Read Holding Register skip 2 bytesRead Holding Register float'Read Holding Registe float skip 2 bytes$Read Holding Register inverted float3Read Holding Registers inverted floats skip 2 bytes$Read Holding Registers Signed 32-bit&Read Holding Registers Unsigned 32-bit,Read Holding Register inverted words - floatPreset Single Register float"Preset Register float skip 2 bytesPreset Register inverted float+Preset Register inverted float skip 2 bytes DSXMODBUSC.dll" fModem?None Available DSXMODEM.dll" Opto? DSXOPTO.dll" MODBUŠ? A to DD to ADig OutDig InCountersLatchSpecialSpectrumCommandStringImage   S Modbus.dll CUserDevice M C mydevice2ainain2lkjklj  ,function a(string x) ? x return(x) return (1)   foobarfootime2initget&return(footime2(private.arg0 + 10)) return(Private.arg0 * 2) local x x = private.arg0 +function (string x) ? x return(x) " 3ODX? Numeric Input Array Input ODX.dll" ) PCX_4264_AC?Write Digital Output BitRead Digital Input BitRead Back Digital Output Bit  PCX4264AC.dll" Serial @ Numeric InputCommandString In or Out SSerialAdvanced.dll" WatchDog? No I/O Types! WatchDog.dllCDevice 4Modbus?< |&6ESampleInput local x = 3  return(Randuniform(-1,1,1)) GetXSetX? x return(x) x = arg0 < wEAmpDIODigInDigOut // the following two are a list of dnumbers and the corresponding // device handles local m_DNums local m_Handles // include constants: include("dio_tc.h") // now all the externs: // board init: extern("dio_tc.dll","short registerBoard(short, short, short)","registerBoard","stdcall","registerBoard(model, baseAddr, irq)") extern("dio_tc.dll","short registerBoardEx(short)","registerBoardEx","stdcall","registerBoardEx(CardNo)") extern("dio_tc.dll","short registerBoardPci(short, short, short)","registerBoardPci","stdcall","registerBoardPci(model, bus, slot)") extern("dio_tc.dll","short DIO_TC_dllVersion()","DIO_TC_dllVersion","stdcall","DIO_TC_dllVersion()") extern("dio_tc.dll","short DIO_TC_GetResetOnRegister()","DIO_TC_GetResetOnRegister","stdcall","DIO_TC_GetResetOnRegister()") extern("dio_tc.dll","void DIO_TC_SetResetOnRegister(short)","DIO_TC_SetResetOnRegister","stdcall","DIO_TC_SetResetOnRegister(fROR)") extern("dio_tc.dll","short FreeBoard(short)","FreeBoard","stdcall","FreeBoard(handle)") extern("dio_tc.dll","short DIO_TC_driverVersion(short, ulong[1])","DIO_TC_driverVersion","stdcall","DIO_TC_driverVersion(handle, @ver)") extern("dio_tc.dll","short DIO_TC_hardwareVersion(short, ulong[1])","DIO_TC_hardwareVersion","stdcall","DIO_TC_hardwareVersion(handle, @ver)") // digital io: extern("dio_tc.dll","short DIOisAvailable(short, short)","DIOisAvailable","stdcall","DIOisAvailable(handle, chip)") extern("dio_tc.dll","short DIOsetMode(short, short, short, short)","DIOsetMode","stdcall","DIOsetMode(handle, chip, port, isInput)") extern("dio_tc.dll","short DIOgetMode(short, short, short, short[1])","DIOgetMode","stdcall","DIOgetMode(handle, chip, port, @isInput)") extern("dio_tc.dll","short DIOsetChanWidth(short, short, short)","DIOsetChanWidth","stdcall","DIOsetChanWidth(handle, chip, numBits)") extern("dio_tc.dll","short DIOsetData(short, short, short, long)","DIOsetData","stdcall","DIOsetData(handle, chip, chan, data)") extern("dio_tc.dll","short DIOgetData(short, short, short, long[1])","DIOgetData","stdcall","DIOgetData(handle, chip, chan, @data)") extern("dio_tc.dll","short DIOsetModeEx(short, short, short)","DIOsetModeEx","stdcall","DIOsetModeEx(handle, chip, ctrl)") extern("dio_tc.dll","short DIOgetModeEx(short, short, short[1])","DIOgetModeEx","stdcall","DIOgetModeEx(handle, chip, @ctrl)") extern("dio_tc.dll","short DIOsetDataEx(short, short, short, short)","DIOsetDataEx","stdcall","DIOsetDataEx(handle, chip, port, data)") extern("dio_tc.dll","short DIOgetDataEx(short, short, short, short[1])","DIOgetDataEx","stdcall","DIOgetDataEx(handle, chip, port, @data)") extern("dio_tc.dll","short DIOsetSwitchMatrix(short, short)","DIOsetSwitchMatrix","stdcall","DIOsetSwitchMatrix(handle, order)") extern("dio_tc.dll","short DIOgetSwitchStatus(short, short, short)","DIOgetSwitchStatus","stdcall","DIOgetSwitchStatus(handle, xcoord, ycoord)") extern("dio_tc.dll","short DIOfreeSwitchMatrix(short)","DIOfreeSwitchMatrix","stdcall","DIOfreeSwitchMatrix(handle)") // free up all allocated boards: // this does not free up boards allocated by direct calls to the // imported functions, just ones created in the function calls // in this driver. for (private.x = 0, x < numrows(m_Handles), x++) FreeBoard(m_Handles[x]) endfor // first get the handle corresponding to the DNum: private handle handle = GetHandle(DeviceNumber) if (handle == ERRHANDLE) System.ErrorMessage("Device Number / Card No not found") return endif private stat private chip private chan private theport chip = floor(Channel / 24) * 8 chan = Channel % 24 theport = floor(chan / 8) // handle C_U: if (chan >= 20) theport = 3 endif // make sure chan width is set to 1: DIOsetChanWidth(handle,chip,1) // make sure we are input: DIOsetMode(handle, chip, theport, 1) private data stat = DIOgetData(handle, chip, chan, @data) if (stat == OK) return(data) endif System.ErrorMessage("Digital Input error, is the port set correctly?") return // first get the handle corresponding to the DNum: private handle handle = GetHandle(DeviceNumber) if (handle == ERRHANDLE) System.ErrorMessage("Device Number / Card No not found") return endif private stat private chip private chan private theport chip = floor(Channel / 24) * 8 chan = Channel % 24 theport = floor(chan / 8) // handle C_U: if (chan >= 20) theport = 3 endif // make sure chan width is set to 1: DIOsetChanWidth(handle,chip,1) // make sure we are output: DIOsetMode(handle, chip, theport, 0) private data = (SetToValue != 0) // force to 0 or 1 stat = DIOsetData(handle, chip, chan, data) if (stat == OK) return(OriginalValue) endif System.ErrorMessage("Digital Output error, is the port set correctly?") return Init InitBoard GetHandle>// this is a do nothing function to allow users to only use the // direct imported functions and includes. By calling this function // OnLoad will be called where all the work is done. By putting // all the stuff that should be inited only once in OnLoad, we ensure // that the user can't double init. return function InitBoard(dnum, model, base, irq) // registers the board with the driver. // We're going to use one function to do two types of inits // depending on the number of parameters passed. // Returns the new handle (for use with imported functions if // desired) or ERRHANDLE. Throws an error if improper number of // parameters if (argc < 2) throw("Invalid number of paramters") endif private handle = -1 if (argc == 4) handle = registerBoard(model, base, irq) else handle = registerBoardEx(model) // really model is cardNo endif if (handle < 0) return(ERRHANDLE) endif // add to array of valid handles with assigned DNum: m_Handles[NumRows(m_Handles)] = handle m_DNums[NumRows(m_DNums)] = dnum return(handle) +function GetHandle(dnum) // function returns the handle associated with dnum and if not // found, assumes dnum corresponds to a cardNo and tries to open // the card. Returns ERRHANDLE if not found. for (private.x = 0, x < numrows(m_DNums), x++) if (m_DNums[x] == dnum) break endif endfor if (x < numrows(m_DNums)) return(m_Handles[x]) endif // didn't find, so try registerBoardEx assuming dnum and // cardno are same, and return new handle if success. InitBoard // does this for us: return(InitBoard(dnum, dnum)) dš C:\DAQFactory(2)\Persist\(\?b2Awww.daqconnect.comwww.daqconnect.comP index.htmlP XK~GIF=image/gif HTM=text/html HTML=text/html JPG=image/jpeg JS=application/x-javascript PDF=application/pdf ZIP=application/zip