| Contents of section: Connecting multiple DataLab IO
          devices to single computer
Driver exceptions
Driver status channel
Driver parameter fileSection [device]
Module sections [module_x]
Channels and modes of individual module typesDigital input modules DI1 and DI2
Digital counter module CNT1
Incremental counter module CNT2
Digital output modules DO1, DO2 and DO3
Analog input module AI1
Analog input module AI2
Analog input module AI3
Analog output module AO1
Combined analog input and digital input/output module
              AD1
Combined analog input/output and digital input/output
              module AD2
Combined analog input/output module AIO1
Module for Resistive Temperature Detectors RTD1
Mode and control channel usage
Driver-specific error codes
Module positions and device slots
Driver configuration in the Control Web
          development environment
DataLab IO system driverOperating system support
History of function enhancements
 Channel data types (either numbers representing analog values or
        two-state logical values) and directions (either inputs or outputs)
        are defined by the module types plugged to individual slots of the
        particular unit. It is necessary to define used module types in the
        driver parameter file to enable application
        development. The driver creates a set of channels of appropriate type
        and direction for each module according to module type. Channel numbers associated to used modules are freely selectable,
        but always must create a continuous range. So it is possible to choose
        only the number of the first channel, other channels are numbered
        automatically up to the total number of channels available in the
        module. Channel numbers assigned to individual modules cannot
        overlap. If the particular module provides both input and output channels,
        channel numbers can be assigned independently for both channel groups
        —number of the first input channel is defined
        independently on the number of the first output channel. If the module type plugged to device slot does not correspond to
        the module type define in the parameter file, the driver detects it
        and any attempt to read or write to channel of the particular module
        causes error (see chapter Driver specific error
        codes). No other configuration (e.g. unit addressing, communication speed,
        parity, handshake, stop-bits settings etc.) is required due to the USB
        interface used in the DataLab IO units. The
        system works in the pure Plug-and-Play manner. The DataLab IO driver for Control Web relies on the DataLab IO system
        driver (see chapter DataLab IO system driver). It is not possible to
        communicate with the device over USB without properly installed system
        driver. Connecting multiple DataLab IO
          devices to single computerIt is possible to connect multiple DataLab IO devices to single computer, be it directly to
            USB ports available on the computer I/O panel or through the
            USB hub. The operating system assigns unique name to every
            connected USB device. The name is rather complex string derived
            from the device driver GUID, USB hub identifiers, USB port number
            on the particular hub etc. Simply put, these identifiers are
            intended for distinguishing USB devices within operating system,
            not to be used by computer users. But if the application communicates with multiple
            DataLab IO devices, it is necessary to
            distinguish them—the concrete signal wired
            to concrete terminal port of the concrete module must be properly
            identified in the application. The device serial number is used
            identify devices. The serial number is always printed on the label
            on device case and is necessary to write it as parameter id
            of section [device] in driver
            parameter file. It is necessary to use one driver instance
            for every DataLab IO unit. One driver
            instance (with corresponding one parameter file) cannot handle
            multiple units at once. Warning: It is necessary to define the id
            parameter not only when single application uses multiple devices,
            but always when multiple DataLab IO
            devices are connected to one computer. If the id
            parameter is not defined, the driver uses the first device it
            finds.Sometimes it can be necessary to obtain device identifier in
            running application. The driver offers special input channel, from
            which the device identifier can be read (its number is defined by
            the parameter id_channel of section [device]
            in the parameter file). Driver exceptionsThe driver generates exceptions always when its state changes.
            The application (the virtual instrument within application) can
            handle these exceptions (virtual instrument is activated when the
            driver exception occurs if its parameter driver_exception
            contains particular driver name). The exception handling procedure
            can read the driver status channel to determine device state. An
            example of the indicator instrument, which handles
            DataLab IO driver exception and switches
            on or off according to the device state is in the chapter Driver status channel. Driver status channelThe status channel (its number is defined by the parameter
            status_channel of section [device] in
            the parameter file) provides the
            DataLab IO device status information.
            Currently only one bit number 0 is defined—it represents the connected status (that
            means if the device is connected to the USB port and properly
            powered). If the DataLab IO device is
            unplugged (or without power in the case of self-powered devices),
            the status channel is the only channel which can be read without
            error. An attempt to read any other channel will generate error
            1. Status channel value should be interpreted as bit mask. It is
            always necessary to check only the particular bit of interest.
            Undocumented bits represents other states and their meaning can
            change in different driver versions. It is possible to use
            function bitget or operator and to
            extracting just one bit from the number. The following example demonstrates how to read DataLab IO connected state and how this state is
            represented by indicator instrument. This example
            assumes that there is a parameter status_channel = 99
            in the [device] section in parameter file. driver
  datalab : 'dldrv.dll', 'DataLab USB test Analog In.dmf', 'DataLab USB test Analog In.par';
end_driver;
data
  channel {driver = datalab; direction = input};
    ...
    dlStatus : longcard {driver_index = 99};
  end_channel;
  ...
end_data;
instrument
  indicator ConnectionStatus;
    driver_exception = datalab;
    ...
    procedure OnActivate( ByTimer, ByInstrument, ByDriver, ByData : boolean );
    begin
      if ByDriver then
        (* mask bit 0 by logical and with mask 1 *)
        SetValue( dlStatus & 1 <> 0 );
        (* it is possible get the bit using bitget function, the second parameter is bit index, not mask
        SetValue( bitget( dlStatus, 0 ) <> 0 );
        *)
      end;
    end_procedure;
    ...
  end_indicator;
  ...
