Device objects are the toolbox components you use to access your hardware device. They provide a gateway to the functionality of your hardware, and allow you to control the behavior of your data acquisition application. Each device object is associated with a specific hardware subsystem.
Note: You cannot use the legacy interface on 64-bit MATLAB®. See About the Session-Based Interface to acquire and generate data on a 64-bit MATLAB.
To create a device object, you call functions called object creation functions (or object constructors). These functions are implemented using the object-oriented programming capabilities provided by the MATLAB software, which are described in Object-Oriented Programming documentation. The device object creation functions are listed below.
Device Object Creation Functions
Create an analog input object.
Create an analog output object.
Create a digital I/O object.
Before you can create a device object, the associated hardware
driver adaptor must be registered. Adaptor registration occurs automatically.
However, if for some reason an adaptor is not automatically registered,
then you must do so manually with the
Refer to Hardware and Device Drivers for more information.
You can find out how to create device objects for a particular
vendor and subsystem with the
daqhwinfo function. For
example, to find out how to create an analog input object for an installed National Instruments® board,
you supply the appropriate Adaptor-Specific Information to
out = daqhwinfo('nidaq'); out.ObjectConstructorName(:)
ans = 'analoginput('nidaq','Dev1')' 'analogoutput('nidaq','Dev1')' 'digitalio('nidaq','Dev1')'
The constructor syntax tells you that you must supply the adaptor
name and the hardware ID to the
ai = analoginput('nidaq','Dev1');
The association between device objects and hardware subsystems is shown below.
Note: You cannot use the legacy interface on 64-bit MATLAB. See About the Session-Based Interface to acquire and generate data on a 64-bit MATLAB.
In the MATLAB workspace, you can create an array from existing
variables by concatenating those variables together. The same is true
for device objects. For example, suppose you create the analog input
ai and the analog output object
a sound card:
ai = analoginput('winsound'); ao = analogoutput('winsound');
You can now create a device object array consisting of
the usual MATLAB syntax. To create the row array
x = [ai ao]
Index: Subsystem: Name: 1 Analog Input winsound0-AI 2 Analog Output winsound0-AO
To create the column array
y = [ai;ao];
Note that you cannot create a matrix of device objects. For example, you cannot create the matrix
z = [ai ao;ai ao];
??? Error using ==> analoginput/vertcat Only a row or column vector of device objects can be created.
Depending on your application, you might want to pass an array of device objects to a function.
x.SampleRate = 44100)
Refer to the functions to see which one accept a device object array as an input argument.
When you create a device object, it exists in both the MATLAB workspace
and the data acquisition engine. For example, suppose you create the
analog input object
ai for a sound card and then
make a copy of
ai = analoginput('winsound'); newai = ai;
The copied device object
newai is identical
to the original device object ai. You can verify this by setting a
property value for
ai and returning the value of
the same property from
ai.SampleRate = 22050
ans = 22050
As shown below,
the same property value because they both reference the same device
object in the data acquisition engine.
If you delete either the original device object or a copy, then the engine device object is also deleted. In this case, you cannot use any copies of the device object that remain in the workspace because they are no longer associated with any hardware. Device objects that are no longer associated with hardware are called invalid objects. The example below illustrates this situation.
newai = Invalid Data Acquisition object. This object is not associated with any hardware and should be removed from your workspace using CLEAR.
You should remove invalid device objects from the workspace