Contact Us
1-800-234-4232
Email  E-mail Sales
Email  E-mail Tech Support
Call Me Call Me Now
Distributors  Find a Distributor
Sign Up For MCC eNews!

Product Selection Guide

My Cart

Items: 
Subtotal: 
Shipping: 
Cart View Cart

DAQFLex and Universal Library Comparison


DAQFLex and Universal Library (UL) are Application Programming Interfaces (API) for interfacing with Measurement Computing Corporation DAQ boards. While these APIs both interface with MCC DAQ boards, they are designed for different use cases and are very different in nature.

Universal Library, which supports all MCC DAQ products, is intended for end-users who desire a wide breadth of product availability and intend to program on MS Windows® operating systems. It is a function-based programming interface (see Table 2).

DAQFlex, which only supports newer MCC USB DAQ products, is intended for OEM users who desire a small driver footprint, need to run programs on a variety of operating systems, or prefer to configure the system devices without a separate application. DAQFlex is a message-based (command-based) programming interface (see Table 2).

Please refer to Table 1 below for API differences.

Table 1 – Feature Comparison
FEATURE DAQFlex Universal Library
OS Support Windows®, Linux®, Mac® Windows Only
32-bit and 64-bit OS Support Yes Yes
Open Source Yes No
Hardware Support Limited All MCC DAQ Devices
Thread Safe Yes No
Driver Footprint 4 MB 28.5 MB
DAQ Feature Support Full Full
Single-Point Acquisition Speed Good Better
Digital I/O Speed Good Better
Development Framework Mono/.net Windows
Language Support VisualBasic (VB), C#, C++/CLI* VB, C++, C#, NI LabVIEW (ULx)
Separate Configuration Utility Needed No Yes (InstaCal)
Examples Yes Yes
Free Technical Support Yes Yes
* C++/CLI supported in Windows only

Table 2 – Code Examples
FEATURE DAQFlex Universal Library
Single-Point AI Device.SendMessage(“AI{0}:RANGE=BIP5V”)
Value = Device.SendMessage(“?AI{0}:VALUE”)

cbAIn(BdNum, Ch, BIP5V, &Value)
Multiple-Point AI Device.SendMessage(“AISCAN:RANGE=BIP5V”)
Device.SendMessage(“AISCAN:LOWCHAN=0”)
Device.SendMessage(“AISCAN:HIGHCHAN=3”)
Device.SendMessage(“AISCAN:SAMPLES=1000”)
Device.SendMessage(“AISCAN:RATE=100”)
Device.SendMessage(“AISCAN:START”)
Data = Device.ReadScanData(1000, 0)
Handle = cbWinBuffAlloc(400)
cbAInScan(BdNum, LowCh, HighCh, Samples, &Rate,
BIP5V, Handle, Options)
CurCount = 0
CurIndex = 0
While (CurCount < Samples)
{
  cbGetStatus(BdNum, &Status, &CurCount, &CurIndex, AIFUNCTION)
}
cbWinBuffToArray(BdNum, Handle, &Data,
FirstPoint, Samples)

Single-Point DI Device.SendMessage(“DIO{0}:DIR=IN”)
Value = Device.SendMessage(“?DIO{0}:VALUE”)
cbDConfigPort(BdNum, PortNum, Direction)
cbDIn(BdNum, PortNum, &Value)