end_instrument;Driver parameter fileDriver parameter file is an ordinary text file and can be
            edited by any text editor (e.g. Control Web
            Editor or Notepad). It has very simple
            structure following '.INI' file conventions. Section [device]If there are multiple DataLab IO
                units connected to one computer, it is necessary to specify
                for which unit is the particular parameter file intended. The
                parameter id of section [device]
                defines the particular unit. Parameter value is a number or
                list of numbers separated by commas. If the parameter is
                present, the driver instance (with this parameter file) will
                work only with the DataLab IO of the
                serial number defined as id. The syntax of
                parameter is id = number,number,..,number. If
                there is only one device connected to the computer, this
                parameter is optional and can be omitted with the whole [device]
                section (if no other parameter of [device]
                section is used, of course). Hint: The number list can be used when the DataLab IO device should be replaced by another
                device without stopping of the application and editing the
                parameter file. The list then should contain the serial
                numbers of both primary and the backup devices. The number of
                devices in the list is not limited.If the status channel is required by the application, its
                number must be defined by the parameter status_channel
                in the [device] section. If the parameter file
                defines this channel, it is necessary to define this number in
                '.DMF' file as input channel of type longcard.
                The status channel is described in the Driver status channel chapter. Also the channel returning DataLab IO identifier number can be defined in the
                [device] section. The identifier channel number
                must be defined by the parameter id_channel. If
                the parameter file defines this channel, it is necessary to
                define this number in '.DMF' file as input channel
                of type longcard. It is also possible to define logical parameter reset_outputs
                in the [device] section. If the parameter is true
                (reset_outputs = true), all output
                channels are reset to their initial state (the sate in which
                channels are when the device is powered on) when the
                application is terminated or when the host PC (or connection
                to host PC) fails. Module sections [module_x]Every I/O module, plugged into the device,
                  must have a section in the parameter file named according to
                  the device slot (see chapter Module
                  positions and device slots). Sections names are in
                  square brackets : [module_a] to [module_d].
                  There are two mandatory parameters in each section: module_type
                  and first_channel. Other parameters (control_channel
                  and mode) are optional. 
                  
                  module_type defines module type: 
                      DI1, DI2—8 logical inputs module. Both modules are
                      compatible from the software point of view so both
                      identifiers can be used. The drive also accepts the L
                      and H variants of module identifiers (DI1L,
                      DI1H, etc.), but their usage is not
                      recommended.DO1, DO2, DO3—8 logical outputs module. All modules are
                      compatible from the software point of view so any
                      identifier can be used. AI1—8 16-bit
                      analog inputs module. The AI1 module is discontinued and
                      the driver supports it only to maintain backward
                      compatibility.AI2—8 16-bit
                      analog inputs module. The AI2 module replaced the AI1
                      module. Although it also provides 8 16-bit inputs, the
                      new module is faster and has better capabilities (e.g.
                      the input range can be defined independently for each
                      channel) so it is different module from the driver point
                      of view.AI3—enhanced
                      AI2 module with 8 16-bit analog inputs. The analog part
                      of this module is optimized compared to AI2 module, so
                      the AI3 module provides lower noise and better
                      precision. Number of input ranges was extended from 4
                      bipolar modes of AI2 module to 7 bipolar and 7 unipolar
                      ranges.AO1—8 12-bit
                      analog outputs module.AD1—module
                      combines 4 16-bit analog inputs (with input ranges
                      equivalent to the AI3 module) with 4 digital
                      inputs/outputs. The digital channel direction as well as
                      the input resistance can be chosen by the jumpers on the
                      module board.AD2—module
                      combines 4 16-bit analog inputs (with input ranges
                      equivalent to the AI3 module), two analog outputs with
                      8-bits resolution and 2 digital inputs/outputs. The
                      digital channel direction as well as the input
                      resistance can be chosen by the jumpers on the module
                      board.CNT1—4
                      counter inputs module.CNT2—1
                      incremental counter module.RTD1—module
                      contains 4 inputs for Resistive Temperature Detectors.
                      It is possible to connect various Pt100, Pt1000 and
                      Ni1000 RTDs with different Temperature Coefficient of
                      Resistance (TCR).first_input_channel and first_output_channel
                  define number of the first channel of the respective
                  direction assigned to the module. The following channels are
                  numbered with increasing numbers up to maximal number of
                  channels provided by the particular module. It is possible
                  to use keyword first_channel instead of first_input_channel
                  or first_output_channel providing the
                  particular module has channels of one direction
                  only.control_channel defines number of the
                  module control channel (control channel functionality
                  depends on the module type).mode defines module working mode. The
                  meaning of the mode is different for various modules and
                  mode can be meaningless for some modules. Some modules
                  enable definition of mode independently for each channel
                  using keywords mode1, mode2,
                  etc.unit defines the representation of data
                  read from or written to particular module channels. Unit has
                  meaning only for analog modules, digital modules use simple
                  boolean values or unit-less count. Default unit is ADU
                      (Analog/Digital Unit), which represents native counts of
                      the A/D or D/A converter used in the particular module.
                      But module can also use physical units: Unit can be defined for all channels of the module
                  or independently for each channel using the keywords unit1,
                  unit2 etc. Hint: Unit definition for the
                  particular channel has precedence over the definition for
                  the whole module. If for instance the all channels of the
                  AO1 module are configured as voltage output and only the
                  first two channel are configured as current outputs, units
                  can be defined as follows: module_type = AO1
unit = V
unit1 = mA
unit2 = mA DataLab IO1 has only one module
                slot, which corresponds to position A. The parameter file for
                DataLab IO1 should contain only one
                module section [module_a]. Parameter file example: [device]
id = 1234567
status_channel = 1
id_channel = 2
reset_outputs = true
[module_a]
module_type = DI1
first_channel = 100
mode1 = AC
mode2 = AC
[module_b]
module_type = DO2
first_channel = 108
control_channel = 120
[module_c]
module_type = AO1
first_channel = 200
unit = V
unit1 = A
unit2 = A
unit3 = A
unit4 = A
[module_d]
module_type = CNT1
first_input_channel = 300
first_output_channel = 310
control_channel = 320
mode1 = enable
mode2 = enable
mode3 = enable
mode4 = enable Channels and modes of individual module typesEvery module (depending on its module type) provides channels
            for reading or writing of values. Some module types offer control
            channel and/or mode. Channel types, directions, control channel
            functions and modes for various module types are as follows: Digital input modules DI1 and DI2
                  Module type designation in parameter file: DI1
                  or DI2.Data channels: 8 input channels of boolean
                  type.Control channel: bidirectional channel of shortcard
                  type: 
                      Control channel provides values of all 8 inputs
                      as one number when read—every
                      input defines one bit in the read number.Writing to control channel defines mode for
                      individual inputs (see mode description).Mode: digital inputs can work with both positive and
                  negative signal polarity, so they are capable to detect not
                  only DC but also AC signals. If the input is configured to
                  detect DC signal, its logical value represents current level
                  of input voltage. But the logical value determination is
                  more complex in the AC mode: 
                      Inputs are sampled at 1 kHz.If the voltage of any polarity occurs on the
                      terminal connector, the logical 1 (true) value is
                      returned from the time of the first sample, which
                      detects it. This means logical 0 (false) can be read up
                      to 1 ms from the time of the voltage
                      occurrence.If the voltage disappears from the terminal
                      connector, logical 1 (true) is read for the following
                      10 ms. When no one sample indicates voltage on the
                      input for 10 ms, the read value becomes logical 0
                      (false) again. The 10 ms delay corresponds to one
                      half-wave of 50 Hz AC signal, which means zero
                      crossings of the 50 Hz or 60 Hz signal do not
                      cause switch to 0.  The sampling mode can be defined individually for
                  each input. Numerical value of the mode parameter (or
                  control channel write anytime at application runtime)
                  corresponds to the bit mask created from 0s and
                  1s for each input channel. If the particular bit is 1
                  then the input will work in AC mode, 0 means the DC mode
                  will be used. For instance the value 0 means all inputs will
                  work in DC mode, 255 (or 0FFH) means all inputs will work in
                  AC mode and 15 (or 0FH) sets channels 0 to 3 to AC mode and
                  channels 4 to 7 to DC mode. Mode can be also defined
                  by keywords DC and AC. Mode for
                  each channel must be defined individually in such case.
                  Because the DC mode is default, only channels which should
                  work in AC mode must be mentioned, for instance: mode1 = AC
