P3I3 Frame Grabber Family p3i_DIG, p3i_CL, p3i_CL/PMC Manual Revision 2B
Revision Info 2B 2A 1A new icons, 64 bit support dpe p3i_CL/PMC added ew, dpe First edition ew, dpe Copyright © 2001-2011 ELTEC Elektronik AG
1. DISCLAIMER Copyright © 2011 ELTEC Elektronik AG. The information, data, and figures in this document including respective references have been verified and found to be legitimate. In particular in the event of error they may, therefore, be changed at any time without prior notice. The complete risk inherent in the utilization of this document or in the results of its utilization shall be with the user; to this end, ELTEC Elektronik AG shall not accept any liability.
• Consult the dealer or an experienced radio/TV technician for help. • The use of shielded cables for connection of the monitor to the graphics card is required to assure compliance with FCC regulations. Changes or modifications to this unit not expressly approved by the party responsible for compliance could void the user's authority to operate this equipment.
immediately. • To avoid short circuits, keep paper clips, screws, and staples away from connectors, slots sockets and circuitry. • Avoid dust, humidity, and temperature extremes. Do not place the product in any area where it may become wet. • Place the product on a stable surface. • If you encounter technical problems with the product, contact a qualified service technician or your retailer. EMC Rules This unit has to be installed in a shielded housing.
Table of Contents 1. Introduction 1.1. About this document 2. Getting Started 2.1. Requirements 2.1.1. Requirements for p3i_DIG 2.1.2. Requirements for p3i_CL and p3i_CL/PMC 2.2. Hardware installation 2.3. Connecting the camera 2.4. Software installation 2.4.1. Windows operating systems 2.4.2. Linux operating systems 3. Hardware Reference 3.1. Introduction 3.1.1. General Features of p3i_DIG 3.1.2. General Features of p3i_CL and p3i_CL/PMC 3.2. p3i_DIG-Hardware 3.2.1. Block Diagram p3i_DIG 3.2.2.
P3I3 Frame Grabber Family 5.1.12. Downloading the software 5.1.13. Image Sequences - Program flow 5.1.14. Calling the library function from languages other than C/C++ 5.1.15. Virtual Grabbers 5.2. Library Functions 5.2.1. Overview of library functions 5.2.2. el_Acquire 5.2.3. el_AcquireEx 5.2.4. el_AssignBuffer 5.2.5. el_CloseHW 5.2.6. el_CreateMemBuffer 5.2.7. el_FreeMemBuffer 5.2.8. el_GetBoardIdentifiers 5.2.9. el_GetCycleTime 5.2.10. el_GetDriverRevision 5.2.11. el_GetErrorCode 5.2.12.
P3I3 Frame Grabber Family A.5. ACC-1xx0 Eagle A.6. Pulnix TM-6710CL A.7. Optisens Colorline-1728 A.8. Optisens Colorline-1728 Stereo A.9. JAI CV-M2 Ikegami SKC-145T2 Basler A102k B. FAQs B.1.
List of Tables 3.1. Bit Assignments for Appropriate Data Mode of p3i_DIG 3.2. Used SODIMM Capacity Dependent on Selected Data Mode 3.3. Pinout of 100 pin Mini-Delta-Ribbon Connector(Receptacle) 3.4. Pinout of 16-Pin Header X101 3.5. frame grabber LED 3.6. Used SODIMM Capacity Dependent on Selected Data Mode 3.7. Pinout of 26 pin Mini-Delta-Ribbon Connector X1000 (Receptacle) 3.8. Pinout of 15 pin high-density female Min-D (X1002) 3.9. Pinout of 16-Pin Header X101 3.10. frame grabber LED 3.11.
Chapter 1. Introduction 1.1. About this document The purpose of this documentation is to describe the ELTEC Elektronik AG P3I3 frame grabber family. It contains a description of the hardware and software installation, the list of software APIs and a list of cameras which can be used with this products. There are three P3I3 family members. p3i_DIG is a PCI Frame Grabber for Digital Matrix and Line-Scan cameras.
Chapter 2. Getting Started 2.1. Requirements 2.1.1. Requirements for p3i_DIG for the installation and use of the p3i_DIG frame grabber you need: • the frame grabber board. • digital Camera with RS422 or LVDS signaling standard • Camera Cable • PC with free PCI slot and Pentium CPU. • Windows XP, Vista, Windows 7 or a Linux operating system. • Operating system dependent hardware driver setup and system independent development files 2.1.2.
Chapter 2. Getting Started 2.3. Connecting the camera Attach camera cable to camera connector. 2.4. Software installation Please download our software from the web site ELTEC Elektronik AG [http://www.eltec.de] selecting Downloadcenter or ask our support( ). 2.4.1. Windows operating systems The software package is common to all members of the frame grabber family. For 32 and 64 Bit systems there is only one setup program.
Chapter 2. Getting Started 2.4.1.1.1. Windows XP, Vista, Windows 7 Under these operating systems used the setup program provided for Windows. 2.4.1.1.1.1. Installation Perform the following steps. For a first time installation perform the following steps: 1. Shut down your computer system, disconnect power. 2. Plug in the grabber and turn on power. 3. Ignore hardware detection dialogue and start setup program.
Chapter 2. Getting Started 4. Select the directory to install the software. Normally you should keep the default path.
Chapter 2. Getting Started 5. Select the components to be installed. On a development system you should install all components. On a target ''System Drivers'' and maybe ''Test Programs'' are needed.
Chapter 2. Getting Started 6. During the installation you have to confirm that you want to install the kernel driver.
Chapter 2. Getting Started 7. On a 64 bit system, you will be asked if you want to install the Windows redistributable libraries. You should keep the default setting to install them.
Chapter 2. Getting Started 2.4.1.1.1.2. Update To update an existing installation, the best way is to deinstall the old and the reinstall the new software. 1. Use the deinstallation routine of the setup program 2. Open the device manager and select ''deinstall'' in the context menu on the grabber.
Chapter 2. Getting Started 3. Make sure that the checkbox to remove the driver software is set. 4. If several gabber of a family are shown deinstall all corresponding devices 5. Reboot the system 6.
Chapter 2. Getting Started 2.4.1.2. Samples installation 2.4.1.3. Starting the configuration program The configuration program looks the same under Windows and Linux. • Start the Configuration Program from the Start-Menu (/Program Files/P3I3 Configuration Tools/P3I3 Configuration) • Select the installed board from the List-Box. Now the camera has to be selected from the camera selection dialog . if your camera does not appear in the list please contact our support (
Chapter 2. Getting Started Read the file readme.htm to latest installation hints. cd directory_of_your_choice tar xzvf path_and_name_of_tar_file 2. Login as root 3. Start the INSTALL script: ./INSTALL The installation script compiles and installed the driver, copies the shared library to /usr/lib and creates a link. You may need to perform some additional steps - e.g. creating entries in /etc/modules.conf. Please read the file readme.htm for details.
Chapter 3. Hardware Reference 3.1. Introduction The p3i_DIG is a frame grabber for digital linescan and areascan cameras, which supports EIA-644 (LVDS) as well as RS-422 differential input and output signals. A data bus width of 32-bit together with 7 differential input and 7 differential output signals makes this frame grabber most flexible for use with different data modes and camera specific signals.
Chapter 3. Hardware Reference 3.2. p3i_DIG-Hardware 3.2.1. Block Diagram p3i_DIG 3.2.2. Technical Details of p3i_DIG The frame grabber is capable of handling 11 different data modes. Cameras with 8 bits to 16 bits per pixel and multiple channels are supported. The pixel clock is taken directly from the camera to satisfy setup and hold timings. Additionally the frame grabber provides a clock output which is programmable in its frequency. The region of interest, i.e.
Chapter 3. Hardware Reference 3.2.2.1. Data Modes of p3i_DIG There are 11 different modes for handling several combinations of data inputs. The next table shows the bit assignments for the appropriate data modes where the channels are marked with A,B,C and D. A0,B0,C0,D0 are the LSBs of each channel. Table 3.1.
Chapter 3. Hardware Reference 3.2.2.1.1. Mode0 - 1x8 bit Used DMA channels: 1 4 consecutive bytes are packed into one 32-bit word. 3.2.2.1.2. Mode1 - 2x8 bit Used DMA channels: 2 4 consecutive bytes of the same channel are packed into one 32-bit word. Each channel is handled separately and the data is written into different memory buffers. 3.2.2.1.3. Mode2 - 3x8 bit Used DMA channels: 1 These 24-bits are packed together into one 32-bit word. Unused bits are zero-filled. 3.2.2.1.4.
Chapter 3. Hardware Reference 3.2.2.2.1. Digital Video Input The data input consists of 32 differential line pairs. 3.2.2.2.2. Control Inputs for p3i_DIG Beside a pixel clock, frame enable, line enable, there are resources for 4 additional user signals(DIFFIN0 to DIFFIN3). 3.2.2.2.3. Control Outputs of p3i_DIG The p3i_DIG provides three in timing adjustable outputs. These are EXPOSE , PRIN and a selectable trigger output. The trigger output can be used for instance to fire a strobe light.
Chapter 3. Hardware Reference 3.2.2.4. Trigger Input There are several trigger inputs on the frame grabber - optocoupled and TTL. The optocoupled trigger inputs have optimum noise immunity and 250 V isolation voltage. TriginOpt0+ (Trigger+ in figure below) for instance is connected to the anode of a LED, TriginOpt0- (Trigger- in figure below) to the cathode of the LED via an internal 220-Ohm resistor. Since the LED needs about 10..
Chapter 3. Hardware Reference The used SODIMM capacity is dependent on the selected data mode: Table 3.2. Used SODIMM Capacity Dependent on Selected Data Mode MODE Used SODIMM Capacity [%] Mode0 (1x8bit) 50 Mode1 (2x8bit) 100 Mode2 (3x8bit (RGB)) 75 Mode3 (4x8bit) 100 Mode4 (1x10bit) 62.5 Mode5 (2x10bit) 62.5 Mode6 (3x10bit (RGB)) 93.75 Mode7 (1x12bit) 75 Mode8 (2x12bit) 75 Mode9 (1x16bit) 100 Mode10 (2x16bit) 100 3.2.3.
Chapter 3. Hardware Reference 3.2.3.1. Frame Grabber Interface X100 of p3i_DIG Layout of 100 pin Mini-Delta-Ribbon Connector (Receptacle) This is a 100 pin half pitch Mini Delta Ribbon Connector (MDR) which contains the 32-bit data bus, 7 input signals, 7 camera control signals, 1 TTL trigger input, 1 TTL trigger output and 1 optocoupled input. Table 3.3.
Chapter 3.
Chapter 3. Hardware Reference 3.2.3.2. 16 pin Header X101 Layout of 16 pin Header (male) The 16-Pin Header is an additional interface for user signals and trigger resources. Table 3.4.
Chapter 3. Hardware Reference 3.2.4. Hex-Switch (Board-ID-Select) Switch S700 is used to set the board ID. If more than one frame grabber is plugged into the PC, each must have a distinct board ID unequal to "0". 3.2.5. Status-LEDs There are 4 LEDs for status information: Frame Grabber LEDs Table 3.5.
Chapter 3. Hardware Reference 3.3. p3i_CL-Hardware 3.3.1. Block Diagram p3i_CL 3.3.2. Technical Details of p3i_CL The frame grabber is capable of handling 10 different data modes. Cameras with 8 bits to 16 bits per pixel and multiple channels are supported. The pixel clock is taken directly from the camera to satisfy setup and hold timings. Additionally the frame grabber provides a clock output which is programmable in its frequency. The region of interest, i.e.
Chapter 3. Hardware Reference 3.3.2.1. Data Modes of p3i_CL There are 10 different modes for handling several combinations of data inputs. 3.3.2.1.1. Mode0 - 1x8 bit Used DMA channels: 1 4 consecutive bytes are packed into one 32-bit word. 3.3.2.1.2. Mode1 - 2x8 bit Used DMA channels: 2 4 consecutive bytes of the same channel are packed into one 32-bit word. Each channel is handled separately and the data is written into different memory buffers. 3.3.2.1.3.
Chapter 3. Hardware Reference 3.3.2.2. Frame Grabber Interface p3i_CL 3.3.2.2.1. CameraLink Connector of p3i_CL The CameraLink standard defines 4 differential inputs with an additional clock to transmit data and control signals from the camera to the frame grabber (X0..X3). Another four LVDS pairs are reserved for general purpose camera control. They are outputs of the p3i_CL and flexible programmable via software.
Chapter 3. Hardware Reference 3.3.2.5. Data Transfer of p3i_CL Since the p3i_CL is a busmaster card, the video data for a single frame or a whole sequence is moved into memory per DMA-transfer. There is no need for the CPU to support this process. The maximum transfer rate in a system is 105 Mbytes/s typically. In a real application the transfer rate depends on the chipset, graphic card and other active busmaster cards. 3.3.2.6.
Chapter 3. Hardware Reference 3.3.3. Connector Pinout of p3i_CL Board Overview 3.3.3.1. CameraLink Interface X1000 of p3i_CL Layout of 26 pin Mini-Delta-Ribbon Connector (Receptacle) This is a 26 pin half pitch Mini Delta Ribbon Connector (MDR) which contains the data bus, clock, control signals and the serial communication lines.
Chapter 3. Hardware Reference Table 3.7. Pinout of 26 pin Mini-Delta-Ribbon Connector X1000 (Receptacle) SIGNAL NAME PIN SIGNAL NAME PIN inner shield 1 inner shield 14 CC4- 2 CC4+ 15 CC3+ 3 CC3- 16 CC2- 4 CC2+ 17 CC1+ 5 CC1- 18 SerTfg+ 6 SerTfg- 19 SerTc- 7 SerTc+ 20 X3+ 8 X3- 21 XClk+ 9 XClk- 22 X2+ 10 X2- 23 X1+ 11 X1- 24 X0+ 12 X0- 25 inner shield 13 inner shield 26 3.3.3.2.
Chapter 3. Hardware Reference Table 3.8.
Chapter 3. Hardware Reference 3.3.3.3. 16 pin Header X101 Layout of 16 pin Header (male) The 16-Pin Header is an additional interface for user signals and trigger resources. Table 3.9.
Chapter 3. Hardware Reference 3.3.4. Hex-Switch (Board-ID-Select) Switch S700 is used to set the board ID. If more than one frame grabber is plugged into the PC, each must have a distinct board ID unequal to "0". 3.3.5. Status-LEDs There are 4 LEDs for status information: Frame Grabber LEDs Table 3.10.
Chapter 3. Hardware Reference 3.4. p3i_CL/PMC-Hardware 3.4.1. Block Diagram p3i_CL/PMC 3.4.2. Technical Details of p3i_CL/PMC The frame grabber is capable of handling 10 different data modes. Cameras with 8 bits to 16 bits per pixel and multiple channels are supported. The pixel clock is taken directly from the camera to satisfy setup and hold timings. Additionally the frame grabber provides a clock output which is programmable in its frequency. The region of interest, i.e.
Chapter 3. Hardware Reference 3.4.2.1. Data Modes of p3i_CL/PMC There are 10 different modes for handling several combinations of data inputs. 3.4.2.1.1. Mode0 - 1x8 bit Used DMA channels: 1 4 consecutive bytes are packed into one 32-bit word. 3.4.2.1.2. Mode1 - 2x8 bit Used DMA channels: 2 4 consecutive bytes of the same channel are packed into one 32-bit word. Each channel is handled separately and the data is written into different memory buffers. 3.4.2.1.3.
Chapter 3. Hardware Reference 3.4.2.2. CameraLink Connector of p3i_CL/PMC The CameraLink standard defines 4 differential inputs with an additional clock to transmit data and control signals from the camera to the frame grabber (X0..X3). Another four LVDS pairs are reserved for general purpose camera control. They are outputs of the p3i_CL and flexible programmable via software.
Chapter 3. Hardware Reference 3.4.2.5. Data Transfer of p3i_CL/PMC Since the p3i_CL/PMC is a busmaster card, the video data for a single frame or a whole sequence is moved into memory per DMA-transfer. There is no need for the CPU to support this process. The maximum transfer rate in a system is 105 Mbytes/s typically. In a real application the transfer rate depends on the chipset, graphic card and other active busmaster cards. 3.4.2.6.
Chapter 3. Hardware Reference 3.4.3. Connector Pinout of p3i_CL/PMC Board Overview 3.4.3.1. CameraLink Interface X100 of p3i_CL/PMC Layout of 26 pin Mini-Delta-Ribbon Connector (Receptacle) This is a 26 pin half pitch Mini Delta Ribbon Connector (MDR) which contains the data bus, clock, control signals and the serial communication lines.
Chapter 3. Hardware Reference Table 3.12. Pinout of 26 pin Mini-Delta-Ribbon Connector X100 (Receptacle) SIGNAL NAME PIN SIGNAL NAME PIN inner shield 1 inner shield 14 CC4- 2 CC4+ 15 CC3+ 3 CC3- 16 CC2- 4 CC2+ 17 CC1+ 5 CC1- 18 SerTfg+ 6 SerTfg- 19 SerTc- 7 SerTc+ 20 X3+ 8 X3- 21 XClk+ 9 XClk- 22 X2+ 10 X2- 23 X1+ 11 X1- 24 X0+ 12 X0- 25 inner shield 13 inner shield 26 3.4.3.2. Trigger Connector X101 of p3i_CL/PMC Layout of 9 pos.
Chapter 3. Hardware Reference Table 3.13. Pinout of 9 pos.
Chapter 3. Hardware Reference 3.4.3.3. 8 pin Header/Jumper X102 Layout of 8 pin Header/Jumper (male) The 8 pin Header/Jumper is an additional interface for user signals and trigger resources. Table 3.14.
Chapter 3. Hardware Reference 3.4.4. Jumper (Board-ID-Select) 8 pin Header/Jumper X102 is also used to set different BoardIds. If you want to use two frame grabbers with one computer system, each must have a distinct board ID. If jumper is attached from pin1 to pin2 of 8 pin Header/Jumper X102, the BoardId is 1 (Default). With no jumper the BoardId is 3.
Chapter 3. Hardware Reference 3.5. Trigger Modes The P3I3 family members support various trigger modes to satisfy the requirements of varying applications. There are three main modes of operation to distinguish: Softtrigger, Exttrigger and Autotrigger. For all three modes the necessary timing informations for the camera control signals has to be set by software before operation begins. Refer to the sofware section for adjustable parameters.
Chapter 3. Hardware Reference 3.6. Specifications 3.6.1. Electrical Specifications 3.6.1.1. Specifications for Differential Signals p3i_DIG Every differential input signal pair is terminated with a parallel 100 Ohm resistor. Table 3.15. Electrical Specifications for Differential Signals p3i_DIG Parameter Description Min Typ High Level Input Voltage VIH At any differential signal pin Low Level Input Voltage VIL At any differential signal pin -0.
Chapter 3. Hardware Reference High-Level Output Current |IOH| 32 mA Low-Level Output Current |IOL| 64 mA 3.6.1.4. Specifications for Opto-coupled Input Signals Table 3.18. Electrical Specifications for Opto-coupled Input Signals Parameter Description Min Typ Input forward current If(on) to turn output on 6.3 15 Input forward current If(off) to turn output off 0 Max Unit mA 250 uA Max Unit 3.6.1.5. Power Requirement Table 3.19.
Chapter 3. Hardware Reference 3.6.1.7. Pixel Clock Frequency p3i_CL and p3i_CL/PMC Table 3.21. Maximum Pixel Clock Frequency Parameter Description Clock-f Clock-f Min Typ Max Unit for Mode0(1x8 bit), Mode1(2x8 bit), Mode4(1x10 bit), Mode6(1x12 bit), Mode8(1x14 bit), Mode9(1x16 bit) 66 MHz for Mode2(3x8 bit), Mode3(3x8 bit RGB), Mode5(2x10 bit), Mode7(2x12 bit) 38 MHz 3.6.2. Environmental Conditions Table 3.22.
Chapter 4. Trouble Shooting - if it does not work Check if the driver and the user mode software are installed properly. See chapter Getting Started. Frame Grabber is not found by software: Make sure the grabber is correctly plugged into the PCI-connector. If mechanical problems can be excluded refer to the driver installation guide to see if the driver has been installed correctly.
Chapter 5. Programmers Reference 5.1. Overview 5.1.1. Introduction Frame Grabber configuration tools is the software foundation for ELTEC Elektronik AG frame grabber family. It is the unified interface used across all frame grabber products. Frame Grabber configuration tools is one of the most powerful low-level frame grabber interfaces available on the market. It combines three essential advantages: • Fast and optimized access to the frame grabber hardware.
Chapter 5. Programmers Reference data transfer PCI burst transfers is extended by ELTEC Elektronik AG with an intelligent PCI DMA. The Frame Grabber configuration tools make all these features available at your finger tips. ELTEC Elektronik AG s scatter-gather DMA is used to handle paged ad-dresses, resulting in linear, contiguous images appearing in main memory for easy access.
Chapter 5. Programmers Reference support/drivers and updates. 5.1.6. Industrial requirements Frame Grabber configuration tools has an extensive built-in camera support making it extremely easy to use non-standard camera features (e.g. restart/reset). Further, all signals essential to industrial applications are integrated into the Frame Grabber configuration tools. Signals for pixel synchronous acquisition (external clock) and process control (external trigger) are supported. 5.1.7.
some kind they must only belong to the same 'family' like , , , and . Because the grabbers of a family may have different hardware resources the function of a few API calls might differ slightly. Please referer to the software reference. Using grabbers of different families is more complicated because two libraries have to be used. This leads to a collision of the function names in the libraries. So simple linking of both libraries to an application does not work.
/* Initialize HW and allocate frame buffer */ framearray =(BYTE**)el_InitHW( BoardId, 0, SizeX, SizeY, NumberOfFrames, 0, 0); /* optional change of hardware parameters come here */ el_Acquire( BoardId, EL_SNAP); /* real-time acquisition of 100 frames */ el_WaitAcq( BoardId); /* wait until sequence has been acquired */ /* optional display the sequence */ /* image processing comes here */ el_Close(BoardId, 0); /* clean up library structures, close HW */ 5.1.14.
Chapter 5. Programmers Reference can only open the first virtual grabber. Because the units on a board might not be totally independent virtual grabbers have to be opened and used within one process. If multitasking is required threads have to be used. Virtual grabbers can be identified with el_GetBoardIdentifiers . If at least one "SubId" element in the list filled with EL_BOARD_IDENTIFIER structures is not eqal 0 all grabbers with the same HexSwitch element are virtual grabbers. 5.2. Library Functions 5.
Chapter 5. Programmers Reference el_TestFrameCount el_TestAcq Table 5.5. File I/O File I/O el_WriteSetupFile Table 5.6. Miscellanious Miscellanious el_SetOutputs el_ResetOutputs el_GetSetting el_GetNumOfBoards el_GetSWRevision el_GetHWRevision el_GetErrorCode el_GetErrorCodeEx Table 5.7. Camera Adaptation module functions Camera Adaptation module functions el_SetTriggerModes el_SetExtTriggerInput el_SetPixelClock el_SetExposureTime el_SetCycleTime el_GetPixelClock el_GetExposureTime el_GetCycleTime 5.2.
Mode: • live: EL_LIVE • snap: EL_SNAP • or be aborted: EL_ABORT RETURN VALUE: 0 if OK -1 if ERROR See el_GetErrorCode for details. DESCRIPTION: Single buffer acquisition: EL_LIVE: switches to live mode. A continuous real-time acquisition takes place. EL_SNAP: If acquisition is in live mode the acquisition is terminated after the current image has been acquired. If not in live mode, the acquisition is started for a single frame/field.
SEE ALSO: EL_ACQUISITIONMODE, el_OpenHW , el_NewMemBuffer 5.2.3.
Chapter 5. Programmers Reference #define CHNO 4 // number of channels long pStart[CHNO]; pStart[0] = 0; pStart[1] = 2 * SEQ_LEN/4; pStart[2] = 3 * SEQ_LEN/4; pStart[3] = 4 * SEQ_LEN/4; long pLength[CHNO]; pLength[0] = SEQ_LEN/4; pLength[1] = SEQ_LEN/4; pLength[2] = SEQ_LEN/4; pLength[3] = SEQ_LEN/4; el_AcquireEx(BoardId, EL_SNAP, 0, pStart, pLength, CHNO, 0); SEE ALSO: el_Acquire 5.2.4.
Chapter 5.
0, EL_PACKER_Y, EL_INTERLACE, &NewBuffIds[1]); if (ppVideoMemory_1 < 0 ) { ReportError( "el_CreateMemBuffer" ); return; } ppVideoMemory_2 = el_CreateMemBuffer(nBoardID, 0, nSizeX, nSizeY,(long *) &nSequenceLength, 0, EL_PACKER_Y, EL_INTERLACE, &NewBuffIds[2]); if (ppVideoMemory_1 < 0 ) { ReportError( "el_CreateMemBuffer" ); return; } ppVideoMemory_3 = el_CreateMemBuffer(nBoardID, 0, nSizeX, nSizeY, (long *) &nSequenceLength, 0, EL_PACKER_Y, EL_INTERLACE, &NewBuffIds[3]); if (ppVideoMemory_1 < 0 ) { ReportEr
5.2.6. el_CreateMemBuffer void ** el_CreateMemBuffer ( long BoardId, void** ppMemStart, long SizeX, long SizeY, long *pFrameCount, long Pitch, long PackingMode, long MemForm, long* pBufferNo ); Similar to el_NewMemBuffer the routine allocates image memory. Use el_AssignBuffer to assign the buffer to a DMA channel. PARAMETERS: BoardId : board ID returned by el_OpenHW ppMemStart : Pointer to array of pointers to picture buffers. NULL pointer terminates array.
Chapter 5. Programmers Reference 0 if OK -1 if ERROR. See el_GetErrorCode for details. CAVEATS: 'BufferNo' specifies the buffer or sequence to be released. If user allocated memory has been used set MemStart to the array used for the allocation of the memory. 5.2.8. el_GetBoardIdentifiers long el_GetBoardIdentifiers ( EL_BOARD_IDENTIFIER *pArray, long StructSize, long ArrayLength, long *pNumOfBoards ); Fills the EL_BOARD_IDENTIFIER with informations about the installed grabber boards.
Chapter 5. Programmers Reference ValSelect : 0: reads the realised value, 1: reads the desired value DESCRIPTION: Retrieves the current cycle time (for details look at el_SetCycleTime). With ValSelect=0 the actually realized value is returned. With ValSelect=1 the desired value is returned. Nearly all cameras have a minimum value due to the time needed for data read out.
SEE ALSO: Error Codes 5.2.12. el_GetErrorCodeEx long el_GetErrorCodeEx ( char *pszBuffer, long lnLen, long nLanguage ); DESCRIPTION: Inquire error description string. pszBuffer: Buffer to be filled with error description string. lnLen: Length of the buffer that should be filled. nLanguage: Language of description. Not used yet, set to 0. RETURN VALUE: The Error Number Fills the buffer with a string that gives a short error description and informs where in the library the error occured .
Inquires hardware revision of the video hardware. PARAMETERS: BoardId : board ID returned by el_OpenHW High : Pointer to long with high part of revision Low : Pointer to long with low part of revision RETURN VALUE: pointer to revision string if OK or NULL if error. See el_GetErrorCode for details. EXAMPLE: long hwrevlo, hwrevhi, swrevhi, swrevlo, drrevhi, drrevlo; el_GetHWRevision( BoardId, &hwrevhi, &hwrevlo ); el_GetSWRevision( &swrevhi, &swrevlo ); el_GetDriverRevision( &drrevhi, &drrevlo ); 5.2.15.
Chapter 5. Programmers Reference RETURN VALUE: the pixel clock if OK -1 if ERROR. See el_GetErrorCode for details. SEE ALSO: el_SetPixelClock 5.2.17. el_GetSelectedCamera long el_GetSelectedCamera ( long BoardId, char *Buffer, long BufferLen ); DESCRIPTION: Gets the current camera name. PARAMETERS: BoardId : board ID returned by el_OpenHW Buffer : Buffer for the camera name BufferLen : length of the buffer RETURN VALUE: 0 if OK -1 if ERROR. See el_GetErrorCode for details. SEE ALSO: el_SelectCamera 5.2.
Chapter 5. Programmers Reference -1 if ERROR. See el_GetErrorCode for details. SEE ALSO: EL_FGITEM EXAMPLE: maxxwid = el_GetSetting (BoardId, EL_MAXACQSIZEX, 0)); if( maxxwid == -1 ) { bErrorOnGetSetting = TRUE; } 5.2.19.
Revision : Pointer to long with revision DESCRIPTION: Inquires software revision of the API library. RETURN VALUE: pointer to revision string if OK NULL if ERROR. See el_GetErrorCode for details. EXAMPLE: long hwrevlo, hwrevhi, swrevhi, swrevlo, drrevhi, drrevlo; el_GetHWRevision( BoardId, &hwrevhi, &hwrevlo ); el_GetSWRevision( &swrevhi, &swrevlo ); el_GetDriverRevision( &drrevhi, &drrevlo );--> 5.2.21.
PARAMETERS: BoardId : board ID returned by el_OpenHW MemStart : Pointer to array of pointers to picture buffers, NULL pointer terminates array. SizeX : hor. size of frame buffers SizeY : vert. size of frame buffers FrameCount : number of frames allocated Pitch : hor. pixel offset in pixel between subsequent video lines BuffNo : Pointer to frame buffer identifier DESCRIPTION: Initializes the video hardware with parameters prepared with el_InitContext().
Chapter 5. Programmers Reference the supplied memory buffers. FrameCount specifies the number of buffers in a sequence. If FrameCount is 0/1 only a single buffer is used for image acquisition. Pitch specifies the offset in pixel between the start locations of two following lines of an image. Pitch must supply the value (horizontal X dimension) used to allocate the image memory buffer. With user defined image buffers the Pitch is fixed to the specified value, e.g.
Chapter 5. Programmers Reference BoardId : board ID returned by el_OpenHW MemStart : Pointer to array of pointers to picture buffers. NULL pointer terminates array. SizeX : hor. size of frame buffers SizeY : vert. size of frame buffers FrameCount : number of frames allocated Pitch : hor. pixel offset between subsequent video lines BuffNo : Pointer to frame buffer identifier DESCRIPTION: Activates and/or allocates memory buffer for acquisition. RETURN VALUE: Pointer to pointer array if OK . 0 if ERROR.
0 and specify the X/Y dimension of each image buffer allocated by the user. Then el_NewMemBuffer does not allocate image memory it uses the supplied image buffers. The size of the current acquisition window is adapted to the supplied SizeX/SizeY values to make the image data fit into the supplied memory buffers. FrameCount specifies the number of buffers in a sequence. If FrameCount is 0/1 only a single buffer is used for image acquisition.
BoardSelect: board number Mode: force basic setup yes/no RETURN VALUE: Board ID of board initialized successfully -1 if ERROR. See el_GetErrorCode for details. DESCRIPTION: If the board specified with BoardSelect is not initialized yet, el_OpenHW() does the basic setup of the video hardware and returns an unique board ID. If the board specified withBoardSelect is already initialized, an error is returned.
Chapter 5. Programmers Reference { nError = el_GetErrorCode(); return FALSE; } nRc = el_Acquire( nBoardID, EL_SNAP ); if ( 0 != nRc ) { nError = el_GetErrorCode(); return FALSE; } else { // Wait for Acquisition end nRc = el_WaitAcqEnd( nBoardID ); if ( 1 != nRc ) { nError = el_GetErrorCode(); return FALSE; } } // // Get settings // nSizeX = el_GetSetting(nBoardID, EL_ACQSIZEX, 0); nSizeY = el_GetSetting(nBoardID, EL_ACQSIZEY, 0); 5.2.25.
Chapter 5. Programmers Reference long BoardId[16]; long LastHex=-1; int i; long BoardCount; EL_BOARD_IDENTIFIER IdList[16]; // get list of all installed boards long ByCount=el_GetBoardIdentifiers(IdList, sizeof(EL_BOARD_IDENTIFIER), 16, &BoardCount); // open all boards installed in the computer for(i=0; i< BoardCount; i++) { BoardId[i] = el_OpenHWEx( IdList[i].HexSwitch, 0,"",IdList[i].SubId,0 ); if(LastHex == IdList[i].HexSwitch) { if(LastHex == IdList[i-1].
DESCRIPTION: Sets a camera defined in the camera file. RETURN VALUE: 0 if OK -1 if ERROR. See el_GetErrorCode for details. SEE ALSO: el_GetSelectedCamera EXAMPLE: // // Get camera name // szCameraName = new char [50]; nRc = el_GetSelectedCamera(nBoardID, szCameraName, 50); if (0 != nRc) { ReportError( "el_GetSelectedCamera" ); return; } 5.2.28.
If the acquisition memory format is set to interlace acquisition, all acquisition window parameters must be specified as frame-related values. If the acquisition memory format is set to non-interlace, the window parameters must be specified as field-related values. The hardware does not allow to set the window parameter in units of one pixel. Therefore, the values programmed can be inquired with el_GetSetting (EL_ACQSTARTX, EL_ACQSTARTY, EL_ACQSIZEX, EL_ACQSIZEY).
Chapter 5. Programmers Reference DESCRIPTION: Sets the desired exposure time in micro seconds. For some cameras not all values can be realised. In these cases the function sets the exposure time to the next possible value. The realized and the desired values can be obtained with el_GetExposureTime. For cameras which do not use the clock, generated on the board, the use of el_SetPixelClock is still necessary because the values set there are used for the timing calculations.
Chapter 5. Programmers Reference el_SetExtTriggerInput ( long BoardId, long CamSel, long TriggerInput ); PARAMETERS: BoardId : board ID returned by el_OpenHW CamSel : Selects camera; set to 0 TriggerInput : Selects the external trigger input DESCRIPTION: Selects one of six possible types of external trigger inputs: RETURN VALUE: 0 if OK -1 if ERROR. See el_GetErrorCode for details.
Reserved2 ); BoardId : board ID returned by el_OpenHW Frequency : Frequency in Hz Reserved1 : DESCRIPTION: Sets the pixel clock generated on the board. The value has to be specified in Hz. If a camera uses its own clock, the value has to be set to the frequency of the camera clock, because it is used for timing calculations. The realized and the desired frequency can be obtained with el_GetPixelClock. RETURN VALUE: 0 if OK -1 if ERROR. See el_GetErrorCode for details. SEE ALSO: el_GetPixelClock 5.2.35.
// Acquire one frame el_Acquire (BoardId, EL_SNAP); do { ...; } while( el_TestAcq( BoardId ) || Timeout-- ); 5.2.36. el_TestFrameCount long el_TestFrameCount ( long BoardId ); DESCRIPTION: Returns contents of the frame-counter. el_TestFrameCount is used to determine the currently used acquisition buffer during a running sequence acquisition. It is ensured that the frame count returned specifies the frame which is present in memory.
Chapter 5. Programmers Reference is stopped, or a time-out is reached. Therefore, this function can be used to determine the end of an acquisition triggered with el_Acquire . SEE ALSO: el_TestAcq EXAMPLE: // Acquire one frame/sequence el_Acquire (BoardId, EL_SNAP); // wait until frames are present in memory if( el_WaitAcqEnd( BoardId ) == -1 ) { if( el_GetErrorCode() == EL_E_ACQTIMEOUT ) { MessageBox (NULL, "No video input.
Chapter 5. Programmers Reference 5.2.38. el_WriteSetupFile long el_WriteSetupFile ( long BoardId, char* Filename, long Overwrite ); Filename : pointer to string with name of setup file and path Overwrite : '1' if file should be overwritten, '0' otherwise DESCRIPTION: Saves all current settings into a file. If the file specified with 'Filename' exists, it is not updated. Only if Overwrite is set to '1' the function can be forced to overwrite an existing file.
EL_W_WRONGREVISIONCRC 4 Wrong CRC in hardware revision EEPROM EL_W_ACQWINDOWTOOBIG 3 Acquisition window too big for the camera selected; will be made smaller automatically EL_W_INLUTINDEXTOOBIG 2 The requested entry of the input look-up table does not exist. Valid values are 0..255. EL_W_HWALREADYOPENED 1 The hardware has been opened without subsequent close. This may indicate that another task uses the DLL already, which will lead to errors.
description of ' el_NewMemBuffer '. EL_E_WRONGBOARDID -13 No board with this ID is open. EL_E_ADCREFLEVELS -14 Invalid reference values for analog-to-digital converter given. EL_E_FILEOPEN -15 File not existing or otherwise not accessible. EL_E_FILEIO -16 Read or write error during file I/O. EL_E_FILECHECKSUM -17 Wrong checksum for setup parameter file. Parameter file corrupted. Write new file or restore backup file. EL_E_UNKNOWNSETUPVERSION -18 Version code in setup file wrong.
Chapter 5. Programmers Reference EL_E_BIOSFUNCTIONCALL -35 The Bios did not execute one of the following PCI Bios callsproperly (returned an error): 'Find PCI device', 'Write configuration word', 'Read configuration word'. The Bios call did finish without an error, but the address cannot be read back. May indicate that the boards does not sit firmly in its connector. EL_E_NOHARDWARESUPPORT -36 This special feature is not supported by the used hardware revision.
Chapter 5. Programmers Reference EL_E_WRONGTASKID -500 Internal errorcode EL_E_BUFFERNULLPTR -501 User defined buffer pointer is NULL. EL_E_WRONGBUFFERALIGN -502 User defined buffer has wrong DMA alignment. EL_E_WRONGPITCH -503 Pitch is wrong EL_E_WRONGFRAMESIZE -504 Framesize not supported by the sensor. EL_E_WRONGACQFORMAT -505 Acquisition format not supported by the sensor. EL_E_WRONGINTERRUPTMODE -506 selected interrupt mode unknown. SE ALSO el_GetErrorCode , el_GetErrorCodeEx 5.3.3.
EL_MEMPIXELSIZE EL_PACKINGMODE EL_FRAMECOUNT EL_FRAMEBUFPITCH EL_BUFFERID 5.4. Data Structures 5.4.1. EL_CAMFEATURES An entry of the camera feature list This structture can be used for inquiring the (maximum) parameters the grabbers supports for the specific camera. The actual settings can be inquired with el_GetSetting (...). el_GetCamFeatures() will initialize this structure, if the first entry (SpecialFeature.StructureSize) is set to sizeof (EL_CAMEXTENSIONS).
USED IN: el_GetBoardIdentifiers used to retieve informations about the installed boards typedef struct { char Name[32]; // name of the board long HexSwitch; // hex switch setting of the board long SubId; // used to select sub grabbers if several virtual grabbers are hosted on one board } EL_BOARD_IDENTIFIER; 87
Chapter 6. Samples 6.1. Programming example This small programming example shows how to use the basic API functions to setup the grabber hardware for getting a snap shot from the camera into memory. The import library eleye716.lib (compiler dependent) has to be specified in your development tool. #include "elpceye7.
Chapter 6. Samples } nRet = el_WaitAcqEnd(wBoardID); if(nRet < 0){ printf("Failed!!"); } else { printf("Snap!!"); } . . . call the display server . // close the grabber el_CloseHW(wBoardID, NULL); return(true); } Open the hardware. The routine returns -1 or a board identifier, which is used in subsequent function calls. Initializes internal software structures with data read from a setup file. This data will be used to initialize the video hardware by el_InitHW() later.
Appendix A. Cameras A.1. Introduction The software adaptation for each camera is done by ELTEC Elektronik AG and included in the camera file eleye716.cam which has to reside in the same directory as eleye716.dll. if you don't find your camera in the list below ask the ELTEC Elektronik AG support ( ) to check if an adaptation is possible. A.2. Overview of Cameras supported by the software Table A.1. Cameras p3i_DIG 1. Dalsa Spark X 2. Hitachi KP-F100 X 3. ACC-1xx0 Eagle X 4.
Appendix A. Cameras For the cameras "ACC-11x0 Eagle 2048 pix." and "ACC-1100 Eagle 2592 pix." a range of 4-17 MHz is accepted. For the cameras "ACC-1120 Eagle 5000 pix." and "ACC-1120 Eagle 7926 pix." the clock is fixed to 12.5 MHz For all these cameras 4 pixel are not usable due to technical reasons. The minimun time after which the cameras can be retriggered depends on the length of the sensor an the used pixel clock. In the software this minimum time is called cycle time.
Appendix A. Cameras the cycle time, which is the time after which the cameras can be retriggered, is also controlled by el_SetExposureTime. If the desired values of el_SetExposureTime and el_SetExposureTime are below the values required by the camera the real values are set to the lowest possible values and the realised values can be inquired using the corresponding el_Get... function.
Appendix A. Cameras el_SetRegister(wBoardId,"Gain1", 1, 1); // set Gain1 to 1 el_SetRegister(wBoardId,"Gain1", 0, 1); // set Gain1 to 0 A.9. JAI CV-M2 Ikegami SKC-145T2 Basler A102k These cameras have been adapted in a free running and an triggered mode. The triggered mode is intended to be used with pulse width mode controlled exposure.
Appendix B. FAQs B.1. Common FAQs B.1.1. What is synchronous acquisition? Synchronous acquisition means that all cameras run synchronously to each other. This is done by applying a horizontal and a vertical sync signal to each camera. For the frame grabber family family these signal have to be taken from the on-board sync generator. Using sync signals from an extra camera is not possible. In restart mode synchronous operation is achieved by using the h-sync signal for the horizontal synchronisation.
Appendix B. FAQs channel (calling el_AssignBuffer with channel ID 0). There is one exception if the memory acquisition format is set to el_DUAL. In this case the data is written to different lines within the buffer (if the camera adaptation supports this). For a camera like the JAI CV-M10 which provides even and odd field at the same time at two different outputs this can be used to transfer the even lines over one DMA-channel and the odd lines over another channel. B.1.4.
Appendix B. FAQs documentation of the camera file. if no setup file is used, el_InitSyncGenerator has to be called to chose the correct synchronization signals and with el_EnableSyncGenerator the generator has to be switched on. ppVidPtr = el_InitHW(.......,&nBufNo); : el_SetVideoInPort(nBoardId, EL_CAMPARALLEL); ppVidPtr2=el_NewMemBuffer(BoardId, 0, 0, 0, 1, 0, &nBufNo2) ; ppVidPtr = el_AssignBuffer(nBoardId,1,nBufNo,1.0, 1.
Appendix B. FAQs "CV-M77 grabber trg." "Sony XC-55 E-DONPISHA II" "Sony XC 55 continous DONPISHA" "Sony XC-55 fullframe" "Sony XC-55 interlaced" "Sony XC-55 Long Time Exp" "Sony XC-55 Rest. Res." "Teli CS3910 Fixed Mode" "Teli CS3910 fullframe" "Teli CS3910 RTS Pulse Mode" "XC-003P" "XC-003P donp. camera trg." "XC-003P donp. grabber trg." "XC-003P R.R.
Appendix B.
Index G Grabber functions el_Acquire, 53 el_AcquireEx, 55 el_AssignBuffer, 56 el_CloseHW, 58 el_CreateMemBuffer, 59 el_FreeMemBuffer, 59 el_GetBoardIdentifiers, 60 el_GetCycleTime, 60 el_GetDriverRevision, 61 el_GetErrorCode, 61 el_GetErrorCodeEx, 62 el_GetExposureTime, 62 el_GetHWRevision, 62 el_GetNumOfBoards, 63 el_GetPixelClock, 63 el_GetSelectedCamera, 64 el_GetSetting, 64 el_GetSupportedCamFeaturesEx, 65 el_GetSWRevision, 65 el_InitContext, 66 el_InitHW, 66 el_NewMemBuffer, 68 el_OpenHW, 70 el_OpenHWE