Introduction
Universal Driver is a software toolkit that provides a C language interface capability for Diamond Systems' I/O boards. It is provided free of charge and can be either downloaded or supplied on CD. It supports all the data acquisition features of Diamond Systems products, plus support for the watchdog timers on Diamond Systems CPU boards.
Key features:
- Multi-board operation:
- Control up to 16 I/O boards simultaneously, including multiple
units of the same board type (varies from CPU to CPU).
- Internet access for remote monitoring and control:
- Working together with our DALI embedded web server, your
application on one computer can get real-time data from another
computer across a TCP/IP network, and it can also control
that computer in real time. Up to 16 remote systems can be
monitored from one program, each with its own custom configuration
of boards. An entire factory can now be controlled from your
desktop!
- Consistent API:
- The command syntax is consistent from board to board and
across operating systems. You can retarget your application
for a different board or OS with a minimum of re-engineering.
- Auto-calibration:
- Universal Driver provides full support for the advanced
autocalibration features of our AT line of analog I/O boards.
Calibrate your board as often as you want with simple software
commands. Source code is included!
- User Interrupts:
- Write your own interrupt routine and have it execute each
time your board generates an interrupt. Your own code can
run together with or instead of the standard interrupt routines.
For example, you can provide real-time FFT calculations on
analog data as it is acquired, or you can synchronize your
code to run at a programmed interval or in response to an
external event.
- Extensive programming examples:
- Each board has its own set of example programs for most
or all of the applicable functions. The programs are provided
both in source code and pre-compiled for each supported operating
system. The programs are extensively commented, so you can
get familiar with the Universal Driver quickly. In addition,
the example programs are provided with project files with
all the necessary settings, so you can use it as a starting
point and recompile it with a minimum of hassle.
- Extensive functionality:
- The Universal Driver includes advanced counting/timing functions
such as frequency/period measurement and pulse width modulation
on Quartz-MM. It has support for the watchdog timer circuit
on our Prometheus CPU board.
We also provide low-level functions to enable read/write operations
directly to the board registers for custom applications. This is
useful in operating systems like Windows NT, where direct I/O access
to hardware is normally prohibited.
Supported Platforms
- Windows 95 / 98 / NT / NT Embedded / 2000 / XP / XP Embedded
- Windows CE .NET 4.2 and 5.0
- Linux 2.2 - 2.6 kernels (any distribution)
- MS-DOS™ / ROM-DOS™ / FreeDOS
- RTLinuxPro 2.1 and 2.2
- QNX 6 Momentics / Neutrino
- VxWorks 5.5.1 and Tornado 2.2.1
New features in Universal Driver version 5.8
• Improved Linux Support
The new Linux kernel version 2.6 is now supported. A new installation
script simplifies compilation of the kernel module required for
interrupt operations.
• Diamond Emerald-OPTO and Mercury Board Support
Digital I/O features provided by these boards are supported by DSCUD
5.8.
• New Utility Functions
New utility functions for unit conversion, sample averaging, 32
bit direct I/O, and setting system priority have been added. Here
is the list of new function names. See the driver documentation
for more information.
dscADCodeToVoltage() - Utility function for converting AD units
to voltage based on the AD settings used
dscVoltageToADCode() - Utility function for converting voltage to
AD units based on the AD settings used
dscDACodeToVoltage() - Utility function for converting DA units
to voltage based on the DA settings used
dscVoltageToDACode() - Utility function for converting voltage to
DA units based on the DA settings used
dscInpl() - Board independent direct I/O. Reads a double word from
the address
dscOutpl() - Board independent direct I/O. Write a double word to
that address
dscSetSystemPriority() - Sets the system priority for the interrupt
processing thread
dscADSampleAvg()
dscADScanAvg().
• Bug Fixes and Driver Improvements
A number of bugs have been fixed for this driver release. Below
are brief notes on the significant fixes.
Fixed bug in Hercules dscDASetSettings() which reset AD settings.
Fixed bug in Diamond-MM dscADScanInt() under QNX which caused delays
in ISR.
Improved Quartz Measure Period function.
Fixed bug in dscCancelOp() under Linux which could result in duplicate
data in some cases.
Improved Linux handling of delays caused by slow user interrupt
functions
Change to Diamond-MM-32-AT digital I/O behavior for functions dscDMM32DIOOutputByte() and dscDMM32DIOInputByte().
Bug fix for dscCounterSetRate() to not attempt to set the internal
clock if internal_clock is false.
Compilers
Compilers Supported by DSCUD
- For Win32:
- Microsoft Visual C++ 6.0. Version 5.0 and higher should
also be compatible but only version 6.0 is tested
- For DOS:
- Borland C++ 3.0 to 5.2. NOTE: Borland C++ Builder is not
supported
- Turbo C 3.0
- Microsoft Visual C++ 1.5
- Linux & QNX:
Driver Download
Universal
Driver 5.91 for DOS
Universal
Driver 5.91 for Labview
Universal
Driver 5.91 for Linux
Universal
Driver 5.91 for QNX6
Universal
Driver 5.91 for Win32
Universal Driver 5.91 for RTLinux
Universal Driver 5.91 for WinCE
Universal Driver 5.91 for VB.NET
Universal Driver 5.91 for VB6
Universal Driver 5.91 for VxWorks |