mode5 = AC If the mode is not defined, the 0 (all inputs in DC
                  mode) is used by default. Digital counter module CNT1The module contains 4 counters with 24 bit range
                  (numeric range of every counter is 0 to
                  16,777,215). First two counters have more
                  configuration options compared to the second pair of
                  counters (last two counters are limited to simple counting
                  with the possibility to preset their value). Counter modes
                  (e.g. counting enabled/disabled, logical levels etc.) are
                  defined by setting module mode or by writing to module
                  configuration channel. 
                  
                  Module type designation in parameter file: CNT1.Output channels: 7 channels of longcard
                  type: No. 0—Preset0:
                  sets first counter value. Write to PresetX channel
                  overwrites the value of counter X. The counter then
                  continues incrementing the written value. Writing value 0 to
                  channel PresetX zeros the counter. It is also
                  possible to automatically zero counter upon its read (see
                  the description of counter modes). No. 1—Preset1: sets second counter
                  value. No. 2—Preset2:
                  sets third counter value. No. 3—Preset3: sets fourth counter
                  value. No. 4—Compare0: first counter compare
                  value. Surpassing of the CompareX value can,
                  depending on the counter mode, cause setting of the counter
                  X alarm output. No. 5—Compare1: second counter compare
                  value.  No. 6—Config:
                  counter configuration. Values written to this channel are
                  described later.Input channels: 4 channels of longcard
                  type. No. 0—Counter0:
                  first counter value. Reading of the CounterX
                  channel returns current value of counter X. Read operation
                  can, depending on the counter mode, zero the counter
                  X. No. 1—Counter1:
                  second counter value.  No. 2—Counter2: third counter value.
                   No. 3—Counter3:
                  fourth counter value. Control channel: output channel of longcard
                  type is identical to output channel No. 6: Config.
                  Mode: numeric value of the mode parameter is the same
                  as the value written to the Config or control
                  channel. Mode can be also defined as a list of keywords for
                  individual channels as described later. Functionality of the first two counters (counters
                  number 0 and 1) can be more complex: 
                  
                  When the counter X exceed the value written to the
                  CompareX channel, the alarm output can be set.
                  Alarm output logic (if active low or high) can be defined in
                  the counter X configuration.Counting can be enabled/disabled by the external
                  input (gate). Gate logic (if active low or high) can be
                  defined in the counter X configuration. The inputs of
                  counters 2 and 3 are used as gate inputs (counter 0 is
                  enabled by the counter 2 input, counter 1 is enabled by the
                  counter 3 input). Counter configuration can be written to the output channel
                No. 6 Config, to the control channel (control_channel)
                or can be defined as the module mode parameter.
                Configuration value is 4B long unsigned integer. Every byte
                contains configuration of one counter, the less significant
                byte contains configuration of counter 0, the most significant
                byte contains configuration of counter 3. Every byte meaning
                is defined by the bitmask according to the following
                table: 
                  
                   
                    
                    
                      | Bit | Counter 0 | Counter 1 | Counter 2 | Counter 3 | Meaning |  
                      | 0 | • | • | • | • | Counting enabled |  
                      | 1 | • | • | • | • | Counting of falling edges |  
                      | 2 | • | • | • | • | Zero counter upon read |  
                      | 3 | • | • | × | × | Test the gate input |  
                      | 4 | • | • | × | × | Set the alarm output |  
                      | 5 | • | • | × | × | Gate input is inverted (active low) |  
                      | 6 | • | • | × | × | Alarm output is inverted (active low) |  
                      | 7 | × | × | × | × | Reserved, must be 0 |  Individual counter configurationMode can be defined also for every channel
                individually: mode1 = 1001B
mode2 = 1011B
mode3 = 101B
mode4 = 101B Alternative way to define mode is using a list of
                  keywords: 
                  
                  enable—Counting
                  enabledfalling_edge—Counting of falling edgesreset_on_read—Zero counter upon readtest_gate—Test
                  the gate inputset_alarm—Set
                  the alarm outputgate_inverted—Gate input is inverted (active low)alarm_inverted—Alarm output is inverted (active low) Modes from the previous example can be defined as
                follows: mode1 = enable, test_gate
