The library is designed for use with all EDT Digital Imaging boards, including the VisionLink series, PCIe and PCI DV, DVa and DV series Camera Link and legacy AIA interfaces, and PMC and Compact PCI variants. The library also has components to support the Camera Link simulator boards including the PCI DV CLS, PCIe8 DV CLS and PCIe8 DVa CLS.
The PDV library sits on top of the lower-level EDT DMA Library (edtlib). Library functions from both libraries operate on the same device handle, and routines from both libraries can be used in the same application. However pdvlib (
pdv_) subroutines are designed to handle the extra bookeeping, error-recovery, triggering and timing functionality that is present on EDT Digital Imaging boards. Therefore direct calls to edtlib (
edt_) subroutines should only be made when they provide functionality that is not present in an equivalent or similar pdvlib call. Most notable are the DMA image capture subroutines -- pdvlib DMA should always be used (e.g. pdv_multibuf, pdv_start_images, pdv_wait_images), rather than calling the lower-level edtlib DMA subroutines directly (e.g. edt_configure_ring_buffers, edt_start_buffers, edt_wait_for_buffers.) However this restriction does not apply to the EDT Message Handler Library.
Complete EDT API reference in PDF format
int height = pdv_get_height(pdv_p);
pdv_multibuf(pdv_p, 4) ;
unsigned char *image = pdv_image(pdv_p) ;
int t = pdv_timeouts() ;
To compile the library as a shared (.so) library on Linux, the following steps are necessary:
See the makefile and example programs provided in the install directory for examples of compiling code using the digital imaging library routines. Windows packages include a Visual Studio (8) solution and project files in
Suggested starting points for acquisition are the simple_take.c, simplest_take.c and other simple_*.c example programs. For serial communication, see serial_cmd.c, a command line serial utility. Other simple_*.c example programs are provided to show specialized functionality.
The PdvDev device status structure is defined in the file libpdv.h. It includes the PdvDependent substructure, and other structure elements that describe the state of the board and camera, as initialized by the current camera configuration file (see the Camera Configuration Guide, at www.edt.com/manuals/PDV/camconfig.pdf ) or modified by any subsequent API setup calls. These structure elements include values for things such as the current pixel re-order or color interpolation method, size and depth of the image, number and size of currently allocated buffers. To ensure compatibility with future versions of the library, programmers should always use the library calls for getting / setting any library values, and refrain from referencing the structure elements directly. Additionally, anything that can be queried via the subroutine calls such as currently set image width, height and depth should be done via subroutine calls rather than hard-coding specific values.
The PDV library source files are included in the installation. Most but not all routines are documented here. Undocumented routines include internals, custom, special purpose and obsoletes. Feel free, however, to look through the library source code and use (with caution) any routines that are appropriate. Email firstname.lastname@example.org if you have questions about specific routines.
|Startup / Shutdown|
|To open and close the EDT digital imaging device. |
|Get and set EDT interface board (register) values as well as device driver and camera settings. |
|Read configuration files and initialize the board and camera. |
|Image acquisition subroutines. |
|Serial communications and camera control subroutines. |
|Various utility subroutines. |
|Get and set flags that determine debug output from the library. |