National Instruments Automobile Accessories NI IMAQdx User Manual |
Important Information
Warranty
The media on which you receive National Instruments software are warranted not to fail to execute programming instructions, due to defects
in materials and workmanship, for a period of 90 days from date of shipment, as evidenced by receipts or other documentation. National
Instruments will, at its option, repair or replace software media that do not execute programming instructions if National Instruments receives
notice of such defects during the warranty period. National Instruments does not warrant that the operation of the software shall be
uninterrupted or error free.
A Return Material Authorization (RMA) number must be obtained from the factory and clearly marked on the outside of the package before
any equipment will be accepted for warranty work. National Instruments will pay the shipping costs of returning to the owner parts which are
covered by warranty.
National Instruments believes that the information in this document is accurate. The document has been carefully reviewed for technical
accuracy. In the event that technical or typographical errors exist, National Instruments reserves the right to make changes to subsequent
editions of this document without prior notice to holders of this edition. The reader should consult National Instruments if errors are suspected.
In no event shall National Instruments be liable for any damages arising out of or related to this document or the information contained in it.
EXCEPT AS SPECIFIED HEREIN, NATIONAL INSTRUMENTS MAKES NO WARRANTIES, EXPRESS OR IMPLIED, AND SPECIFICALLY DISCLAIMS ANY WARRANTY OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. CUSTOMER’S RIGHT TO RECOVER DAMAGES CAUSED BY FAULT OR NEGLIGENCE ON THE PART OF
NATIONAL INSTRUMENTS SHALL BE LIMITED TO THE AMOUNT THERETOFORE PAID BY THE CUSTOMER. NATIONAL INSTRUMENTS WILL NOT BE LIABLE FOR
DAMAGES RESULTING FROM LOSS OF DATA, PROFITS, USE OF PRODUCTS, OR INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY
THEREOF. This limitation of the liability of National Instruments will apply regardless of the form of action, whether in contract or tort, including
negligence. Any action against National Instruments must be brought within one year after the cause of action accrues. National Instruments
shall not be liable for any delay in performance due to causes beyond its reasonable control. The warranty provided herein does not cover
damages, defects, malfunctions, or service failures caused by owner’s failure to follow the National Instruments installation, operation, or
maintenance instructions; owner’s modification of the product; owner’s abuse, misuse, or negligent acts; and power failure or surges, fire,
flood, accident, actions of third parties, or other events outside reasonable control.
Copyright
Under the copyright laws, this publication may not be reproduced or transmitted in any form, electronic or mechanical, including photocopying,
recording, storing in an information retrieval system, or translating, in whole or in part, without the prior written consent of National
Instruments Corporation.
National Instruments respects the intellectual property of others, and we ask our users to do the same. NI software is protected by copyright
and other intellectual property laws. Where NI software may be used to reproduce software or other materials belonging to others, you may
use NI software only to reproduce materials that you may reproduce in accordance with the terms of any applicable license or other legal
restriction.
Trademarks
National Instruments, NI, ni.com, and LabVIEW are trademarks of National Instruments Corporation. Refer to the Terms of Use section
on ni.com/legalfor more information about National Instruments trademarks.
Other product and company names mentioned herein are trademarks or trade names of their respective companies.
Members of the National Instruments Alliance Partner Program are business entities independent from National Instruments and have no
agency, partnership, or joint-venture relationship with National Instruments.
Patents
For patents covering National Instruments products, refer to the appropriate location: Help»Patents in your software, the patents.txtfile
on your CD, or ni.com/patents.
WARNING REGARDING USE OF NATIONAL INSTRUMENTS PRODUCTS
(1) NATIONAL INSTRUMENTS PRODUCTS ARE NOT DESIGNED WITH COMPONENTS AND TESTING FOR A LEVEL OF
RELIABILITY SUITABLE FOR USE IN OR IN CONNECTION WITH SURGICAL IMPLANTS OR AS CRITICAL COMPONENTS IN
ANY LIFE SUPPORT SYSTEMS WHOSE FAILURE TO PERFORM CAN REASONABLY BE EXPECTED TO CAUSE SIGNIFICANT
INJURY TO A HUMAN.
(2) IN ANY APPLICATION, INCLUDING THE ABOVE, RELIABILITY OF OPERATION OF THE SOFTWARE PRODUCTS CAN BE
IMPAIRED BY ADVERSE FACTORS, INCLUDING BUT NOT LIMITED TO FLUCTUATIONS IN ELECTRICAL POWER SUPPLY,
COMPUTER HARDWARE MALFUNCTIONS, COMPUTER OPERATING SYSTEM SOFTWARE FITNESS, FITNESS OF COMPILERS
AND DEVELOPMENT SOFTWARE USED TO DEVELOP AN APPLICATION, INSTALLATION ERRORS, SOFTWARE AND
HARDWARE COMPATIBILITY PROBLEMS, MALFUNCTIONS OR FAILURES OF ELECTRONIC MONITORING OR CONTROL
DEVICES, TRANSIENT FAILURES OF ELECTRONIC SYSTEMS (HARDWARE AND/OR SOFTWARE), UNANTICIPATED USES OR
MISUSES, OR ERRORS ON THE PART OF THE USER OR APPLICATIONS DESIGNER (ADVERSE FACTORS SUCH AS THESE ARE
HEREAFTER COLLECTIVELY TERMED “SYSTEM FAILURES”). ANY APPLICATION WHERE A SYSTEM FAILURE WOULD
CREATE A RISK OF HARM TO PROPERTY OR PERSONS (INCLUDING THE RISK OF BODILY INJURY AND DEATH) SHOULD
NOT BE RELIANT SOLELY UPON ONE FORM OF ELECTRONIC SYSTEM DUE TO THE RISK OF SYSTEM FAILURE. TO AVOID
DAMAGE, INJURY, OR DEATH, THE USER OR APPLICATION DESIGNER MUST TAKE REASONABLY PRUDENT STEPS TO
PROTECT AGAINST SYSTEM FAILURES, INCLUDING BUT NOT LIMITED TO BACK-UP OR SHUT DOWN MECHANISMS.
BECAUSE EACH END-USER SYSTEM IS CUSTOMIZED AND DIFFERS FROM NATIONAL INSTRUMENTS' TESTING
PLATFORMS AND BECAUSE A USER OR APPLICATION DESIGNER MAY USE NATIONAL INSTRUMENTS PRODUCTS IN
COMBINATION WITH OTHER PRODUCTS IN A MANNER NOT EVALUATED OR CONTEMPLATED BY NATIONAL
INSTRUMENTS, THE USER OR APPLICATION DESIGNER IS ULTIMATELY RESPONSIBLE FOR VERIFYING AND VALIDATING
THE SUITABILITY OF NATIONAL INSTRUMENTS PRODUCTS WHENEVER NATIONAL INSTRUMENTS PRODUCTS ARE
INCORPORATED IN A SYSTEM OR APPLICATION, INCLUDING, WITHOUT LIMITATION, THE APPROPRIATE DESIGN,
PROCESS AND SAFETY LEVEL OF SUCH SYSTEM OR APPLICATION.
Conventions
The following conventions are used in this manual:
»
The » symbol leads you through nested menu items and dialog box options
to a final action. The sequence File»Page Setup»Options directs you to
pull down the File menu, select the Page Setup item, and select Options
from the last dialog box.
This icon denotes a tip, which alerts you to advisory information.
This icon denotes a note, which alerts you to important information.
bold
Bold text denotes items that you must select or click in the software, such
as menu items and dialog box options. Bold text also denotes parameter
names.
italic
Italic text denotes variables, emphasis, a cross-reference, or an introduction
to a key concept. Italic text also denotes text that is a placeholder for a word
or value that you must supply.
monospace
Text in this font denotes text or characters that you should enter from the
keyboard, sections of code, programming examples, and syntax examples.
This font is also used for the proper names of disk drives, paths, directories,
programs, subprograms, subroutines, device names, functions, operations,
variables, filenames, and extensions.
monospace bold
Bold text in this font denotes the messages and responses that the computer
automatically prints to the screen. This font also emphasizes lines of code
that are different from the other examples.
monospace italic
Italic text in this font denotes text that is a placeholder for a word or value
that you must supply.
Chapter 1
About the NI-IMAQdx Software...................................................................................1-1
Application Development Environments ........................................................1-2
Configuring Your Camera...............................................................................1-2
Architecture .....................................................................................................1-3
Chapter 2
Opening a Camera...........................................................................................2-2
Pixel Format......................................................................................2-6
Grab...................................................................................................2-10
Sequence ...........................................................................................2-11
Low-Level Function Examples .......................................................................2-11
Snap...................................................................................................2-12
Grab...................................................................................................2-13
Sequence ...........................................................................................2-14
© National Instruments Corporation
v
NI-IMAQdx User Manual
Contents
Chapter 3
Attribute Type................................................................................................. 3-2
Attribute Access.............................................................................................. 3-3
Attribute Range............................................................................................... 3-3
Broadcasting.................................................................................................................. 3-4
Trigger Modes for IIDC Cameras................................................................... 3-7
Trigger Mode 1................................................................................. 3-8
Trigger Mode 2................................................................................. 3-9
Trigger Mode 4................................................................................. 3-10
Trigger Mode 5................................................................................. 3-10
Chapter 4
Low-Level....................................................................................................... 4-3
Snap................................................................................................................. 4-5
Grab................................................................................................................. 4-5
Sequence ......................................................................................................... 4-6
Image Display................................................................................................................ 4-7
Camera Attributes.......................................................................................................... 4-8
Error Handling............................................................................................................... 4-9
NI-IMAQdx User Manual
vi
ni.com
Chapter 5
Using NI-IMAQdx for C ...............................................................................................5-1
Using NI-IMAQdx for Microsoft Visual Studio .NET..................................................5-2
Creating a New .NET Application ..................................................................5-2
Appendix A
Technical Support and Professional Services
Glossary
Index
© National Instruments Corporation
vii
NI-IMAQdx User Manual
1
Introduction to NI-IMAQdx
This chapter describes the NI-IMAQdx driver software, lists the supported
application development environments (ADEs), describes the
fundamentals of creating applications using NI-IMAQdx, describes the
files used to build these applications, and explains where to find sample
programs.
About the NI-IMAQdx Software
NI-IMAQdx gives you the ability to use GigE Vision cameras and
IEEE 1394 industrial digital video cameras to acquire images. You can
use cameras with the following output formats:
•
•
•
•
•
•
Monochrome (8–16 bits/pixel)
RGB (24–48 bits/pixel)
YUV 4:1:1 (12 bits/pixel)
YUV 4:2:2 (16 bits/pixel)
YUV 4:4:4 (24 bits/pixel)
Bayer (8–16 bits/pixel)
The cameras may operate at various resolutions and frame rates, depending
on camera capabilities.
NI-IMAQdx complies with the Automated Imaging Association GigE
Vision specification and the 1394 Trade Association Industrial and
Instrumentation specification for Digital Cameras (IIDC), and controls
all available modes and features of the digital camera.
Note Refer to the NI Vision Acquisition Software Release Notes for the specific version of
the IIDC specification or the GigE Vision specification to which this driver complies.
© National Instruments Corporation
1-1
NI-IMAQdx User Manual
Chapter 1
Introduction to NI-IMAQdx
Application Development Environments
This release of NI-IMAQdx supports the following ADEs
for Windows Vista/XP/2000:
•
•
•
•
•
•
LabVIEW version 7.1.1 and later
LabVIEW Real-Time Module version 7.1.1 and later
LabWindows™/CVI™ version 7.0 and later
Microsoft Visual C/C++ version 6.0 and later
Microsoft Visual Basic version 6.0 and later
Microsoft Visual Studio .NET 2003 and later
Note Although the NI-IMAQdx software has been tested and found to work with these
ADEs, other ADEs may also work.
Configuring Your Camera
Use National Instruments Measurement & Automation Explorer (MAX) to
configure your camera. Refer to the Measurement & Automation Explorer
Help for NI-IMAQdx for information about configuring your camera. You
can access the Measurement & Automation Explorer Help for NI-IMAQdx
from within MAX by going to Help»Help Topics»NI-IMAQdx.
The camera configuration is saved in a camera file, which the NI-IMAQdx
VIs and functions use to configure a camera and supported attributes.
NI-IMAQdx User Manual
1-2
ni.com
Chapter 1
Introduction to NI-IMAQdx
Fundamentals of Building Applications with NI-IMAQdx
Architecture
Figure 1-1 illustrates the NI-IMAQdx driver architecture.
LabWindows/CVI
LabVIEW
Visual C++
NIIMAQDX.DLL
Application Level
Kernel Level
NIIMAQDXK.DLL
Windows Kernel
LabVIEW RT Kernel
NIPALP.DLL
NIPALK.SYS
OCHI1394.SYS1
1394BUS.SYS1
TCPIP.SYS1
NDIS.SYS1
TNF.DLL
NIGEV.SYS
1 Components provided by the underlying operating system.
Figure 1-1. NI-IMAQdx Architecture
The architecture uses a hardware abstraction layer, which separates
software API capabilities, such as general acquisition and control
functions, from hardware-specific information. This layer lets you run
your application on different operating systems and use updated versions
of the driver without having to recompile your application.
© National Instruments Corporation
1-3
NI-IMAQdx User Manual
Chapter 1
Introduction to NI-IMAQdx
NI-IMAQdx Libraries
The NI-IMAQdx function libraries are dynamic link libraries (DLLs),
which means that NI-IMAQdx routines are not linked into the executable
files of applications. Only the information about the NI-IMAQdx routines
in the NI-IMAQdx import libraries is stored in the executable files.
Import libraries contain information about their DLL-exported functions.
They indicate the presence and location of the DLL routines. Depending
on the development tools you use, you can give the DLL routines
information through import libraries or through function declarations.
Your NI-IMAQdx software contains function prototypes for all routines.
Example Programs
You can find NI-IMAQdx code examples in the following directories.
Note If you installed NI-IMAQdx in the default location, you can find the following
example directories within C:\Program Files\National Instruments.
•
LabVIEW—LabVIEW\examples\imaq. For a brief description of
any example VI, open the VI, and select Windows»Show VI Info for
a text description of the example.
Tip You can access the NI-IMAQdx examples from the NI Example Finder. From
LabVIEW, go to Help»Find Examples to launch the NI Example Finder.
•
•
•
•
CVI—CVI\samples\imaqdx.
C—NI-IMAQdx\examples\MSVC.
Visual Basic—NI-IMAQdx\examples\VB.
Microsoft Visual Studio .NET 2003—NI-IMAQdx\examples\
MSVB.NET. The .NET examples are converted from the NI-IMAQdx
for Visual Basic examples. The .NET examples are written in Visual
Basic .NET and demonstrate use of the NI-IMAQdx 3.0 Assemblies
and the IMAQ Vision 8.2 Viewer control.
Refer to the readme.rtffile located in your target installation directory
for the latest details about the example programs.
NI-IMAQdx User Manual
1-4
ni.com
2
Basic Acquisition with
NI-IMAQdx
This chapter contains an overview of the NI-IMAQdx library, a description
of the acquisition flow of NI-IMAQdx, and generic programming
examples. The chapter also contains flowcharts of high-level and low-level
snap, grab, and sequence operations.
Introduction
The NI-IMAQdx application programming interface (API) is divided into
two main function groups: high-level and low-level.
•
High-level functions—Use to capture images quickly and easily.
If you need more advanced functionality, you can mix high-level
functions with low-level functions.
–
Snap functions—Capture all or a portion of a single image to the
user buffer.
–
Grab functions—Perform an acquisition that loops continually on
one or more internal buffers. You can copy the last acquired buffer
to a separate user buffer for processing or analysis.
–
Sequence functions—Acquire a specified number of internal
buffers and then stops.
•
Low-level functions—Use when you require more direct control of the
image acquisition.
–
Acquisition functions—Configure, start, stop, and unconfigure an
image acquisition, or examine a user buffer during an acquisition.
–
Attribute functions—Examine and change the acquisition or
camera attributes.
–
–
–
–
Event functions—Register events.
Register functions—Access registers.
Session functions—Open, close, or enumerate sessions.
Utility functions—Get detailed error information.
© National Instruments Corporation
2-1
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
Both high-level and low-level functions support snap, grab, sequence, and
triggered acquisitions. Using high-level functions, you can write programs
quickly without having to learn the details of the low-level API and driver.
The low-level functions give you finer granularity and control over the
image acquisition process, but you must understand the API and driver in
greater detail to use these functions.
Note The high-level functions call low-level functions and use certain attributes that are
listed in the high-level function description of the NI-IMAQdx Function Reference Help.
Changing the value of these attributes while using low-level functions affects the operation
of the high-level functions.
Acquisition Flow
This section describes the basic steps of performing an acquisition with the
NI-IMAQdx software. The basic steps are initialization, configuration, and
acquisition.
Opening a Camera
To acquire images using the high-level or low-level functions, you first
must open a camera session. A camera session is a process-safe handle to
a camera. The driver uses a camera session to identify the camera to which
further NI-IMAQdx functions apply. You can simultaneously open as many
camera sessions as there are cameras connected to your system.
When opening the camera session, you need to specify two parameters:
camera name and camera control mode. Refer to the following sections for
detailed information about these parameters. When an application is
finished with the camera, call the Close Camera function to close the
camera session.
NI-IMAQdx User Manual
2-2
ni.com
Chapter 2
Basic Acquisition with NI-IMAQdx
Camera Name
NI-IMAQdx references all camera sessions by a name. The driver creates
default names for each camera in your system in the order that the cameras
are connected. The names observe the convention shown in Table 2-1.
Table 2-1. Camera Naming Convention
Camera Name
Camera Installed
Device 0
cam0
cam1
...
Device 1
...
camn
Device n
Every camera has an .iidinterface file and an .icdcamera file.
•
Interface files—Store information about which physical camera is
a single camera.
•
Camera files—Store all the configurable attributes. Camera files can
be shared between identical cameras. Use MAX to configure the
default state of a particular camera.
Figure 2-1 shows the relationship between cameras, interface files, and
camera files.
Cam0.iid
MyCam.icd
or
Cam1.iid
Default.icd
Figure 2-1. Relationship Between Cameras, Interface Files, and Camera Files
Note Use the Enumerate function to query the number and names of available cameras.
Use the Discover Ethernet Cameras function to find ethernet cameras on the network with
a remote subnet.
© National Instruments Corporation
2-3
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
When you open a camera session with the Camera Open function, the
camera with the unique serial number described by the interface file
camn.iidopens, where nis the reference to the camera. If the camera
is not present and a camera of the same make and model is present, as
described in the interface file, the driver opens the available camera. The
interface file updates to use the new camera. The camera file described by
the interface file opens, and all the user attributes are set in the driver. If no
camera of the same make and model is present, the Camera Open function
returns an error.
The camera control mode parameter has two options: controller and
listener. The default option—controller—controls the camera and receives
video data. The listener only receives video data. Use the listener option in
broadcasting applications. Refer to the Broadcasting section of Chapter 3,
Advanced Programming with NI-IMAQdx, for more information about
broadcasting.
Configure the Acquisition
After opening the camera, configure the camera for acquisition by
specifying the following parameters: whether the acquisition is one-shot
or continuous, and the number of internal buffers to use.
While configuring the camera, the driver validates all the user-configurable
attributes. If any attributes are invalid or out of range, the driver returns an
error and does not configure the acquisition.
If you want to reconfigure the acquisition, call the Unconfigure Acquisition
function before calling the Configure function again.
Note National Instruments recommends that you do not configure an acquisition in a loop
because doing so is time-intensive.
One-Shot/Continuous Acquisition
Use a one-shot acquisition to start an acquisition, perform the acquisition,
and stop the acquisition using a single function. The number of images
acquired is equal to the number of images in the images collection.
With a one-shot acquisition, you specify a certain number of internal
buffers. The camera transfers each image up to and including the specified
number of buffers. The driver acquires every image during a one-shot
NI-IMAQdx User Manual
2-4
ni.com
Chapter 2
Basic Acquisition with NI-IMAQdx
acquisition. National Instruments recommends one-shot acquisition for
applications that do not require real-time acquisition or processing.
Use a continuous acquisition to start an acquisition, continuously acquire
images into the internal buffers, and explicitly stop the acquisition. With
continuous acquisition, the driver acquires video data continuously from
the camera and enables you to examine the most current buffer. National
Instruments recommends continuous acquisition for real-time acquisition
and processing.
Note If CPU activity increases during a continuous acquisition, the driver might miss
subsequent images. Check the buffer number output to determine if you have missed any
images.
Number of Buffers
Another aspect of configuration is specifying the number of internal buffers
into which you want to acquire image data. During configuration, buffers
are allocated from system memory and page-locked. Once the acquisition
starts, the camera transfers video data over the IEEE 1394 bus to the
IEEE 1394 interface card FIFO. Then, video data is directly transferred to
the internal buffer. This transfer requires negligible CPU resources. For the
GigE Vision bus, CPU resources are used to pass network packets. For
ethernet, ethernet packets are evaluated by software and copied into an
internal buffer.
Each internal buffer you allocate is the exact size of the raw data being
transmitted by the camera. For continuous acquisitions, allocate three or
more buffers. Allocating a single buffer for a continuous acquisition may
result in a high number of lost images. For one-shot acquisitions, specify
the number of buffers that the application requires. For example, if the
application runs for two seconds, and the camera acquires at 30 frames
per second, allocate 60 buffers to capture each image.
Having more buffers available for the GigE Vision bus can increase the
reliability of data transfer, especially when there are adverse network
conditions.
Region of Interest
The region of interest (ROI) specifies a rectangular portion of the image to
be captured. If the camera supports scalable video modes, the ROI defines
the portion of the image to transfer from the camera to system memory.
If the camera does not support scalable video modes, the entire image is
© National Instruments Corporation
2-5
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
transferred from the camera to system memory. In all video modes, the ROI
specifies the amount of data decoded by the driver while acquiring into a
user buffer.
By default, the driver transfers the entire image. Specify a smaller ROI for
the following reasons:
•
•
To acquire only the necessary subset of data
To increase the acquisition speed by reducing the amount of data
transferred and/or decoded
•
To allow for multiple simultaneous acquisitions by reducing
bandwidth usage
Note Although you can specify an ROI of any size, the NI-IMAQdx software coerces the
ROI into one that is more compatible for the given camera. Refer to Chapter 3, Advanced
Programming with NI-IMAQdx, for more information about defining an ROI for scalable
images.
Pixel Format
The pixel format specifies the source type of the image format. Different
pixel formats decode into different image types. Refer to the Decoding
section for more information.
Acquisition
After configuring and starting your acquisition, the camera sends data to
the internal buffers. To process the acquired image data, you must copy the
data from the internal buffer into your user buffer.
User Buffer
Before starting the acquisition, you must allocate a user buffer in addition
to configuring internal buffers. The driver copies or decodes image data
from the internal buffer into the user buffer during acquisition. Then,
process and analyze the image in the user buffer.
When acquiring data into an image, the driver resizes and casts the image
as needed. However, if you acquire data into a user buffer, you must allocate
enough space for one decoded image.
NI-IMAQdx User Manual
2-6
ni.com
Chapter 2
Basic Acquisition with NI-IMAQdx
Buffer Number Mode
Specify one of the following options for the buffer number mode.
•
Buffer Number—Gets the exact buffer number specified in the Buffer
Number parameter.
•
•
Last—Gets the most recently acquired buffer.
Next—Gets the next incoming buffer.
Buffer Number
A buffer number is a zero-based index that represents the cumulated
transferred image count. For example, during a continuous acquisition with
three internal buffers, the buffer number is updated as follows: 0, 1, 2, 3, 4,
5, and so on. Buffer numbers 0 and 3 refer to the same internal buffer in the
buffer ring.
For a one-shot acquisition, you can request only one of the available buffer
numbers. For a continuous acquisition, you can request any present or
future buffer number. You can also request the next logical buffer or the
buffer containing the most recently acquired data. With high-level grab
acquisitions, the buffer number defaults to the next transferred buffer.
When you complete the buffer acquisition step, the driver returns the actual
buffer number with the image.
Overwrite Mode
Ideally, a continuous acquisition acquires and processes every image that
is transferred from the camera. However, because of processing time
fluctuations, some images from the camera may not be processed before
the camera transfers the next image. Using multiple internal buffers in a
continuous acquisition allows for a small amount of jitter. However, if a
delay becomes too long, the camera overwrites the requested buffer with
new image data.
NI-IMAQdx is able to detect overwritten internal buffers. You can configure
the driver to manage an overwritten buffer in one of the following ways:
•
•
•
Get newest valid buffer
Get oldest valid buffer
Fail and return an error
In all cases, the camera continues to transfer data when a buffer is
overwritten.
© National Instruments Corporation
2-7
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
The default overwrite mode for all types of acquisition is to get the newest
valid buffer. This option, which National Instruments recommends for most
applications, enables you to process the most recent image. If you need to
get the image closest in time to a requested buffer, configure the driver to
get the oldest valid buffer. If your application requires that every image be
processed, configure the driver to fail when a buffer is overwritten so that
you are alerted.
Timeouts
A timeout is the length of time, in milliseconds, that the driver waits for an
image from the camera before returning an error. A timeout error usually
occurs if the camera has been removed from the system or when the camera
did not receive an external trigger signal.
Decoding
before you can interpret the image data. For example, many color cameras
output images of type YUV 4:2:2. However, NI Vision does not natively
support the YUV mode. To process and display the image, the driver
automatically decodes the YUV image into a 32-bit RGB image.
Table 2-2 lists common video modes and their corresponding image types
after being decoded by NI-IMAQdx.
Table 2-2. Decoder Inputs and Corresponding Outputs
Raw Camera Output
8-bit monochrome
10–16-bit monochrome
YUV 4:1:1
Decoded Destination Image Type
Image_U8
Image_I16
Image_RGB
YUV 4:2:2
Image_RGB
YUV 4:4:4
Image_RGB
24-bit RGB
Image_RGB
30–48-bit RGB
8-bit Bayer
Image_RGB_U64
Image_RGB
10–16-bit Bayer
Image_RGB
NI-IMAQdx User Manual
2-8
ni.com
Chapter 2
Basic Acquisition with NI-IMAQdx
Decoding images requires CPU resources. However, many of the decoding
algorithms have been optimized in the driver. If you do not want decoded
image data, you can use NI-IMAQdx to get a copy of the raw camera
output.
Programming Examples
This section contains examples of high-level and low-level image
acquisitions. Refer to the Example Programs section of Chapter 1,
Introduction to NI-IMAQdx, for directory paths to the code examples
discussed in this section.
High-Level Function Examples
Use high-level functions to write programs quickly without having to learn
the details of the low-level API and driver.
Snap
A snap acquires a single image into a user buffer. Figure 2-2 illustrates the
typical programming order of a high-level snap acquisition.
Opens and configures camera
Acquires image into buffer
Open
Snap
Executes user-specific image
processing
User-Specific Functions
Close
Closes the camera session
Figure 2-2. High-Level Snap Flowchart
Use a snap for low-speed or one-shot applications where ease of
programming is essential. When you invoke a snap, the driver opens
a session on a camera and initializes the camera. Opening a session
sets the ROI to the size of the settings you configured in MAX.
© National Instruments Corporation
2-9
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
Note If you do not have a valid session, a temporary session is created using cam0.
Then, the snap acquires the next incoming image into a user buffer. After
the image is acquired, the program calls image processing and analysis
functions. When the processing and analysis functions are finished, the
program calls the Close Camera function using the camera handle. This
this camera, which releases the session.
Grab
A grab initiates a continuous high-speed acquisition of images to one or
more internal buffers. Figure 2-3 illustrates the typical programming order
of a high-level grab acquisition.
Open
Configure Grab
Grab
Opens and configures camera
Configures camera for
continuous acquisition
Copies contents of internal buffer
to user buffer; can call grab function
multiple times for high-speed acquisition
User-Specific Functions
Close
Executes user-specific image processing
(Loop)
Closes the camera session
Figure 2-3. High-Level Grab Flowchart
Use a grab for high-speed applications during which you need to process
only one image at a time. You can copy the last acquired buffer to a separate
user buffer for processing or analysis. To use these functions, you must
have a valid session. If you do not have a valid session, the NI-IMAQdx
NI-IMAQdx User Manual
2-10
ni.com
Chapter 2
Basic Acquisition with NI-IMAQdx
Calling the Configure Grab function opens a session for a grab acquisition.
buffer into a user buffer where you can process the image.
Sequence
A sequence acquires a specified number of internal buffers and then stops.
Figure 2-4 illustrates the typical programming order of a high-level
sequence acquisition.
Open
Opens and configures camera
Acquires a specified number
of buffers and stops
Sequence
User-Specific Functions
Close
Executes user-specific image processing
(Loop)
Closes the camera session
Figure 2-4. High-Level Sequence Flowchart
Use a sequence in applications where you need to process a series of
consecutive images. Sequence acquisitions are synchronous. If you do
not specify a session, a temporary session is created using cam0.
Low-Level Function Examples
Use low-level functions for more advanced programming techniques.
In general, low-level functions have more parameters than high-level
functions.
© National Instruments Corporation
2-11
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
Snap
The low-level snap examples set up a one-shot, single-image acquisition
and start the acquisition. The program acquires an image and processes it.
Finally, the program stops the acquisition, unconfigures the acquisition,
and closes the session.
Figure 2-5 illustrates the programming order of a low-level snap
acquisition.
Open
Configure
Start
Opens and configures camera
Configures a single-shot,
single-buffer acquisition
Starts transferring data from camera
to host computer
Copies and decodes buffer
number 0
Acquire
Executes user-specific image
processing
User-Specific Functions
Stop
Stops transferring data from camera
to host computer
Unconfigure
Close
Frees resources used by the acquisition
Closes the camera session
Figure 2-5. Low-Level Snap Flowchart
NI-IMAQdx User Manual
2-12
ni.com
Chapter 2
Basic Acquisition with NI-IMAQdx
Grab
The low-level grab examples demonstrate how to perform a grab
continuous acquisition into three internal buffers and starts the acquisition.
The main loop iterates continuously. In the main processing loop, the
program acquires an image and processes it. After the loop, the program
stops the acquisition, unconfigures the acquisition, and closes the session.
Figure 2-6 illustrates the programming order of a low-level grab
acquisition.
Open
Configure
Start
Opens and configures camera
Configures a continuous
multiple-buffer acquisition
Starts transferring data from camera
to host computer
Copies and decodes next buffer
number
Acquire
Executes user-specific image
User-Specific Functions
Stop
processing
(Loop)
Loop until stopped
Stops transferring data from camera
to host computer
Unconfigure
Close
Frees resources used by the acquisition
Closes the camera session
Figure 2-6. Low-Level Grab Flowchart
© National Instruments Corporation
2-13
NI-IMAQdx User Manual
Chapter 2
Basic Acquisition with NI-IMAQdx
Sequence
The low-level sequence examples demonstrate how to perform a sequence
multi-image acquisition and starts the acquisition. The main loop iterates
once for each internal buffer. In the main processing loop, the program
acquires an image and processes it. After the loop, the program stops the
acquisition, unconfigures the acquisition, and closes the session.
Figure 2-7 illustrates the programming order of a low-level sequence
acquisition.
Open
Configure
Start
Opens and configures camera
Configures a single-shot
multiple-buffer acquisition
Starts transferring data from camera
to host computer
Copies and decodes buffer number
i, where i is between 0 and (n – 1)
Acquire
Executes user-specific image
User-Specific Functions
Stop
processing
(Loop)
Loop n times
Stops transferring data from camera
to host computer
Unconfigure
Close
Frees resources used by the acquisition
Closes the camera session
Figure 2-7. Low-Level Sequence Flowchart
NI-IMAQdx User Manual
2-14
ni.com
3
Advanced Programming with
NI-IMAQdx
This chapter contains information about setting camera attributes,
broadcasting acquired images to multiple machines, using scale to define
the size of transferred images, and triggering.
Camera Attributes
After opening a camera, configure the camera attributes by specifying
the following parameters: the attribute name, the attribute type, and the
attribute value. Specify the same attributes when querying the camera
attributes.
Use the Set Attribute function to set an attribute value. Use the Get
Attribute function to get an attribute value.
Note To configure your camera in LabVIEW, use the IMAQdx Property Node.
The driver returns an error if an attribute is not accessible. Query the
attribute access before accessing an attribute. When setting an attribute, the
driver returns an error if the value is out of range. Query the attribute range
before setting an attribute.
Attribute Name
The attribute name is a string constant. Each camera has a different
set of attributes. Use the Enumerate Attributes function to list all
available attributes for a given camera. The attribute name contains
several keywords separated by a double colon namespace marker.
AcquisitionAttributes::Timeout and AcquisitionAttributes::Bayer::Pattern
are two examples of attribute names.
The namespace marker separates different levels in the attribute tree as
described by the driver and the camera. Use the fully qualified attribute
name such as AcquisitionAttributes::Timeout, or use the short version of
the attribute name such as Timeout, when specifying the attribute name.
© National Instruments Corporation
3-1
NI-IMAQdx User Manual
Chapter 3
Advanced Programming with NI-IMAQdx
Attribute Type
The attribute type determines how a camera attribute is stored in the driver
and the camera. Use the Get Attribute Type function to query the type of
a given attribute. Each attribute is represented as one of the following types.
Table 3-1. Attribute Types and Descriptions
Attribute Type
Description
32-bit unsigned integer
64-bit signed integer
Double precision floating point
String
U32
I64
F64
String
Enum
Bool
Name and value pair
Boolean (true or false)
Action
Command
Attribute Value
The attribute value represents the active value of an attribute in the driver
and the camera. The value type must be compatible with the attribute type.
The following value types are supported.
Table 3-2. Value Types and Descriptions
Value Type
Description
32-bit unsigned integer
64-bit signed integer
Double precision floating point
String
U32
I64
F64
String
EnumItem
Bool
Name and value pair
Boolean (true or false)
NI-IMAQdx User Manual
3-2
ni.com
Chapter 3
Advanced Programming with NI-IMAQdx
The following value types are compatible for any given attribute type.
Table 3-3. Attribute Types and Compatible Value Types
Attribute Type
Compatible Value Types
U32, I64, F64, String
U32
I64
U32, I64, F64, String
U32, I64, F64, String
String
F64
String
Enum
Bool
U32, I64, F64, String, EnumItem
U32, I64, F64, String, Bool
U32, I64, F64, String, Bool
Command
The bolded compatible value type indicates the native value type. For
example, use a 32-bit unsigned integer value type when dealing with a
32-bit unsigned integer attribute type. Optionally, use a signed 64-bit
integer, double precision floating point, or string when dealing with a 32-bit
unsigned integer attribute type.
Attribute Access
Attribute Range
Each attribute has a read access and a write access. Use the Is Attribute
Readable function to query read access for a given attribute. Use the Is
Attribute Writable function to query write access for a given attribute.
Some attributes are only settable before configuring the acquisition, while
other attributes can be changed at any time.
Most attributes have a specific range of valid values. Use the Get Attribute
Minimum, Get Attribute Maximum, and Get Attribute Increment
functions to query the range of numeric attribute types. Use the Enumerate
Attribute Values function to query the range of enumerated types. String,
bool, and command attributes do not have a range.
© National Instruments Corporation
3-3
NI-IMAQdx User Manual
Chapter 3
Advanced Programming with NI-IMAQdx
The following range is applicable for any given attribute.
Table 3-4. Attribute Types and Compatible Range
Attribute Type
Compatible Range
U32
Minimum, Maximum, Increment
I64
Minimum, Maximum, Increment
F64
Minimum, Maximum, Increment
String
Enum
Bool
N/A
Attribute Values
N/A
N/A
Command
Broadcasting
Many machine vision applications involve a single host computer
acquiring data from a single industrial camera. Other machine vision
applications acquire data from multiple industrial cameras concurrently.
With the broadcasting feature, a machine vision application can run on
multiple host computers while acquiring data from a single camera, as
shown in Figure 3-1.
NI-IMAQdx User Manual
3-4
ni.com
Chapter 3
Advanced Programming with NI-IMAQdx
Camera
Broadcast
P
X
I-1
0
0
B
Host Computer (Listener)
Host Computer (Controller)
Host Computer (Listener)
Figure 3-1. One Camera Broadcasting to Multiple Host Computers
The camera broadcasts video data on the camera bus and all the connected
host computers receive the same image data. In this scenario, one host
computer is designated as the controller. The controller is responsible for
starting/stopping the camera feed. There can be only one controller per
camera. The listeners obtain image data from the camera bus. The listeners
do not control the camera in any way. There may be one or more listeners
per camera.
Broadcasting has many uses. Computationaly intensive tasks can be spread
across different machines, thus effectively distributing computations.
Multiple host computers can also perform redundancy checks.
Additionally, listeners can monitor the current status of a headless system.
Implementation
Usage for the controller is unchanged from a stand-alone application. Open
configured in MAX. Configure and start your acquisition.
© National Instruments Corporation
3-5
NI-IMAQdx User Manual
Chapter 3
Advanced Programming with NI-IMAQdx
For GigE Vision cameras, you can configure the camera to broadcast or
multicast image data to all nodes on the network. Broadcast is not routable,
and everyone on the same network sees the data, even if they are not
listening. Multicast is routable if the network is configured properly. A
multicast configuration is preferred if supported by the camera because
only interested parties can see the data traffic.
Next, start the listener(s). On the listening computer, open your camera
interface with the 64-bit unique identifier of the target camera, which you
can find in the General tab in MAX. The controller can get a unique ID and
send it to the listener sessions. Additionally, you must set the listener
camera control mode parameter.
At this point, both the controller and listener systems are acquiring the
same live data from the same camera. When running as a listener, most
acquisition attributes are read-only. No camera feature or control is
accessible when running as a listener system. Attempts to set these
attributes result in the following error: Attribute not writable.
There is no synchronization between the controller and the listener host
computers provided by the low-level driver. The user must start the
controller before starting the listener. If the camera is not transmitting
data when the listener initializes, the session returns the following error:
No acquisition in progress. If the controller stops the video feed of
the camera, the listener times out.
Scalable Image Size
Digital cameras support a predefined set of image sizes, which you can
select through the Acquisition attributes in MAX. Refer to your camera
documentation for a list of supported formats.
If you are using LabVIEW, the NI-IMAQdx software recognizes the
predefined formats and automatically allocates enough memory to
accommodate the image. The image is resized as necessary.
Some cameras support user-configurable ROI, which allows you to define
the size of the acquired image. If you use this format, you must input the
image size using the Region of Interest attributes—offset x, offset y,
width, and height. The size and position of the sub-image you are acquiring
or the driver acquires the smallest sub-image that contains the ROI you
defined.
NI-IMAQdx User Manual
3-6
ni.com
Chapter 3
Advanced Programming with NI-IMAQdx
The Increment values are camera-specific. Refer to the camera
documentation or query the Increment attributes for width and height
to obtain the actual values.
(0,0)
Offset Y
Acquired Sub-Image
Height
Increment
Width
Increment
(max width, max height)
Offset X
Figure 3-2. Partial Image Size Format (Scalable)
Trigger Modes
The IIDC 1.31 and GigE Vision 1.0 specifications provide several external
triggering modes for cameras. A camera may support one or more of the
triggering modes. Additionally, a camera may support triggering modes
that are vendor specific. Refer to your camera documentation to find out
which standard modes are supported.
Configure triggers before configuring and starting the acquisition. Use the
Camera Attribute functions to configure the triggers.
Trigger Modes for IIDC Cameras
All IIDC cameras that support triggering have the following attributes:
•
TriggerMode—Specifies one of the trigger modes—Mode0,
Mode1...Mode5—described in the following sections. A value of Off
indicates that the camera is not externally triggered.
•
TriggerActivation—Specifies when the trigger input is active. A
the signal is high. A value of LevelLow indicated that the trigger is
considered active when the signal is low.
© National Instruments Corporation
3-7
NI-IMAQdx User Manual
Chapter 3
Advanced Programming with NI-IMAQdx
•
TriggerParameter—Certain trigger modes require an additional
parameter. Refer to the following sections to see if the optional
parameter is required.
Trigger Mode 0
With trigger mode 0, the camera starts frame integration when the external
trigger input changes to an active value. The frame is exposed for a duration
specified by the shutter attribute before the camera transfers the image to
the host computer. No optional parameter is required.
Trigger
Start Delay
Start Delay
Start Delay
Frame
N
Frame
N + 1
Frame
N + 2
Exposure
Start Delay
Frame N
Start Delay
Start Delay
Frame N + 1
Frame N + 2
Transmission
Figure 3-3. Timing Diagram for Trigger Mode 0
Trigger Mode 1
With trigger mode 1, the camera starts frame integration when the external
trigger input changes to an active value. The frame is exposed while the
external trigger is active. When the trigger becomes inactive, the camera
stops frame integration and transfers the image to the host computer. No
optional parameter is required.
Trigger
Start/Stop
Delay
Start/Stop
Delay
Start/Stop
Delay
Frame
N
Frame
N + 1
Frame
N + 2
Exposure
Start Delay
Frame N
Start Delay
Start Delay
Transmission
Frame N + 1
Frame N + 2
Figure 3-4. Timing Diagram for Trigger Mode 1
NI-IMAQdx User Manual
3-8
ni.com
Chapter 3
Advanced Programming with NI-IMAQdx
Trigger Mode 2
With trigger mode 2, the camera starts frame integration when the external
trigger input changes to an active value. The same frame is exposed for
multiple triggers. The number of triggers is specified by the optional
parameter, which must have a value of 2 or more.
Trigger
Start/Stop
Delay
Start/Stop
Delay
Start/Stop
Delay
Frame
N
Frame
N + 1
Frame
N + 2
Exposure
Start Delay
Frame N
Start Delay
Start Delay
Transmission
Frame N + 1
Frame N + 2
Figure 3-5. Timing Diagram for Trigger Mode 2
Trigger Mode 3
With trigger mode 3, the camera triggers continuously internally. The
frame is exposed for a duration specified by the shutter attribute before the
camera transfers the image to the host computer. The next internal trigger
becomes active after a set cycle time. The cycle time is N times the cycle
time of the fastest frame rate. N is specified by the optional parameter,
which must have a value of 1 or more.
Internal Trigger Cycle
Internal Trigger Cycle
Start Delay
Internal Trigger Cycle
Start Delay
Trigger
Start Delay
Frame
N
Frame
N + 1
Frame
N + 2
Exposure
Start Delay
Frame N
Start Delay
Start Delay
Frame N + 1
Frame N + 2
Transmission
Figure 3-6. Timing Diagram for Trigger Mode 3
© National Instruments Corporation
3-9
NI-IMAQdx User Manual
Chapter 3
Advanced Programming with NI-IMAQdx
Trigger Mode 4
With trigger mode 4, the camera starts frame integration when the external
trigger input changes to an active value. Multiple frames are exposed
before the camera transfers the image to the host computer. Each frame is
exposed for a duration specified by the shutter attribute. The number of
frames is specified by the optional parameter, which must have a value of 1
or more.
Trigger
Start Delay
Frame
Start Delay
Frame
Start Delay
Start Delay
Frame
N + 1
Frame
N + 1
Exposure
N
N
Start Delay
Frame N
Start Delay
Frame N + 1
Transmission
Figure 3-7. Timing Diagram for Trigger Mode 4
Trigger Mode 5
With trigger mode 5, the camera starts frame integration when the external
trigger input changes to an active value. Multiple frames are exposed
before the camera transfers the image to the host computer. Each frame
is exposed while the external trigger is active. The number of frames is
specified by the optional parameter, which must have a value of 1 or more.
Trigger
Start/Stop
Delay
Start/Stop
Delay
Frame
N
Frame
N
Frame
N + 1
Frame
N + 1
Exposure
Start Delay
Frame N
Start Delay
Transmission
Frame N + 1
Figure 3-8. Timing Diagram for Trigger Mode 5
NI-IMAQdx User Manual
3-10
ni.com
Chapter 3
Advanced Programming with NI-IMAQdx
Trigger Modes for GigE Vision Cameras
Note All triggering modes and parameters for GigE Vision cameras are subject to camera
vendor implementation. Refer to your camera documentation for triggering modes and
parameters available for your camera.
Most GigE Vision cameras that support triggering have the following
attributes:
•
TriggerSelector—Specifies the type of trigger to control. Examples
of triggers to control are FrameStart, FrameEnd, FrameActive,
AcquisitionActive, LineStart, ExposureStart, ExposureEnd,
ExposureActive.
•
TriggerMode—Specifies the operation mode of the trigger for
acquisition. Examples of operation modes are Off, Hardware, and
Software.
•
•
•
TriggerActivation—Specifies the type of signal change. Examples of
signals are RisingEdge, FallingEdge, LevelHigh, and LevelLow.
TriggerSource—Specifies the input line signal. Examples of input
line signals are Off, Line1, and Line2.
TriggerSoftware—Generates a software trigger to start the
acquisition in software trigger mode.
© National Instruments Corporation
3-11
NI-IMAQdx User Manual
4
Using NI-IMAQdx in LabVIEW
This chapter describes how to use NI-IMAQdx VIs in LabVIEW.
Introduction
The NI-IMAQdx VI library—part of the NI-IMAQdx software—is a group
of virtual instruments (VIs) that enable you to use LabVIEW with your
camera.
NI Vision for LabVIEW is the National Instruments image processing and
analysis library, which consists of more than 400 VIs. Some of the basic
NI Vision VIs are shared with NI-IMAQdx. If you do not have NI Vision,
you can use the NI Vision VIs included with NI-IMAQdx to create an
image acquisition application. When you use these basic VIs, you can
upgrade your application later to use additional NI Vision VIs without
making changes to your initial image acquisition application.
NI-IMAQdx adds a subpalette of VIs to the Vision and Motion Functions
palette and an Image Display control to the Controls palette.
Create NI-IMAQdx applications as you would any other LabVIEW or
LabVIEW Real-Time (RT) application. Drop icons onto the block diagram
to create the program, and use the front panel to design the user interface.
Click Run to compile and run the application.
Before you start building an image acquisition application, familiarize
yourself with the basic knowledge and concepts contained in the following
sections.
Location of the NI-IMAQdx VIs
You can find the NI-IMAQdx VIs in the LabVIEW Functions palette.
From the LabVIEW block diagram, select Vision and Motion»
NI-IMAQdx.
The most commonly used, high-level VIs are on the NI-IMAQdx palette.
You can find VIs for basic acquisition and changing attributes.
© National Instruments Corporation
4-1
NI-IMAQdx User Manual
Chapter 4
Using NI-IMAQdx in LabVIEW
The Vision and Motion»NI-IMAQdx»NI-IMAQdx Low Level palette
contains VIs for more advanced applications.
Refer to the NI-IMAQdx VI Reference Help for more information about
using these VIs.
Common VI Parameters
The following sections describe commonly used VIs and important
parameters common to many VIs.
IMAQdx Session
IMAQdx Session is a unique identifier that specifies which interface file to
use for the acquisition. The IMAQdx Session is produced by the IMAQdx
Open Camera VI and used as an input to all other NI-IMAQdx VIs. The
NI-IMAQdx VIs use IMAQdx Session Out, which is identical to IMAQdx
Session, to simplify dataflow programming. IMAQdx Session Out is
similar to the duplicate file sessions provided by the file I/O VIs. The
high-level acquisition VIs—IMAQdx Snap, IMAQdx Configure Grab, and
IMAQdx Sequence—require you to wire IMAQdx Session In only in the
following instances:
•
•
•
If you are using an interface other than the default cam0
If you are using multiple cameras
If you need to set IMAQdx properties before the acquisition
To get and set properties of the acquisition and camera, wire the IMAQdx
Image Buffer
Many acquisition VIs require an image buffer to receive the captured
image. You can create this image buffer with IMAQ Create. Refer to the
Buffer Management section of this chapter for more information about
using buffers. Image In receives the image buffer. Image Out returns the
captured image.
© National Instruments Corporation
4-2
NI-IMAQdx User Manual
Chapter 4
Using NI-IMAQdx in LabVIEW
Acquisition VIs
Two types of acquisition VIs are available in LabVIEW: high-level and
High-Level
Use the high-level acquisition VIs for basic image acquisition applications.
VIs are included for snap, grab, and sequence, as described in the
Acquisition Types section of this chapter.
Low-Level
Use the low-level acquisition VIs for more advanced image acquisition
applications. The low-level VIs configure an acquisition, start an
acquisition, retrieve the acquired images, and stop an acquisition. You
can use these VIs to construct advanced Vision applications.
Complete the following general steps to perform a low-level acquisition.
1. Call IMAQdx Open Camera to initialize the board and create an
IMAQdx Session.
2. Call IMAQdx Configure Acquisition to allocate resources for the
acquisition.
3. Call IMAQdx Start Acquisition to start transferring data from the
camera.
4. Call IMAQdx Get Image to obtain a copy of the requested image data.
5. After an acquisition, call IMAQdx Stop Acquisition to stop
transferring data from the camera.
6. Call IMAQdx Unconfigure Acquisition to release the resources
associated with the acquisition.
7. Call IMAQdx Close Camera to close the camera session.
Note If an acquisition is in progress and you call IMAQdx Close Camera, the driver
automatically stops the acquisition and releases resources associated with the acquisition.
NI-IMAQdx User Manual
4-3
ni.com
Chapter 4
Using NI-IMAQdx in LabVIEW
Buffer Management
The IMAQ Create VI and IMAQ Dispose VI manage image buffers in
LabVIEW.
IMAQ Create, shown in Figure 4-1, allocates an image buffer. Image
Name is a label for the buffer created. Each buffer must have a unique
name. Image Type specifies the type of image being created. Use
Grayscale (U8) for 8-bit monochrome images, Grayscale (I16) for 16-bit
monochrome images, and RGB (U32) for RGB color images.
Note If Image Type is set to a value incompatible with the current video mode,
NI-IMAQdx automatically changes the value to a compatible one when acquiring images.
New Image contains pointer information to the buffer, which is initially
empty. When you wire New Image to the Image in input of an image
acquisition VI, the image acquisition VI allocates the correct amount of
memory for the acquisition. If you are going to process the image, you
might need to provide a value for Border Size. Border Size is the width,
in pixels, of a border created around an image. Some image processing
functions, such as labeling or morphology, require a border.
Figure 4-1. IMAQ Create
IMAQ Dispose, shown in Figure 4-2, frees the memory allocated for the
image buffer. Call this VI only after the image is no longer required for
processing.
Figure 4-2. IMAQ Dispose
© National Instruments Corporation
4-4
NI-IMAQdx User Manual
Chapter 4
Using NI-IMAQdx in LabVIEW
Acquisition Types
The following sections describe snap, grab, and sequence acquisitions in
LabVIEW and give examples.
Snap
Use the IMAQdx Snap VI for snap applications. Figure 4-3 shows a
simplified block diagram for using IMAQdx Snap.
Figure 4-3. Acquiring an Image Using Snap
Grab
Use two VIs—IMAQdx Configure Grab and IMAQdx Grab—for a grab
acquisition in LabVIEW. Call IMAQdx Configure Grab once to open the
acquisition and start capturing the image to an internal software buffer. You
can call IMAQdx Grab multiple times to copy the image currently stored in
the internal buffer to a LabVIEW image buffer. After the program finishes
copying images, call IMAQdx Close Camera once to shut down the
acquisition.
NI-IMAQdx User Manual
4-5
ni.com
Chapter 4
Using NI-IMAQdx in LabVIEW
Figure 4-4 shows a simplified block diagram for using IMAQdx Configure
Grab and IMAQdx Grab.
Figure 4-4. Acquiring Images Using Grab
Sequence
Use the IMAQdx Sequence VI for sequence applications. IMAQdx
Sequence starts, acquires, and releases a sequence acquisition. IMAQdx
Sequence does not return until the entire sequence is acquired.
Figure 4-5 shows a simplified block diagram for using IMAQdx Sequence.
Place the IMAQ Create VI inside a For Loop to create an array of images
for the Image Array In input to IMAQdx Sequence. The Number to
Decimal String VI and Concatenate String VI create a unique name for
each image in the array.
Figure 4-5. Acquiring Images Using Sequence
© National Instruments Corporation
4-6
NI-IMAQdx User Manual
Chapter 4
Using NI-IMAQdx in LabVIEW
Image Display
Many image acquisition applications require that one or more images
be displayed. You have several options for displaying images in LabVIEW.
Display control, which is available on the Vision Controls palette. To
display an image on an Image Display control, place the control on the front
panel of your VI. On the block diagram, wire Image Out from an
acquisition VI to the Image Display control terminal.
Figure 4-6 illustrates using an image control to display an image using an
Image Display control. For more information about Image Display
controls, refer to the NI Vision for LabVIEW VI Reference Help.
Figure 4-6. Displaying an Image Using an Image Control
If you have NI Vision for LabVIEW, you can display an image in an
external window using IMAQ WindDraw, located at Vision and Motion»
Vision Utilities»External Display. Use IMAQ WindDraw when you need
more image size and location control.
Figure 4-7 illustrates using IMAQ WindDraw to display an image acquired
using IMAQdx Snap. You can display images in the same way using any
acquisition type. For more information about the display capabilities of
NI Vision, refer to the NI Vision for LabVIEW User Manual.
Figure 4-7. Displaying an Image Using IMAQ WindDraw
NI-IMAQdx User Manual
4-7
ni.com
Chapter 4
Using NI-IMAQdx in LabVIEW
If you have LabVIEW RT, you can use IMAQ RT Video Out, located at
Vision and Motion»Vision Utilities»IMAQ RT, to display an image on
the monitor connected to your RT device. Use IMAQ Video Out Display
Mode, located at Vision and Motion»Vision Utilities»IMAQ RT, to
configure the monitor for display. Figure 4-8 illustrates configuring the
monitor and displaying an image acquired with IMAQdx Snap.
Figure 4-8. Displaying an Image Using RT Video Out
Note The IMAQ RT Video Out VI is available only on RT devices with Intel i815 or i845
video chipsets. These devices include NI CVS-1450 Series devices, PXI-817x controllers,
and PXI-818x controllers.
Camera Attributes
To modify camera attributes in LabVIEW, use the IMAQdx Property
Node. Every camera attribute has two parameters: Attribute Name and
Attribute Value.
•
Attribute Name—Specify the attribute name with the attribute
property node. The attribute name is a string constant. The attribute
name contains several keywords separated by a double colon
namespace marker. The namespace marker separates different levels in
the attribute tree as described by the driver and the camera.
Use the fully qualified attribute name, for example
AcquisitionAttributes::Timeout, or the short version of the attribute
name, for example Timeout, when specifying the attribute name.
•
Attribute Value—Enter a value type for the attribute. The value type
must be compatible with the attribute type. Refer to Table 3-2 for a list
of attribute value types. Use the Range property nodes to find the valid
range for the current camera.
© National Instruments Corporation
4-8
NI-IMAQdx User Manual
Chapter 4
Using NI-IMAQdx in LabVIEW
Figure 4-9 shows how to set camera attributes with the property nodes in
NI-IMAQdx.
Error Handling
Every NI-IMAQdx VI contains an error in input cluster and an error out
output cluster. The clusters, shown in Figure 4-10, contain a Boolean value
that indicates whether an error occurred, the code for the error, and the
source or the name of the VI that returned the error. If error in indicates an
error, the VI passes the error information to error out and does not execute
any NI-IMAQdx function.
Figure 4-10. Error Clusters
NI-IMAQdx User Manual
4-9
ni.com
Chapter 4
Using NI-IMAQdx in LabVIEW
You can use the Simple Error Handler VI, located on the Functions»
Dialog & User Interface palette, to check for errors that occur while
executing a VI. If you wire an error cluster to the Simple Error Handle VI,
the VI deciphers the error information and displays a dialog box that
describes the error. If no error occurred, the Simple Error Handler VI does
nothing. Figure 4-11 illustrates wiring an NI-IMAQdx VI to the Simple
Error Handler VI.
Figure 4-11. Error Checking Using the Simple Error Handler VI
© National Instruments Corporation
4-10
NI-IMAQdx User Manual
5
Using NI-IMAQdx in C and .NET
This chapter briefly describes how to use NI-IMAQdx functions in
Microsoft Visual C and Microsoft Visual Studio .NET.
Using NI-IMAQdx for C
This section outlines the process for developing NI-IMAQdx applications
using C. Detailed instructions about creating project and source files are not
included. For information about creating and managing project files, refer
to the documentation included with your particular development
environment.
Note The generic and high-level functions appear within each function class in the logical
order you might need to use them. The low-level functions appear within each function
class in alphabetical order.
When programming, use the following guidelines:
•
Include the niimaqdx.hheader file in all C source files that use
NI-IMAQdx functions. Add this file to the top of your source files.
•
Add the niimaqdx.libimport library to your project. In some
environments, you can add import libraries simply by inserting them
into your list of project files. In other environments, you can specify
import libraries under the linker settings portion of the project file.
•
When compiling, indicate where the compiler can find the NI-IMAQ
header files and shared libraries. You can find most of the files you
need for development under the NI-IMAQ target installation directory.
If you choose the default directory during installation, the target
installation directory is C:\Program Files\National
Instruments\NI-IMAQdx. You can find the include files under the
includesubdirectory. The import libraries for Microsoft Visual C++
are located under the lib\msvcsubdirectory.
© National Instruments Corporation
5-1
NI-IMAQdx User Manual
Chapter 5
Using NI-IMAQdx in C and .NET
You can use the additional Image functions installed with NI-IMAQdx.
These functions use the NI Vision memory management feature, which
automatically allocates the memory for your image. To use these Image
functions, first create an image using imaqCreate, and then pass that
image to an acquisition function.
Using NI-IMAQdx for Microsoft Visual Studio .NET
NI-IMAQdx installs the following assemblies that enable .NET languages
to interact with the driver software:
• NationalInstruments.CWNIIMAQDX.Interop.dll
• NationalInstruments.AxCWNIIMAQDXControlsLib.Interop.dll
Uses NI Vision to display images with the included Viewer control
The CWIMAQdxassembly is installed in the <NI-IMAQdx>\dotNET\
Assemblies\Currentdirectory. The AxCWIMAQControlsLib
assembly is installed in the <Vision>\dotNET\Assemblies\Current
directory. Refer to the NI-IMAQdx Function Reference Help for
information about the properties, methods, and events available with these
assemblies.
Creating a New .NET Application
You first must add a reference to the NI-IMAQdxassembly in your project
when creating a new application. Complete the following steps to add a
reference to the NI-IMAQdxassembly in Microsoft Visual Studio .NET
2003 or later:
1. Create a new application, or open an existing one.
2. Select Project»Add Reference.
3. Under the .NET Framework Components tab, select NI-IMAQdx.
If you need to display acquired images, you also must add an NI Vision
Viewer control to your toolbox and to your form. Complete the following
steps to add the NI Vision Viewer control to the Microsoft Visual
Studio .NET toolbox.
1. With your project open, open a form in Design View.
2. Open the Toolbox (View»Toolbox).
(General, Components, and so on).
© National Instruments Corporation
5-2
NI-IMAQdx User Manual
Chapter 5
Using NI-IMAQdx in C and .NET
4. Select Tools»Add/Remove Toolbox Items.
5. Under the .NET Framework Components tab, select the
CWIMAQViewer control.
When the Viewer control is in the toolbox, you can add it to your forms by
clicking on the tool and drawing an area on the form. References to the
NI Vision Interop Assemblies are automatically added to your project.
NI-IMAQdx User Manual
5-3
ni.com
A
Register-Level Programming
This appendix explains how to access and program register locations using
the NI-IMAQdx software, and discusses the caveats involved in
programming registers.
Introduction
All cameras communicate to the host computer through register maps.
The register map reflects the system memory located on the camera. The
register map allows the host computer to read and write information with
minimal overhead.
The host computer sends asynchronous messages over the host bus to the
connected camera. When the data is written into memory on the camera, the
camera processes the incoming request. If possible, the camera responds
immediately. Otherwise, a pending transaction message is returned. When
the pending request is completed, the camera returns the results of the
request.
© National Instruments Corporation
A-1
NI-IMAQdx User Manual
Appendix A
Register-Level Programming
Host Computer
IEEE 1394 Camera
GigE Vision Camera
(1) Send Request
(2) Receive Request
(3) Send Result
(2) Receive Request and
Send Pending Packet
(3) Receive Pending Packet.
Wait for complete
(4) Complete Request
and Send Result
(5) Receive Result
(4) Receive Result
Figure A-1. Explanation of Split Transactions
NI-IMAQdx supports the 1394 Trade Association IIDC 1.31 register
specification and the GigE Vision 1.0 specification for industrial cameras.
Most of the intricacies of register-level programming are abstracted by the
driver. The driver is responsible for manipulating camera features and
activating/deactivating the video data stream.
Some cameras implement additional registers that are not contained in the
IIDC 1.31 or GigE Vision 1.0 specifications. These advanced camera
features are not natively supported by the camera driver. To use these
advanced features, you must use the low-level, register-level access tools to
communicate with the camera.
GigE Vision cameras have all features defined in an XML file which
normally eliminates the need for direct register programming.
NI-IMAQdx User Manual
A-2
ni.com
Appendix A
Register-Level Programming
The NI-IMAQdx software provides the following register-level primitives:
•
Read Register—Reads 32-bits of data from a specified memory
location
•
•
Write Register—Writes 32-bits of data to a specified memory location
Read Memory—Reads an array of bytes from a specified memory
location and range
•
Write Memory—Writes an array of bytes to a specified memory
location
Usage
To perform a register-level access, specify a memory location (or offset)
and data storage. IEEE 1394 memory locations are specified as 48-bit
values. The upper 20 bits are filled in by the driver. The low-level register
primitives accept the lower 28-bit offset. The memory storage contains the
result/desired data when transferring. GigE Vision memory locations are
specified as 32-bit values.
Basic Example
The isonchronous enable register indicates active video transmission. To
read the ISO_EN register (0x614), calculate the memory offset by adding
the specified offset to the base register. The base register is 0xF0F00000 for
most IEEE 1394 cameras.
0xF0F00000 + 0x614 = 0xF0F00614
The value is read, and the result is placed in the specified memory location.
read register (0xF0F00614) = <iso_en>
where <iso_en> = (0x80000000 or 0x00000000).
If bit 0 has a value of 0x80000000, the bit is on, and the camera is
transmitting video data. If bit 0 has a value of 0x00000000, the camera
is not currently transmitting data.
© National Instruments Corporation
A-3
NI-IMAQdx User Manual
Appendix A
Register-Level Programming
Advanced Example
The advanced feature described in this example is specific to Basler
IEEE 1394 cameras. The advanced feature replaces the live video feed with
a static test pattern.
According to the user documentation for the Basler A601f camera, the
TEST_IMAGE register is located at advanced offset 0x0098. You can
enable a static test pattern by setting bit 17 of the TEST_IMAGE register.
To get the advanced base register, first read ADVANCED_FEATURE_INQ
register (0x480). Add the specified offset to the base
register—0xF0F00000 for most IEEE 1394 cameras.
0xF0F00000 + 0x480 = 0xF0F00480
Read the value into storage.
read register (0xF0F00480) = <advanced_feature_inq>
where <advanced_feature_inq> = 0x800000.
Now, calculate the offset to the advanced feature offset. You need to
multiply the previous result by 4 to convert the quadlet offset value to byte
offset.
(0xF0F00000 + (<advanced feature offset> × 4) + 0x98) = newly
calculated offset
byte swap (1 << 17) = newly calculated register mask
write register (0xF2F00098, 0x00002000)
Now the camera is set to the test pattern.
Caveats
This section discusses caveats to consider when programming registers
using the NI-IMAQdx software.
Endianness
Data that spans multiple bytes, such as a quadlet, may be written
left-to-right or right-to-left. The method with which data is written is called
The ethernet and IEEE 1394 bus transports data using the big endian
method. However, Windows and LabVIEW RT host machines accept little
NI-IMAQdx User Manual
A-4
ni.com
Appendix A
Register-Level Programming
endian data. To correct for this discrepancy, NI-IMAQdx byte-swaps every
quadlet that is read or written with low-level register primitives.
Byte Array
Many cameras allow register-level access to more than 32 bits of data per
communication request. In most cases, you can safely write and read a
large, contiguous block of data to and from the connected camera. Some
cameras fail when trying to access large payloads. If the camera does not
successfully transfer an array of bytes, attempt to transfer the smaller
packets of data one at a time.
Timing
Many cameras are responsive to successive register accesses. In most cases,
you can safely read and write registers as quickly as possible. Some
cameras lock up under stressed conditions. The camera driver inserts
an artificial delay between register accesses. You can change this
artificial delay in the registry under the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
niimaqdxk\Parameters\AsyncTransferDelay.
The key specifies the millisecond value to delay before each transaction.
After changing the value, reboot the host computer to enable the changes.
Note Changing this delay affects the entire driver, not just register-level access.
Invalid Memory Location
The NI-IMAQdx software allows access to register locations that do not
exist. If an error occurs while accessing the register, check the validity of
the register location.
© National Instruments Corporation
A-5
NI-IMAQdx User Manual
B
Technical Support and
Professional Services
Visit the following sections of the National Instruments Web site at
ni.comfor technical support and professional services:
•
Support—Online technical support resources at ni.com/support
include the following:
–
Self-Help Resources—For answers and solutions, visit the
award-winning National Instruments Web site for software drivers
and updates, a searchable KnowledgeBase, product manuals,
step-by-step troubleshooting wizards, thousands of example
programs, tutorials, application notes, instrument drivers, and
so on.
–
Free Technical Support—All registered users receive free Basic
Service, which includes access to hundreds of Application
Engineers worldwide in the NI Discussion Forums at ni.com/
forums. National Instruments Application Engineers make sure
every question receives an answer.
For information about other technical support options in your
area, visit ni.com/servicesor contact your local office at
ni.com/contact.
•
•
Training and Certification—Visit ni.com/trainingfor
self-paced training, eLearning virtual classrooms, interactive CDs,
and Certification program information. You also can register for
instructor-led, hands-on courses at locations around the world.
System Integration—If you have time constraints, limited in-house
technical resources, or other project challenges, National Instruments
Alliance Partner members can help. To learn more, call your local
NI office or visit ni.com/alliance.
If you searched ni.comand could not find the answers you need, contact
your local office or NI corporate headquarters. Phone numbers for our
the Worldwide Offices section of ni.com/niglobalto access the branch
office Web sites, which provide up-to-date contact information, support
phone numbers, email addresses, and current events.
© National Instruments Corporation
B-1
NI-IMAQdx User Manual
Glossary
A
acquisition window
The image size specific to a video standard or camera resolution.
Value that identifies a specific location (or series of locations) in memory.
Application programming interface.
address
API
area
A rectangular portion of an acquisition window or frame that is controlled
and defined by software.
array
Ordered, indexed set of data elements of the same type.
The ratio of a picture or image’s width to its height.
aspect ratio
asynchronous
(1) Independent in time from any other event. (2) Communication
mechanism on the IEEE 1394 bus, which guarantees delivery of the
message but does not guarantee timing.
B
big endian
Describes computers that store bytes of memory by placing the most
significant byte at the memory location with the lowest address, the next
significant byte at the next memory location, and so on.
buffer
Temporary storage for acquired data.
C
camera session
A process-safe handle to a camera.
chroma
The color information in a video signal.
© National Instruments Corporation
G-1
NI-IMAQdx User Manual
Glossary
D
default setting
A default parameter value recorded in the driver. In many cases, the default
input of a control is a certain value (often 0).
DLL
Dynamic Link Library—A software module in Microsoft Windows
containing executable code and data that can be called or used by Windows
applications or other DLLs; functions and data in a DLL are loaded and
linked at run time when they are referenced by a Windows application or
other DLLs.
driver
Software that controls a specific hardware device, such as a camera.
E
endianness
The convention describing the ordering of bytes in memory or the sequence
in which bytes are transmitted.
external trigger
A voltage pulse from an external source that triggers an event such as
A/D conversion.
F
FIFO
First-In First-Out—The first data stored in the memory buffer is the first
data sent to the acceptor. FIFOs are used on image acquisition devices to
temporarily store incoming data until that data can be retrieved.
function
A set of software instructions executed by a single line of code that may
have input and/or output parameters and returns a value when executed.
G
gamma
The nonlinear change in the difference between the video signal’s
brightness level and the voltage level needed to produce that brightness.
Gigabit Ethernet
Describes technologies which transmit Ethernet packets at a rate of a
gigabit per second.
NI-IMAQdx User Manual
G-2
ni.com
Glossary
GigE Vision
grab
A camera interface standard developed using the Gigabit Ethernet
communication protocol.
Performs an acquisition that loops continually on one buffer. You obtain a
copy of the acquisition buffer by grabbing a copy to a separate buffer that
can be used for analysis.
H
hardware abstraction
layer
Separates software API capabilities, such as general acquisition and control
functions, from hardware-specific information.
hue
Represents the dominant color of a pixel. The hue function is a continuous
function that covers all the possible colors generated using the R, G, and
B color spectrum. See also RGB.
I
I/O
communications channels, operator interface devices, and/or data
acquisition and control interfaces.
IEEE
Institute of Electrical and Electronics Engineers.
internal buffer
A page-locked buffer. See also page-locked buffer.
L
library
A file containing compiled object modules, each comprised of one of more
functions, that can be linked to other object modules that make use of these
functions.
little endian
luma
Describes computers that store bytes of memory by placing the least
significant byte at the memory location with the lowest address, the second
least significant byte at the next memory location, and so on.
The brightness information in the video picture. The luma signal amplitude
varies in proportion to the brightness of the video signal and corresponds
exactly to the monochrome picture.
© National Instruments Corporation
G-3
NI-IMAQdx User Manual
Glossary
M
MAX
Measurement & Automation Explorer—A controlled, centralized
configuration environment that allows you to configure all of your
NI devices.
N
NI-IMAQ
Driver software for National Instruments image acquisition hardware.
P
page-locked buffer
Memory page that is marked as non-pagable by the virtual file system.
Page-locked buffers remain in physical memory and do not cause page
faults
pixel
Picture element. The smallest division that makes up the video scan line.
For display on a computer monitor, a pixel’s optimum dimension is square
(aspect ratio of 1:1, or the width equal to the height).
process-safe handle
protocol
A handle that allows only one process to access a camera at any given time.
The exact sequence of bits, characters, and control codes used to transfer
data between computers and peripherals through a communications
channel.
Q
quadlet
A 32-bit (four-byte) word.
NI-IMAQdx User Manual
G-4
ni.com
Glossary
R
real time
A property of an event or system in which data is processed as it is acquired
instead of being accumulated and processed at a later time.
resolution
(1) The number of rows and columns of pixels. An image composed of
m rows and n columns has a resolution of n × m. This image has n pixels
along its horizontal axis and m pixels along its vertical axis; (2) The
smallest signal increment that can be detected by a measurement system.
Resolution can be expressed in bits, proportions, or a percentage of
full scale. For example, a system has 12-bit resolution, one part in
4,096 resolution, and 0.0244 percent of full scale.
RGB
ROI
Color encoding scheme using red, green, and blue (RGB) color information
where each pixel in the color image is encoded using 32 bits: 8 bits for red,
8 bits for green, 8 bits for blue, and 8 bits for the alpha value (unused).
Region of Interest—(1) An area of the image that is graphically selected
from a window displaying the image. This area can be used focus further
processing; (2) A hardware-programmable rectangular portion of the
acquisition window.
S
sequence
Performs an acquisition that acquires a specified number of buffers, then
stops.
snap
Acquires a single image to a buffer.
syntax
Set of rules to which statements must conform in a particular programming
language.
T
timeout
Length of time, in milliseconds, that the driver waits for an image from the
camera before returning an error
transfer rate
The rate, measured in bytes/s, at which data is moved from source to
destination after software initialization and set up operations. The
maximum rate at which the hardware can operate.
trigger
Any event that causes or starts some form of data capture.
© National Instruments Corporation
G-5
NI-IMAQdx User Manual
Glossary
U
user buffer
A memory buffer created by the user as a destination for the image.
In LabVIEW, this is created with the IMAQ Create VI.
UV plane
See YUV.
V
VI
Virtual Instrument. (1) A combination of hardware and/or software
elements, typically used with a PC, that has the functionality of a classic
stand-alone instrument; (2) A LabVIEW software module (VI), which
consists of a front panel user interface and a block diagram program.
Y
YUV
A representation of a color image used for the coding of NTSC or PAL
video signals. The luma information is called Y, while the chroma
information is represented by two components, U and V representing
the coordinates in a color plane.
NI-IMAQdx User Manual
G-6
ni.com
Index
configuration, 1-2
naming convention (table), 2-3
output formats, 1-1
A
advanced programming examples
grab using low-level functions, 2-13
sequence using low-level functions, 2-14
snap using low-level functions, 2-12
application development, 1-3
C, 5-1
camera control mode, 2-2, 2-4, 3-6
camera files, 1-2, 2-3, 2-4
interface, 2-4
controller
broadcasting, 3-5, 3-6
camera control mode, 2-4
environments, 1-2
LabVIEW, 4-1
LabVIEW Real-Time Module, 4-1
.NET, 4-1, 5-2
NI-IMAQdx libraries, 1-4
B
decoding video modes, 2-8
Bayer, 1-1, 2-8
block diagram, LabVIEW, 4-1, 4-7
grab, 4-6
sequence, 4-6
snap, 4-5
broadcasting, 2-4, 3-1, 3-4
figure, 3-5
buffers, 4-2, 4-4
diagnostic tools (NI resources), B-1
documentation
NI resources, B-1
drivers (NI resources), B-1
internal, 2-1, 2-4 to 2-14, 4-5
management, 4-4
number, 2-5, 2-7
endianess, A-4
enumerate function, 2-3
error handling, 4-9
user, 2-1, 2-6, 2-9, 2-10
examples
C
advanced programming examples, 2-11
introductory programming examples, 2-9
location of files, 1-4
C programming language, 1-2, 5-1
camera
attributes, 2-1, 2-3, 2-4, 3-1, 3-6
setting camera attributes in
LabVIEW, 4-8
NI resources, B-1
© National Instruments Corporation
I-1
NI-IMAQdx User Manual
Index
F
K
features and overview, 1-1
KnowledgeBase, B-1
Format 7 video mode, 3-1, 3-6
front panel, LabVIEW, 4-1, 4-7
LabVIEW programming language,
1-2, 3-6, 4-1
G
block diagram, 4-1, 4-5 to 4-7
front panel, 4-1, 4-7
LabVIEW Real-Time Module, 1-2, 4-1
LabWindows/CVI programming
language, 1-2
grab
high-level, 2-1, 2-7, 2-10, 4-5
flowchart, 2-10
in LabVIEW (figure), 4-6
low-level, 2-13
flowchart, 2-13
listener
broadcasting, 3-5, 3-6
camera control mode, 2-4
H
help, technical support, B-1
high-level functions, when to use, 2-1
MAX, 1-2, 2-3, 2-9, 3-6
Measurement & Automation Explorer.
See MAX
memory offset, A-3, A-4
I
image buffer. See buffer
image display, 2-1, 2-8, 4-7
LabVIEW, 4-1, 4-7
figure, 4-7
LabVIEW Real-Time Module, 4-8
figure, 4-8
.NET, 5-2
IMAQ Create, 4-2, 4-4
.NET programming language, 1-4, 5-1, 5-2
NI support and services, B-1
NI-IMAQdx
IMAQ Dispose, 4-4
IMAQ WindDraw, 4-7
IMAQdx Session, 4-2, 4-3
initialization, interface, 2-2
instrument drivers (NI resources), B-1
interface file, 2-3, 2-4, 4-2
internal buffers, 2-1, 2-4 to 2-14, 4-5
high-level grab functions, 2-10
high-level sequence functions, 2-11
high-level snap functions, 2-9
acquisition types
grab, 4-5
sequence, 4-6
snap, 4-5
acquisition VIs
high-level VIs, 4-3
low-level VIs, 4-3
NI-IMAQdx User Manual
I-2
ni.com
Index
architecture, 1-3
libraries, 1-4
scalable image size, 3-6
sequence
high-level, 2-1, 4-6
flowchart, 2-11
in LabVIEW (figure), 4-6
low-level, 2-14
flowchart, 2-14
O
overwrite mode, 2-7
P
programming
high-level, 2-1, 4-5
flowchart, 2-9
in LabVIEW (figure), 4-5
low-level, 2-12
guidelines for C, 5-1
high-level functions, 2-1
NI-IMAQdx, 2-1
low-level functions, 2-1
register-level, A-1
flowchart, 2-12
software (NI resources), B-1
static test pattern, A-4
programming environments supported by
NI-IMAQdx driver software, 1-2
programming examples (NI resources), B-1
programming with NI-IMAQdx VIs, 4-4
buffer management, 4-4
introduction, 4-1
T
technical support, B-1
timeouts, 2-8
training and certification (NI resources), B-1
triggering, modes, 3-7 to 3-10
troubleshooting (NI resources), B-1
location, 4-1
parameters, 4-2
property nodes, LabVIEW, 4-2, 4-8, 4-9
Q
quadlet arrays, A-5
user buffers, 2-1, 2-6, 2-9
R
register-level programming, A-1
caveats, A-4
RGB, 1-1, 2-8, 4-4
ROI, 2-6, 2-9, 3-6
© National Instruments Corporation
I-3
NI-IMAQdx User Manual
|