mode2 = enable, falling_edge, test_gate
mode3 = enable, reset_on_read
mode4 = enable, reset_on_read Incremental counter module CNT2The module contains 1 incremental counter 1 with
                  32-bit range (numerical range is from
                  -2,147,483,648 to
                  2,147,483,647). The counter is able to decode
                  quadrature modulation from position/angle sensors as well as
                  to work in up/down and step/direction modes. The counter is
                  also capable to preset counter value and capture value
                  according to logical inputs and to signal alarm outputs if
                  the counter value underflows low limit or overflows high
                  limit. 
                  
                  Module type designation in parameter file: CNT2.Output channels: 5 channels of longint
                  type: No. 0 – CounterPreset: sets counter
                  value. This value is used not only as new counter value
                  (counter then counts from this value), but it is also stores
                  to separate register and it will be used for overwriting of
                  counter value when the external input preset is
                  signaled (module input and output signals are described in
                  the DataLab IO device
                  documentation). No. 1 – CapturePreset: sets
                  capture register value. Current counter value is copied into
                  capture register when the external input capture is
                  signaled (module input and output signals are described in
                  the DataLab IO device
                  documentation). Writing to this channel can be used e.g. to
                  zero this register. No. 2 – CompareLo:
                  counter low compare value. If the current counter value is
                  less than this value then the alarm_lo logical
                  output will be signaled (module input and output signals are
                  described in the DataLab IO device
                  documentation). No. 3 – CompareHi: counter
                  high compare value. If the current counter value is greater
                  than this value then the alarm_hi logical output
                  will be signaled (module input and output signals are
                  described in the DataLab IO device
                  documentation). No. 4 – Config: counter
                  configuration. Values written to this channel are described
                  later.Input channels: 2 channels of longint
                  type: No. 0 – Counter: current counter
                  value. No. 1 – Capture: capture register
                  value. Either the value written to channel
                  CapturePreset (if no capture input signal
                  was detected between writing to CapturePreset an
                  reading of Capture) or the counter value in the
                  time of the capture input signaling is returned
                  through this channel.Control channel: output channel of longint
                  type is identical to output channel No. 4:
                  Config.Mode: numeric value of the mode parameter is the same
                  as the value written to the Config or control
                  channel. Counter configuration can be written to the output channel
                No. 4 Config, to the control channel (control_channel)
                or can be defined as the module mode parameter.
                Configuration value is 32-bit integer number. Individual bit
                meaning is defined in the following table: 
                  
                   
                    
                      | Bit | Meaning |  
                      | 0 | alarm_lo output enabled (when counter
                      underflows CompareLo value) |  
                      | 1 | alarm_hi output enabled (when counter
                      overflows CompareHi value) |  
                      | 2 | preset input enabled |  
                      | 3 | capture input enabled |  
                      | 4 | Invert alarm_lo output (active low) |  
                      | 5 | Invert alarm_hi output (active low) |  
                      | 6 | Invert preset output (active low) |  
                      | 7 | Invert capture output (active low) |  
                      | 8-9 | Counter function (functions are described
                      later) |  
                      | 10-11 | Reserved, must be 0 |  
                      | 12 | Invert input A (only for functions 01 and
                      10) |  
                      | 13 | Invert input B (only for functions 01 and
                      10) |  
                      | 14-31 | Reserved, must be 0 |  Bits meaning in incremental counter
                  configurationThe counter is capable to handle three input signal
                  types, depending on its function. Counter function is
                  defined by configuration bits 8 and 9 as follows: 
                  
                  00 - quadrature counter: A and
                  B inputs are used as inputs from positional or
                  angle sensors using quadrature encoding (every edge causes
                  counting, phase shift of A and B
                  inputs determines up or down direction). It is not possible
                  to invert A and B input signals in
                  this case.01 - up/down counter: The
                  A input causes counter increment, input
                  B causes counter decrement. Input logic (if the
                  rising or falling edge is active) is defined by bits 12 and
                  13 of configuration register.10 - step/direction counter: The counter is
                  incremented or decremented by the logical input A.
                  The direction (whether counter is incremented or
                  decremented) is defined by the logical input B.
                  Input logic (if the rising or falling edge is active) is
                  defined by bits 12 and 13 of configuration
                  register.11 - invalid value, reserved for future
                  use. Alternative way to define mode is using a list of
                  keywords: 
                  
                  Counter function is defined by one of the following
                  three identifiers: quadrature, up_down,
                  step_directionenable_alarm_lo—alarm_lo output enabled (when counter
                  underflows CompareLo value)enable_alarm_hi—alarm_hi output enabled (when counter
                  overflows CompareHi value)enable_preset—preset input enabledenable_capture—capture input enabledinvert_alarm_lo—Invert alarm_lo output (active
                  low)invert_alarm_hi—Invert alarm_hi output (active
                  low)invert_preset—Invert preset output (active
                  low)invert_capture—Invert capture output (active
                  low)invert_a—Invert
                  input A (only for up_down and step_direction)invert_b—Invert
                  input B (only for up_down and step_direction) Mode from the previous example can be defined as
                follows: mode = step_direction, enable_preset, enable_capture, invert_a, invert_b Digital output modules DO1, DO2 and DO3
                  Module type designation in parameter file: DO1,
                  DO2, DO3.Data channels: 8 output channels of boolean
                  type.Control channel: output channel of shortcard
                  type sets values of all 8 outputs as one number when
                  written—every bit is set to
                  appropriate output.Mode: N/A. Analog input module AI1
                  Module type designation in parameter file: AI1.Data channels: 8 input channels of real
                  type.Control channel: output channel of shortcard
                  type sets input range—the range
                  number corresponds to value defined in the mode
                  parameter.Mode: number 0 to 3 defines input voltage range,
                  actual range depends also on module hardware settings and
                  available ranges are described later. There are a small array of jumpers on the module
                  printed circuit board (PCB), associated with every input
                  channel. Jumper configurations are described in the module
                  technical documentation. Basically, jumpers define two
                  settings: So the actual input range depends on the mode of analog
                inputs (defined by the parameter mode in
                parameter file and/or by control channel write) and also on
                the BIAS jumpers position. Hint: While the mode can be set for the whole module only
                (for all 8 channels), jumpers can be set independently for
                each channel. Every channel can be configured to measure
                voltage or current and every channel can have input range
                multiplied 4 times by BIAS jumpers. It is also clear
                that while the jumpers can be set only while the unit is
                unplugged fro USB and not powered, the mode can be changed
                programmatically. But thanks to Plug and Play features of
                DataLab IO it is not necessary to
                stop the application—the device can be
                unplugged, jumpers can be altered and the plugged
                again.Input voltage ranges of individual modes for both BIAS
                jumper positions are: 
                  
                   
                    
                      | BIAS | mode | Max. voltage between inputs | Full range |  
                      | on | 0 | +/-20 V | 40 V |  
                      | on | 1 | +/-10 V | 20 V |  
                      | on | 2 | +/-5 V | 10 V |  
                      | on | 3 | +/-2,5 V | 5 V |  
                      | off | 0 | +/-5 V | 10 V |  
                      | off | 1 | +/-2,5 V | 5 V |  
                      | off | 2 | +/-1,25 V | 2,5 V |  
                      | off | 3 | +/-0,625 V | 1,25 V |  Input ranges of analog inputsThe BIAS column represents BIAS jumper positions on the
                module PCB. Values Max. voltage between inputs a
                  Full range needs a brief explanation: 
                  
                  No one terminal connector pin is grounded so it does
                  not matter if the input voltage is -20 V and 0V,
                  -10 V and +10 V or 0 V and
                  +20 V. This is why the maximal voltage between inputs
                  is defined instead simply symmetrical difference. The
                  maximum difference causes reading of the maximum number from
                  the ADC 32767 (215 - 1).Inputs are fully bipolar so when we switch the input
                  polarity, negative numbers will be read. After connecting
                  0 V and -20 V number -32768 (-215) will be read. Although the maximal voltage between
                  pins is 20 V, both polarities creates full input range
                  40 V. Hint: Ranges 10 V and 5 V can be
                measured when BIAS is on (modes 2 and 3) or off (modes 0 and
                1). Due to ADC internal workings and signal filtration it is
                always better to use highest input ranges. It is recommended
                to configure BIAS off and use modes 0 and 1 for these
                ranges.Analog input module AI2
                  Module type designation in parameter file: AI2.Input channels: 8 channels of real type
                  for analog inputs.Output channels: 8 channels of shortcard
                  type for setting of input range of related channel. Value 0
                  turns off measuring of the particular input. 
                      
                       
                        
                          | Range | Voltage input | Current input |  
                          | 0 | input inactive | input inactive |  
                          | 1 | +/-10 V | N/A |  
                          | 2 | +/-5 V | N/A |  
                          | 3 | +/-2.5 V | +/-20.8 mA |  
                          | 4 | +/-1.25 V | +/-10.4 mA |  Input ranges of AI2 analog input
                      moduleThe default input range is +/-10 V. Control channel: output channel of longcard
                  type sets input range for all 8 inputs. Every input is
                  represented by 4 bits, so 8 channels occupy 32 bits. Writing
                  to control channel the replaces eight writes to all output
                  channels.Mode: number representing input range for all 8
                  inputs, every 4 bits define range for one input channel (the
                  value has the same meaning as value written to control
                  channel). Mode can be also
                  defined individually for every channel using keywords mode1,
                  mode2, etc. mode1 = 2;
mode2 = 4; Mode definition and writing to control channel upon
                  application startup are equivalent. If the input ranges are
                  not changed during application runtime mode definition is a
                  better way. If the ranges are defined in the program, mode
                  definition is superfluous.Unit: module supports values in three units—native A/D converter counts (ADUs), volts or
                  millivolts and amperes or milliamperes. Preferred units are
                  defined using one of the predefined keywords: ADU,
                  V, mV, A or
                  mA. Units can be defined for all output
                  channels (using key unit) or independently for
                  each channel (using keys unit1, unit2,
                  etc.). The default unit is ADU. If the ADU unit is
                  chosen, minimal value (e.g. -10 V) is represented by the number -32768
                  and maximal value (e.g. 10V) by number 32767. If physical
                  units are chosen, numbers -10 a nd 10 are directly
                  read. There is a jumper on the module PCB associated with every
                input channel. Closing the jumper causes a precision
                120 Ω resistor is inserted into the input, which
                changes voltage input into the current one. Hint: Input ranges can be defined for every input channel
                independently by the application program. But the voltage or
                current mode is selected by jumper on the PCB and this cannot
                be performed on application runtime.The AI2 module allows not only input range setting for
                individual inputs, but also allows switching each input off.
                Skipping of particular input speeds up the sampling frequency
                of remaining inputs. The module is able to sample data at frequency 50 Hz (50 samples per second) on one channel.
                If all 8 channels are measured, the sampling speed is
                6.25 Hz. If it
                is for instance necessary to sample data 10× per second, only 5 channels can be turned
                on, remaining 3 channels must be turned off. It is not necessary to wait for the digital filter to
                settle down when only one channel is measured and the input
                multiplexer is not switched. The data sampling frequency is
                then 200 Hz. But keep on mind
                that the A/D converter is not able to pass the step over the
                full input range to its output at this speed. If the input
                voltage changes e.g. from -10 V to +10 V, the converter needs 4 cycles to
                propagate the step to the output. So the sampling frequency is
                again 50 Hz. Analog input module AI3
                  Module type designation in parameter file: AI3.Input channels: 8 channels of real type
                  for analog inputs.Output channels: 8 channels of cardinal
                  type for setting of input range of related channel. Values 0
                  and 8 turns off measuring of the particular
                  input. 
                      
                       
                        
                          | Range | Voltage input | Current input |  
                          | 0 | input inactive | input inactive |  
                          | 1 | +/-10 V | N/A |  
                          | 2 | +/-5 V | N/A |  
                          | 3 | +/-2 V | +/-20 mA |  
                          | 4 | +/-1 V | +/-10 mA |  
                          | 5 | +/-0.5 V | +/-5 mA |  
                          | 6 | +/-0.2 V | +/-2 mA |  
                          | 7 | +/-0.1 V | +/-1 mA |  
                          | 8 | input inactive | input inactive |  
                          | 9 | 0..10 V | N/A |  
                          | 10 | 0..5 V | N/A |  
                          | 11 | 0..2 V | 0..20 mA |  
                          | 12 | 0..1 V | 0..10 mA |  
                          | 13 | 0..0.5 V | 0..5 mA |  
                          | 14 | 0..0.2 V | 0..2 mA |  
                          | 15 | 0..0.1 V | 0..1 mA |  Input ranges of AI3 analog input
                      moduleThe default input range is +/-10 V. Control channel: output channel of longcard
                  type sets input range for all 8 inputs. Every input is
                  represented by 4 bits, so 8 channels occupy 32 bits. Writing
                  to control channel the replaces eight writes to all output
                  channels.Mode: number representing input range for all 8
                  inputs, every 4 bits define range for one input channel (the
                  value has the same meaning as value written to control
                  channel). Mode can be also
                  defined individually for every channel using keywords mode1,
                  mode2, etc. mode1 = 2;
mode2 = 4; Mode definition and writing to control channel upon
                  application startup are equivalent. If the input ranges are
                  not changed during application runtime mode definition is a
                  better way. If the ranges are defined in the program, mode
                  definition is superfluous.Unit: module supports values in three units—native A/D converter counts (ADUs), volts or
                  millivolts and amperes or milliamperes. Preferred units are
                  defined using one of the predefined keywords: ADU,
                  V, mV, A or
                  mA. Units can be defined for all output
                  channels (using key unit) or independently for
                  each channel (using keys unit1, unit2,
                  etc.). The default unit is ADU. If the ADU unit is
                  chosen, minimal value (e.g. -10 V) is represented by the number -32768
                  and maximal value (e.g. 10V) by number 32767. If physical
                  units are chosen, numbers -10 a nd 10 are directly
                  read. There is a jumper on the module PCB associated with every
                input channel. Closing the jumper causes a precision
                100 Ω resistor is inserted into the input, which
                changes voltage input into the current one. Hint: Input ranges can be defined for every input channel
                independently by the application program. But the voltage or
                current mode is selected by jumper on the PCB and this cannot
                be performed on application runtime.The AI3 module allows not only input range setting for
                individual inputs, but also allows switching each input off.
                Skipping of particular input speeds up the sampling frequency
                of remaining inputs. The module is able to sample data at frequency 50 Hz (50 samples per second) on one channel.
                If all 8 channels are measured, the sampling speed is
                6.25 Hz. If it
                is for instance necessary to sample data 10× per second, only 5 channels can be turned
                on, remaining 3 channels must be turned off. It is not necessary to wait for the digital filter to
                settle down when only one channel is measured and the input
                multiplexer is not switched. The data sampling frequency is
                then 200 Hz. But keep on mind
                that the A/D converter is not able to pass the step over the
                full input range to its output at this speed. If the input
                voltage changes e.g. from -10 V to +10 V, the converter needs 4 cycles to
                propagate the step to the output. So the sampling frequency is
                again 50 Hz. Analog output module AO1
                  Module type designation in parameter file: AO1.Data channels: 8 output channels of real
                  type.Control channel: N/A.Mode: N/A.Unit: module supports values in three units—native D/A converter counts (ADUs), volts or
                  millivolts and amperes or milliamperes. Preferred units are
                  defined using one of the predefined keywords: ADU,
                  V, mV, A or
                  mA. Units can be defined for all output
                  channels (using key unit) or independently for
                  each channel (using keys unit1, unit2,
                  etc.). The default unit is ADU. Analog output module provides 8 voltage analog outputs with
                the range 0 to +10 V. D/A
                converter has 12 bit resolution.
                Each D/A converter count equals to
                2.5 mV output voltage change. First four of eight outputs can be configured as current
                outputs with range from 0 to 20 mA using jumpers on the
                module PCB. Due to the high resolution of the DAC the 4 to
                20 mA range is implemented by software limitation of 0 to
                20 mA range. Combined analog input and digital input/output module
              AD1
                  Module type designation in parameter file: AD1.Input channels: 
                      
                      4 channels of real type for every
                      analog input.The following 4 channels of boolean
                      type for every digital output. These channels return
                      current logical value of digital inputs. The are
                      intended for reading of DC signals.Next 4 channels of boolean type
                      return logical value of digital input evaluated as AC
                      input. The rules to evaluate true and false of AC signal
                      are described in the description of digital input modules.Output channels: 
                      
                      4 channels of cardinal type for
                      setting of input range of related channel. Values 0 and
                      8 turns off measuring of the particular
                      input. Input ranges of analog input channels equal
                      to the input ranges of the AI3 module. They are
                      described in detail in the AI3 module
                      description.The following 4 channels of boolean
                      type for every digital output.Control channel: output channel of longcard
                  type sets input range for all 4 inputs. Every input is
                  represented by 4 bits, so 4 channels occupy 16 bits. Writing
                  to control channel the replaces writes to first four output
                  channels.Mode: number representing input range for all 4
                  inputs, every 4 bits define range for one input channel (the
                  value has the same meaning as value written to control
                  channel). Mode can be also
                  defined individually for every channel using keywords mode1,
                  mode2, etc. mode1 = 2;
mode2 = 4; Mode definition and writing to control channel upon
                  application startup are equivalent. If the input ranges are
                  not changed during application runtime mode definition is a
                  better way. If the ranges are defined in the program, mode
                  definition is superfluous.Unit: module supports values in three units—native A/D converter counts (ADUs), volts or
                  millivolts and amperes or milliamperes. Preferred units are
                  defined using one of the predefined keywords: ADU,
                  V, mV, A or
                  mA. Units can be defined for all output
                  channels (using key unit) or independently for
                  each channel (using keys unit1, unit2,
                  etc.). The default unit is ADU. If the ADU unit is
                  chosen, minimal value (e.g. -10 V) is represented by the number -32768
                  and maximal value (e.g. 10V) by number 32767. If physical
                  units are chosen, numbers -10 a nd 10 are directly
                  read. AD1 module analog inputs equal to the AI3 module inputs.
                Choosing voltage or current inputs, switching input ranges,
                sampling rate and other characteristics are described in the
                 AI3 module description. But
                because the AD1 module has only 4 analog input channels, the
                input sampling rate is 12.5 Hz, not 6.25 Hz as in the case of AI3 module. Combined analog input/output and digital input/output
              module AD2
                  Module type designation in parameter file: AD2.Input channels: 
                      
                      4 channels of real type for every
                      analog input.The following 2 channels of boolean
                      type for every digital output. These channels return
                      current logical value of digital inputs. The are
                      intended for reading of DC signals.Next 2 channels of boolean type
                      return logical value of digital input evaluated as AC
                      input. The rules to evaluate true and false of AC signal
                      are described in the description of digital input modules.Output channels: 
                      
                      4 channels of cardinal type for
                      setting of input range of related channel. Values 0 and
                      8 turns off measuring of the particular
                      input. Input ranges of analog input channels equal
                      to the input ranges of the AI3 module. They are
                      described in detail in the AI3 module
                      description.The following 2 channels of real
                      type for analog outputs.Next 2 channels of boolean type for
                      every digital output.Control channel: output channel of longcard
                  type sets input range for all 4 inputs. Every input is
                  represented by 4 bits, so 4 channels occupy 16 bits. Writing
                  to control channel the replaces writes to first four output
                  channels.Mode: number representing input range for all 4
                  inputs, every 4 bits define range for one input channel (the
                  value has the same meaning as value written to control
                  channel). Mode can be also
                  defined individually for every channel using keywords mode1,
                  mode2, etc. mode1 = 2;
mode2 = 4; Mode definition and writing to control channel upon
                  application startup are equivalent. If the input ranges are
                  not changed during application runtime mode definition is a
                  better way. If the ranges are defined in the program, mode
                  definition is superfluous.Unit: module supports values in three units—native A/D converter counts (ADUs), volts or
                  millivolts and amperes or milliamperes. Preferred units are
                  defined using one of the predefined keywords: ADU,
                  V, mV, A or
                  mA. Units can be defined for all output
                  channels (using key unit) or independently for
                  each channel (using keys unit1, unit2,
                  etc.). The default unit is ADU. If the ADU unit is
                  chosen, minimal value (e.g. -10 V) is represented by the number -32768
                  and maximal value (e.g. 10V) by number 32767. If physical
                  units are chosen, numbers -10 a nd 10 are directly
                  read. AD2 module analog inputs equal to the AI3 module inputs.
                Choosing voltage or current inputs, switching input ranges,
                sampling rate and other characteristics are described in the
                 AI3 module description. But
                because the AD2 module has only 4 analog input channels, the
                input sampling rate is 12.5 Hz, not 6.25 Hz as in the case of AI3 module. Analog outputs can be configured as voltage or current
                outputs using jumpers on the module PCB. Voltage output range
                is 0 to 10 V, current output
                range is 0 to 20 mA. The used D/A converter has
                8-bit resolution and one count corresponds to
                41.5 mV or
                0.083 mA. Combined analog input/output module AIO1
                  Module type designation in parameter file: AIO1.Input channels:Output channels: 
                      
                      4 channels of cardinal type for
                      setting of input range of related channel. Values 0 and
                      8 turns off measuring of the particular
                      input. Input ranges of analog input channels equal
                      to the input ranges of the AI3 module. They are
                      described in detail in the AI3 module
                      description.The following 4 channels of real
                      type for analog outputs.Control channel: output channel of longcard
                  type sets input range for all 4 inputs. Every input is
                  represented by 4 bits, so 4 channels occupy 16 bits. Writing
                  to control channel the replaces writes to first four output
                  channels.Mode: number representing input range for all 4
                  inputs, every 4 bits define range for one input channel (the
                  value has the same meaning as value written to control
                  channel). Mode can be also
                  defined individually for every channel using keywords mode1,
                  mode2, etc. mode1 = 2;
mode2 = 4; Mode definition and writing to control channel upon
                  application startup are equivalent. If the input ranges are
                  not changed during application runtime mode definition is a
                  better way. If the ranges are defined in the program, mode
                  definition is superfluous.Unit: module supports values in three units—native A/D converter counts (ADUs), volts or
                  millivolts and amperes or milliamperes. Preferred units are
                  defined using one of the predefined keywords: ADU,
                  V, mV, A or
                  mA. Units can be defined for all output
                  channels (using key unit) or independently for
                  each channel (using keys unit1, unit2,
                  etc.). The default unit is ADU. If the ADU unit is
                  chosen, minimal value (e.g. -10 V) is represented by the number -32768
                  and maximal value (e.g. 10V) by number 32767. If physical
                  units are chosen, numbers -10 a nd 10 are directly
                  read. AIO1 module analog inputs equal to the AI3 module inputs.
                Choosing voltage or current inputs, switching input ranges,
                sampling rate and other characteristics are described in the
                 AI3 module description. But
                because the AIO1 module has only 4 analog input channels, the
                input sampling rate is 12.5 Hz, not 6.25 Hz as in the case of AI3 module. Analog outputs can be configured as voltage or current
                outputs using jumpers on the module PCB. Voltage output range
                is 0 to 10 V, current output
                range is 0 to 20 mA. The used D/A converter has
                12-bit resolution and one count corresponds to
                2.5 mV or
                0.005 mA. Module for Resistive Temperature Detectors RTD1
                  Module type designation in parameter file: RTD1.Input channels: 4 channels of real type
                  for every input.Output channels: 4 channels of cardinal
                  type for setting of input range of related channel. Range
                  values are bit-oriented and they are constructed according
                  to the same rules valid for mode parameter described below.
                  Value 0 switches off particular input. Allowed range values
                  are stated in the following table. 
                      
                       
                        
                          | Detector | Pt100 |  
                          | Temperature range | Temperature Coefficient of Resistance
                          (TCR) |  
                          | 3850 | 3750 | 3911 | 3926 |  
                          | –50..+150°C | 1 | 17 (11H) | 33 (21H) | 48 (31H) |  
                          | 0..+100°C | 2 | 18 (12H) | 34 (22H) | 49 (32H) |  
                          | 0..+200°C | 3 | 19 (13H) | 35 (23H) | 50 (33H) |  
                          | 0..+400°C | 4 | 20 (14H) | 36 (24H) | 51 (34H) |  
                          | –50..+50°C | 5 | 21 (15H) | 37 (25H) | 52 (35H) |  
                          | Detector | Pt1000 |  
                          | Temperature range | Temperature Coefficient of Resistance
                          (TCR) |  
                          | 3850 | 3750 | 3911 | 3926 |  
                          | –50..+150°C | 6 | 22 (16H) | 38 (26H) | 53 (36H) |  
                          | 0..+100°C | 7 | 23 (17H) | 39 (27H) | 54 (37H) |  
                          | 0..+200°C | 8 | 24 (18H) | 40 (28H) | 55 (38H) |  
                          | –50..+50°C | 9 | 25 (19H) | 41 (29H) | 56 (39H) |  
                          | Detector | Ni1000 |  
                          | Temperature range | Temperature Coefficient of Resistance
                          (TCR) |  
                          | 5000 | 6180 | 6370 | 6720 |  
                          | –50..+150°C | 70 (46H) | 86 (56H) | 102 (66H) | 118 (76H) |  
                          | 0..+100°C | 71 (47H) | 87 (57H) | 103 (67H) | 119 (77H) |  
                          | 0..+200°C | 72 (48H) | 88 (58H) | 104 (68H) | 120 (78H) |  
                          | –50..+50°C | 73 (49H) | 89 (59H) | 105 (69H) | 121 (79H) |  
                          | Input off | 0 |  Ranges for RTD1 moduleDefault value is 1 (Pt100/3850, -50 až
                  +150°C). Control channel: output channel of longcard
                  type sets input range for all 4 inputs. Every input is
                  represented by 1 byte, so 4 channels occupy 32 bits.
                  Writing to control channel the replaces writes to all four
                  output channels.Mode: number representing input range for all 4
                  inputs, every byte defines range for one input channel (the
                  value has the same meaning as value written to control
                  channel). Particular byte value is bit-oriented and consists
                  of two groups. Bits 0 to 3 determines one of nine available
                  resistance ranges. Bits 4 to 6 determines Temperature
                  Coefficient of Resistance (TCR), which depends on the RTD
                  type. Bit 7 is not used and must be 0. Bits 0 to 3
                  meaning: 
                      
                       
                        
                          | Bit 0 to 3 | Resistance range [Ω] | Temperature range [°C] |  
                          | 0000 | input off | input off |  
                          | 0001 | 75..160 | –50..+150°C |  
                          | 0010 | 91..150 | 0..+100°C |  
                          | 0011 | 91..180 | 0..+200°C |  
                          | 0100 | 91..240 | 0..+400°C |  
                          | 0101 | 75..130 | –50..+50°C |  
                          | 0110 | 680..2000 | –50..+150°C |  
                          | 0111 | 910..1800 | 0..+100°C |  
                          | 1000 | 910..2500 | 0..+200°C |  
                          | 1001 | 680..1300 | –50..+50°C |  Temperature and resistance rangesBits 4 to 6 meaning: 
                      
                       
                        
                          | Bit 4 to 6 | TCR [PPM/°C] | RTD Type |  
                          | 000 | 3850 | Pt100/Pt1000 |  
                          | 001 | 3750 | Pt100/Pt1000 |  
                          | 010 | 3911 | Pt100/Pt1000 |  
                          | 011 | 3926 | Pt100/Pt1000 |  
                          | 100 | 5000 | Ni1000 |  
                          | 101 | 6180 | Ni1000 |  
                          | 110 | 6370 | Ni1000 |  
                          | 111 | 6720 | Ni1000 |  Temperature Coefficient of Resistance
                      (TCR)Mode can be also
                  defined individually for every channel using keywords mode1,
                  mode2, etc. mode1 = 5
mode2 = 5
mode3 = 56H
mode4 = 56H Mode definition and writing to control channel upon
                  application startup are equivalent. If the input ranges are
                  not changed during application runtime mode definition is a
                  better way. If the ranges are defined in the program, mode
                  definition is superfluous. Another (and more clear)
                  method of mode definition is using of predefined keywords.
                  Mode parameter is the written as follows: mode = <sensor>, <coefficient>, <range> where individual items are: 
                      
                      <sensor>—RTD type. Available values are: Pt100,
                      Pt1000, Ni1000. The default
                      value is Pt100.<coefficient>—Temperature Coefficient of Resistance
                      (TCR). This coefficient is sometimes marked as α (
                      α = TCR / 106). Available values: 3850, 3750,
                      3911, 3926, 5000,
                      6180, 6370, 6720.
                      Default value TCR is 3850 PPM/°C.<range>—temperature range. Allowed ranges are 1 to
                      5 according to the following table: 
                      
                       
                        
                          | Range number | Temperature range [°C] |  
                          | 1 | –50..+150°C |  
                          | 2 | 0..+100°C |  
                          | 3 | 0..+200°C |  
                          | 4 | 0..+400°C |  
                          | 5 | –50..+50°C |  Temperature rangesUnit: module supports values in different
                  units—native A/D converter counts
                  (ADUs), Ohms, degrees Celsius, Fahrenheit of Kelvins.
                  Preferred units are defined using one of the predefined
                  keywords: ADU, Ohm, C,
                  F or K. Units can be defined
                  for all output channels (using key unit) or
                  independently for each channel (using keys unit1,
                  unit2, etc.). The default unit is ADU. If
                  the ADU unit is chosen, minimal value is represented by the
                  number 0 and maximal value by number 65,535.
                  The value 0 can also mean short circuit on input or
                  disconnected detector. Value 65,535 can mean
                  overflow of the selected temperature range. If physical
                  units are chosen, numbers in particular units are directly
                  read. Hint: Input ranges can be defined for every input channel
                independently by the application program.Inputs are sampled at the same speed as in the case of the
                AI3 module. However, sampling speed is not critical in the
                case of temperature measurement using RTD. Mode and control channel usageThe same module configuration can be often defined in two
                ways—by writing to control channel or
                by setting the mode parameter in the parameter file. The
                numerical value is the same in both cases. Writing the control
                channel on application startup (e.g. in OnStartup() procedure
                of some instrument) has the same effect as defining the mode
                parameter in the parameter file. The driver stores value written to control channel and uses
                it as module mode. If the module is disconnected and then
                connected again, the module is initialized with the last value
                written to the control channel and not with mode value defined
                in the parameter file. Driver-specific error codesThe driver generates the following error
              codes: 
              
              device unplugged: DataLab IO unit is without power (applicable to
              self-powered units only) or the USB cable is unplugged. This
              error should not occur if the DataLab IO unit is embedded to DataLab PC computer, because the power and USB cabling
              is internal in this case.wrong module: The module, plugged into the
              particular DataLab IO slot, is of
              different type that stated in the parameter file. It is usually
              easier to update the parameter file than to swap modules in the
              device. If the parameter file was created automatically by the
              driver configuration tool, this error should not occur.module does not support control channel read:
              Application attempted to read control channel of module, which
              does not support it (see chapterChannels and
              modes of individual module types).module does not support control channel write:
              Application attempted to write control channel of module, which
              does not support it (see chapterChannels and
              modes of individual module types). Module positions and device slotsDataLab IO4 has four slots marked by
            letters A, B, C and D. These slots are placed in the device as
            displayed on the picture: 
 Module positions on the DataLab IO unitTake care to orient the unit properly—slots A and B are on top when the device blue LED
            and also the USB and power connectors are on the right side. The slot letters are necessary only for users—they do not affect the device functionality. Any
            module can be placed to any slot. The device automatically detects
            plugged module types and adopts to the current configuration. But
            if the device is used with the Control Web
            application, the parameter file contains parameters for concrete
            modules and it is necessary to uniquely identify these
            modules. DataLab IO1 has only one module slot
            marked A. This is why the parameter file for DataLab IO1 unit should have only the [module_a]
            section. Driver configuration in the Control Web
          development environmentThe Control Web development environment offers
            tools for comfortable driver configuration. This tool
            automatically creates driver parameter file (.par) and driver map
            file (.dmf) according to the application author's needs. The driver configuration tool scans the USB bus to search all
            DataLab IO units plugged to the computer.
            All units including their identifiers and plugged modules are
            displayed in a tree. 
 Scanning of all connected DataLab IO devicesIt is possible to choose the device with which the particular
            driver will communicate. Device parameters can be edited using the
            structured sheet editor, showing parameters of individual
            sections. 
 Driver parameter editingThe driver configuration tool can create both parameter and
            mapping files from defined parameters. It is of course possible to
            edit these files using arbitrary text editor. 
 The parameter file in the text formDataLab IO system driverThe operating system needs proper drivers to correctly detect
            and handle all USB devices. There is a system driver on the CD-ROM
            supplied with every DataLab IO device.
            Driver files are placed in '\English\DataLab
            IO_USB\Drivers\Windows' directory. This directory contains
            only two files: 'dlusb.sys' (the driver itself) and
            'dlusb.inf' (installation information). The driver can
            be installed explicitly by clicking the 'dlusb.inf'
            file by right mouse button and choosing the Install
            menu item. But this way is not usual. The best way to install the
            system driver is just plug the DataLab IO
            device to USB port. The operating system will detect new USB
            device and prompts the user to enter path to driver files. It is
            possible to enter the path to '\dlusb' on CD-ROM or
            just to let the system to search the CD-ROM for drivers. Hint: It is not necessary to install the driver from the
            CD-ROM. Driver files can be copied to any disk storage. If for
            instance the target machine is not equipped with the CD-ROM drive,
            it is possible to copy driver files to USB Flash Disk and to
            install them from that copy.Warning: The 'dlusb.sys' driver is not signed by
            digital signature. Windows notifies the user about that and asks
            if the installation should continue. If you want to install the
            driver, just continue with installation. Digital signature is only
            a formal and should ensure using only drivers signed by Microsoft.
            It does not affect driver functionality.Operating system supportThe DataLab IO devices can
                theoretically work with any operating system supporting USB
                interface. However, as stated earlier, every operating system
                requires proper driver to work with USB device. Currently only
                Windows driver is supplied with DataLab IO devices. But there are also differences among various Windows
                versions. The 'dlusb.sys' corresponds to WDM
                (Windows Driver Model) specification. WDM drivers should work
                in Windows 98SE, Windows Me and also in Windows 2000 and
                Windows XP. But there are APIs missing in Windows 9x (Windows
                98 and Windows Me), necessary to correctly detect device
                arrival/removal from user mode. This is why the driver
                requires Windows 2000 and better versions of Windows (e.g.
                Windows XP). History of function enhancementsWhenever the functionality of DataLab IO is enhanced, the new version of software
              support must be released. Both DataLab IO system driver (the 'dlusb.sys'
              file) and Control Web and Active X driver (the 'dldrv.dll' file)
              must be upgraded together. This is why the major and minor
              version numbers of both files are the same. | Version 1.0 | The first released version. |  | Version 1.1 | Analog output modules (AO1) are supported by
              the drivers. |  | Version 1.5 | System driver version number is synchronized with
              Control Web and Active X driver (the 'dldrv.dll'
              file). |  |  | The USB communication is monitored by watchdog timer in
              the DataLab IO device. If the
              communication fails (e.g. due to EMI if the USB cable with
              broken shielding is used), the device electrically disconnects
              itself and reconnects again to restore connection to PC.
              Communication is restored approximately after 2 s. |  | Version 1.6 | The drivers newly support digital counter input and
              incremental counter modules (CNT1, CNT2). |  |  | It is possible to explicitly declare channel directions
              in the parameter file using new keywords (first_input_channel
              and first_output_channel). |  |  | The device can return its identification number through
              id_channel. |  |  | Numbers in parameter file can be written not only in
              decimal format, but also in binary and hexadecimal notation.
              Numbers in binary notation should be followed by letter
              B, numbers in hexadecimal notation should be followed
              by letter H. |  | Version 1.7 | It is possible to define logical parameter reset_outputs
              in the [device] section. If the parameter is true
              (reset_outputs = true), all output
              channels are reset to their initial state (the sate in which
              channels are when the device is powered on) when the application
              is terminated or when the host PC (or connection to host PC)
              fails. |  | Version 1.8 | Module types in the parameter file are identified
              directly by the module name, not by symbolic name. For instance
              the DI1 is used instead of digital_input,
              CNT1 instead of counter etc. Older
              denotations (digital_input, analog_output,
              etc.) are accepted to maintain backward compatibility, but newly
              added modules must be identified by module name, no new symbolic
              name is introduced. |  |  | Support for physical units was added to the driver (new
              parameter file keyword unit was introduced). Analog
              modules can define if the read/written values are expressed in
              native A/D or D/A converter steps (ADU), in volts (V) or
              amperes (A). Units can be also defined for individual channels
              using keywords unit1, unit2,
              etc. |  |  | If the module allows mode definition, it can be defined
              for individual channels using new keywords mode1,
              mode2, etc. |  |  | Mode can be defined also as list of symbolic keywords in
              addition to numbers (e.g. mode = step_direction, enable_preset). |  |  | The driver stores configuration values (values written to
              module control channel) and uses them as mode when the device is
              unplugged and plugged again. If the configuration is changed by
              the program, it is no longer necessary to capture the driver
              exception notifying about module plug in and write the control
              channel—driver does it internally for
              all modules with the exception of already discontinued AI1
              module. |  |  | Added support for AI2 analog input
              module. |  | Version 1.9 | Added support for AI3 analog input
              module. |  |  | Added support for AD1 analog input module
              with digital I/O. |  | Version 1.10 | Added support for AD2 analog I/O and digital
              I/O module. |  |  | Added support for RTD1 module. |  |  | Parameter id accepts number or number
              list. | 
 |