# RTV Series

# Multi-Channel Real-Time Video

Frame Grabber Series

User’s Manual

Manual Rev. 2.03

Revision Date: April 22, 2009

Part No: 50-1R001-1010

![This image features the universal recycling symbol (Mobius loop). It consists of a black circle containing three white arrows arranged in a triangular formation, chasing each other in a continuous loop. Each arrow is stylized with three distinct, parallel rectangular segments making up its body. There is no text present.](.rtvseries-50-1r001-1010-203/c80304ff68b1feb442bb281c2d6d6d7735c61e17da9ef1fee32f3383a9a45220.jpg)
Recycled Paper

Copyright 2009 ADLINK TECHNOLOGY INC.

All Rights Reserved.

The information in this document is subject to change without prior notice in order to improve reliability, design, and function and does not represent a commitment on the part of the manufacturer.

In no event will the manufacturer be liable for direct, indirect, special, incidental, or consequential damages arising out of the use or inability to use the product or documentation, even if advised of the possibility of such damages.

This document contains proprietary information protected by copyright. All rights are reserved. No part of this manual may be reproduced by any mechanical, electronic, or other means in any form without prior written permission of the manufacturer.

# Trademarks

Product names mentioned herein are used for identification purposes only and may be trademarks and/or registered trademarks of their respective companies.

# Getting Service from ADLINK

Customer Satisfaction is top priority for ADLINK Technology Inc. Please contact us should you require any service or assistance.

# ADLINK TECHNOLOGY INC.

Web Site: http://www.adlinktech.com

Sales & Service: Service@adlinktech.com

TEL: +886-2-82265877

FAX: +886-2-82265717

Address: 9F, No. 166, Jian Yi Road, Chungho City,

Taipei, 235 Taiwan

Please email or FAX this completed service form for prompt and satisfactory service.

<table><tr><td colspan="2">Company Information</td></tr><tr><td>Company/Organization</td><td></td></tr><tr><td>Contact Person</td><td></td></tr><tr><td>E-mail Address</td><td></td></tr><tr><td>Address</td><td></td></tr><tr><td>Country</td><td></td></tr><tr><td>TEL</td><td>FAX:</td></tr><tr><td>Web Site</td><td></td></tr><tr><td colspan="2">Product Information</td></tr><tr><td>Product Model</td><td></td></tr><tr><td>Environment</td><td>OS:M/B: CPU:Chipset: Bios:</td></tr></table>

Please give a detailed description of the problem(s):

# Table of Contents

# Table of Contents..........

# List of Tables ......... iii

# List of Figures .........

# 1 Introduction .......

1.1 Features... 1

Image Acquisition

I/O Lines . 2

Watchdog Timer . 2

Supported Software . 2

1.2 Applications . 3

1.3 System Requirements . 3

1.4 RTV-24 Benchmarks . 4

1.5 PCIe-RTV-24 Benchmarks .. 6

# 2 Hardware Reference........ 9

2.1 RTV Series ..... 9

PCIe-RTV24 Specifications 9

RTV-24 Specifications . 15

RTV-E4 Extension Board (Optional) . 21

RTV-I4 Isolation GPIO Board (Optional) . 22

2.2 cRTV Series... 27

cRTV-24 Specifications .. 27

cRTV-44 Specifications .. 30

2.3 PMC-RTV Series .... 35

PMC-RTV21 Specifications . 35

PMC-RTV24 Specifications . 39

# 3 Installation Guide ..... 43

3.1 Hardware Installation .... 43

RTV Series .. 43

cRTV Series . 44

PMC-RTV Series .. 47

RTV-E4 Extension Board (Optional) .. 48

RTV-I4 Extension Board (Optional) .. 49

3.2 Driver Installation .. 50

WDM Driver Installation ... 50

DirectShow Driver Installation . .. 56

RTV-LVIEW Installation .. 61

Uninstall RTV-LVIEW . 63

Linux Driver Installation . 64

# 4 ViewCreatorPro Utility .......... 67

4.1 Overview .... 67
4.2 Component Description . 68
4.3 Operation Theory.. 69

Devices Panel . 69

Adjustment Panel . .. 70

Toolbar .. .. 70

Status Bar .. .74

Display Panel . .. 75

Main Menu . 77

# 5 Function Library......... .... 81

5.1 List of Functions.. 82
5.2 C/C++ Programming Library..... 8 3
5.3 System Functions . 84
5.4 Configuration Functions. 90
5.5 Image Grabbing .. . 100
5.6 GPIO & EEPROM Functions .. . 105
5.7 Callback & Thread Functions... . 111
5.8 Watchdog Timer... . 117
5.9 Software Trigger . . 119
5.10 Frame Buffer.. 122
5.11 Angel RTV LabVIEW Function Library....... . 127

# 6 Programming Guide ........ .. 135

6.1 DirectShow Programming Guide .. . 135
6.2 LabVIEW Programming Guide... . 150
6.3 Linux Programming Guide . 156

# 7 Appendix......... .... 165

7.1 Glossary... . 165
7.2 Standards Compliance... . 167

# List of Tables

Table 1-1: RTV Series Acquisition Speed

Table 2-1: GPIO Characteristics . 1 0

Table 2-2: RTV Video Inputs 11

Table 2-3: Channel Extension Video Input (CN2) 1 2

Table 2-4: Channel Extension Video Input (CN3) ......... 1 2

Table 2-5: Channel Extension Video Input (CN5) . 13

Table 2-6: GPIO (CN8) .... 13

Table 2-7: GPIO (CN9) . 14

Table 2-8: Watchdog Timer 1 4

Table 2-9: GPIO Characteristics 1 5

Table 2-10: RTV Video Inputs 17

Table 2-11: Channel Extension Video Input (CN2) ......... 18

Table 2-12: Channel Extension Video Input (CN3) . 1 8

Table 2-13: Channel Extension Video Input (CN5) . 19

Table 2-14: GPIO (CN8) . 19

Table 2-15: GPIO (CN9) . 20

Table 2-16: Watchdog Timer 20

Table 2-17: Channel Extension Video Input (CN11) ................ .. 21

Table 2-18: Relay Jumper Settings 22

Table 2-19: STRG Jumper Settings 23

Table 2-20: RTV-I4 GPIO (CN1) &lt;--&gt; RTV-24 GPIO (CN8) ...... 25

Table 2-21: RTV-I4 GPIO (CN2) &lt;--&gt; RTV-24 GPIO (CN9) ...... 25

Table 2-22: D-sub 25-pin Connector 2 6

Table 2-23: cRTV Video Inputs .... 28

Table 2-24: Channel Extension Video Input (CN8) .......... 29

Table 2-25: GPIO Characteristics 3 0

Table 2-26: cRTV Video Inputs .. 3 2

Table 2-27: Channel Extension Video Input (CN8) . 33

Table 2-28: GPIO 0 Pinout 33

Table 2-29: GPIO 1 Pinout 34

Table 2-30: GPIO Characteristics ... . 35

Table 2-31: Video Input 37

Table 2-32: GPIO Pinout 38

Table 2-33: GPIO Characteristics 41

Table 2-34: GPIO Characteristics ..... . 41

Table 2-35: Video Input 42

Table 2-36: GPIO Pin-out 42

Table 5-1: List of Functions 82

Table 5-2: C/C++ Data Types . 83

Table 5-3: Pixel Data 122

# List of Figures

Figure 2-1: PCIe-RTV24 Appearance..... 9

Figure 2-2: Trigger Signal Waveform. 11

Figure 2-3: Trigger Signal Waveform. 16

Figure 2-4: RTV-24 Appearance... 1 6

Figure 2-5: RTV-E4 Appearance .... . 21

Figure 2-6: RTV-I4 Appearance.. 2 2

Figure 2-7: Relay Address Jumpers .. 23

Figure 2-8: STRG Address Jumpers... 24

Figure 2-9: cRTV-24 Appearance .. 2 7

Figure 2-10: cRTV-44 Appearance .. 3 1

Figure 2-11: PMC-RTV21 Appearance.... 3 6

Figure 2-12: PMC-RTV21 Video Input & GPIO... 37

Figure 2-13: PMC-RTV24 Appearance.. 41

Figure 2-14: PMC-RTV24 Video Input & GPIO... 4 1

Figure 3-1: RTV-24 Installation ... 4 3

Figure 3-2: cRTV-24 (3U cPCI)... 4 5

Figure 3-3: cRTV-44 (6U cPCI)...... 4 6

Figure 3-4: RTV-E4 Attachment... 48

Figure 3-5: RTV-I4 Attachment .. 49

Figure 5-1: Video Frame .. 91

# 1 Introduction

The RTV series acquisition board is designed without compromise for security and video surveillance applications as a PC-based multiple channel digital video recorder.

This 32-bit/64bit, 33MHz/66MHz PCI/cPCI/PMC bus frame grabber simultaneously captures four video analog streams in realtime. It accepts standard composite color (PAL, NTSC) or monochrome video formats (CCIR, EIA).

The square-pixel and broadcast resolutions are programmable (640 x 480 or 768 x 576). Before images are transferred into the PC’s memory, the resolution can be scaled down using selectable ratios.

Arbitrary cropping to regions of interest is supported. The RTV series generates bitmaps in all popular color formats such as RGB.

System integrators will benefit from a watchdog timer for fault-tolerant applications and from the easy-to-use standard connectors.

# 1.1 Features

# 1.1.1 Image Acquisition

Acquisition Speed

<table><tr><td>NTSC</td><td>1 Camera</td><td>2 Cameras</td><td>3 Cameras</td><td>4 Cameras</td><td>8 Cameras</td></tr><tr><td>Fields</td><td>60</td><td>120</td><td>180</td><td>240</td><td>240</td></tr><tr><td>Frames</td><td>30</td><td>60</td><td>90</td><td>120</td><td>120</td></tr><tr><td>PAL</td><td>1 Camera</td><td>2 Cameras</td><td>3 Cameras</td><td>4 Cameras</td><td>8 Cameras</td></tr><tr><td>Fields</td><td>50</td><td>100</td><td>150</td><td>200</td><td>200</td></tr><tr><td>Frames</td><td>25</td><td>50</td><td>75</td><td>100</td><td>100</td></tr></table>

Table 1-1: RTV Series Acquisition Speed

Note: The PMC-RTV21 is capable of only up to 30 frames (60 fields) in total acquisition speed.

# Color Image

The color video format is compatible with the following composite video input formats: NTSC-M, NTSC-Japan, PCL-B, PAL-D, PAL-G, PAL-H, PAL-I, PAM-M, PAL-N, and SECAM

# Monochrome Image

The monochrome video acquisition is compatible with CCIR and EIA (RS-170)

# Optional Scaling

Optional scaling of acquired image or portions of an image.

 Acquisition of a programmable area of interest.
 Scaling of the image (down to 1:16).
 Adjustment of hue (for NTSC signals), contrast (0 to 200%), brightness and saturation (0 to 200% for U and V signals).
 Automatic chrominance gain control.

# 1.1.2 I/O Lines

The RTV series is fitted with TTL compatible I/O lines protected against overloads and electrostatic discharges. Each line may be configured as an input or output. They can be used to trigger acquisition or report alarm signals.

# 1.1.3 Watchdog Timer

A hardware watchdog is available on the RTV-24 that is able to monitor PC application operation and will automatically reset the PC after a programmable inactivity time-out. This ensures reliable operation of remote systems.

# 1.1.4 Supported Software

# WDM driver

The drivers support VC++ / VB / Delphi / C++ Builder programming under Windows NT/98/2000/XP. DLLs and reference sample programs are provided.

# ViewCreator

The package will assist in initial test and functional evaluation.

AngeloLVIEW - Angelo-LVIEW is fully compatible with LabView™ 6.0 and above and it provides a full set of VIs that can be used with the Angelo RTV series (RTV-24, cRTV-24, cRTV-44 and PMC-RTV21/G). VIs for Windows 98/NT/2000/XP operation systems and LabView™ sample programs are provided for users' reference.

# 1.2 Applications

 PC Based Surveillance System
 Digital Video Recorder (DVR)
 Factory Monitoring System
 Machine Vision Inspection System
 Scientific Research Instrumentation
 Medical Research Instrumentation

# 1.3 System Requirements

The minimum system requirements for 4-CH real-time NTSC\*/ PAL\*\* color image acquisition are:

 Platform: Pentium 4, 2.4GHz CPU, 256MB DDRAM above.
 VGA display: AGP 4X or above (VIA or SiS VGA chipset NOT recommended).
Display setting: 800 x 600 resolution or above, 16-bit color or above.
OS: if using Windows 2000, please upgrade to Service Pack 4.0 or above.

Note: Lower system configurations will lower acquisition performance.

Note: Please refer to section 1.4 RTV-24 Benchmark for the performance issues due to PCI bus bandwidth limitations.

\* NTSC real-time color images – Provides 640 x 480 pixel image resolution at the RGB 16-bit color format. Each channel acquires 30 frames per second with 4-CH totaling up to 120 frames per second.

\*\* PAL real-time color images – Provides 768 x 576 pixel image resolution at the RGB 16-bit color format. Each channel acquires 25 frames per second with 4-CH totaling up to 100 frames per second.

# 1.4 RTV-24 Benchmarks

Motherboard: ASUS P5E64 WS EVOLUTION

CPU: Intel Core2 Duo CPU E4600 @ 2.4GHz

RAM: DDR3\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB16, Full(640*480)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>×</td><td>×</td><td>×</td><td>×</td></tr><tr><td>Frame Rate</td><td>29.814</td><td>29.813</td><td>29.813</td><td>29.815</td><td></td><td></td><td></td><td></td></tr></table>

Motherboard: ASUS P5E64 WS EVOLUTION

CPU: Intel Core2 Duo CPU E4600 @ 2.4GHz

RAM: DDR3\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB24, Full(640*480)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td></tr><tr><td>Frame Rate</td><td>29.814</td><td>29.815</td><td>29.815</td><td></td><td></td><td></td><td></td><td></td></tr></table>

Motherboard: NuPRO-965

CPU: Intel Core2 Quad Q6600 @ 2.4GHz

RAM: DDR2\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB16, CIF(320*240)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.966</td><td>29.960</td><td>29.964</td><td>29.958</td><td>29.961</td><td>29.958</td><td>29.966</td><td>29.964</td></tr><tr><td>Card#</td><td colspan="4">Card 2</td><td colspan="4">Card 3</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>×</td><td>×</td><td>×</td><td>×</td></tr><tr><td>Frame Rate</td><td>29.943</td><td>29.883</td><td>29.927</td><td>29.833</td><td></td><td></td><td></td><td></td></tr></table>

Motherboard: NuPRO-965

CPU: Intel Core2 Quad Q6600 @ 2.4GHz

RAM: DDR2\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB24, CIF(320*240)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.966</td><td>29.963</td><td>29.966</td><td>29.963</td><td>29.966</td><td>29.963</td><td>29.966</td><td>29.966</td></tr><tr><td>Card#</td><td colspan="4">Card 2</td><td colspan="4">Card 3</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td><td>×</td></tr><tr><td>Frame Rate</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table>

# 1.5 PCIe-RTV-24 Benchmarks

Motherboard: ASUS P5E64 WS EVOLUTION

CPU: Intel Core2 Duo CPU E4600 @ 2.4GHz

RAM: DDR3\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB16, Full(640*480)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.811</td><td>29.798</td><td>29.810</td><td>29.808</td><td>29.807</td><td>29.805</td><td>29.808</td><td>29.801</td></tr></table>

Motherboard:ASUS P5E64 WS EVOLUTION

CPU: Intel Core2 Duo CPU E4600 @ 2.4GHz

RAM: DDR3\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB24, Full(640*480)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>×</td><td>√</td><td>√</td><td>√</td><td>×</td></tr><tr><td>Frame Rate</td><td>29.808</td><td>29.811</td><td>29.808</td><td></td><td>29.808</td><td>29.814</td><td>29.809</td><td></td></tr></table>

Motherboard: NuPRO-965

CPU: Intel Core2 Quad Q6600 @ 2.4GHz

RAM: DDR2\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB16, CIF(320*240)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.810</td><td>29.09</td><td>29.810</td><td>29.809</td><td>29.809</td><td>29.810</td><td>29.808</td><td>29.809</td></tr><tr><td>Card#</td><td colspan="4">Card 2</td><td colspan="4">Card 3</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.810</td><td>29.809</td><td>29.809</td><td>29.809</td><td>29.809</td><td>29.810</td><td>29.809</td><td>29.810</td></tr></table>

Motherboard: NuPRO-965

CPU: Intel Core2 Quad Q6600 @ 2.4GHz

RAM: DDR2\_SDRAM 2GB

OS: Windows XP /SP3

<table><tr><td>Image Format</td><td colspan="8">RGB24, CIF(320*240)</td></tr><tr><td>Card#</td><td colspan="4">Card 0</td><td colspan="4">Card 1</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.810</td><td>29.09</td><td>29.811</td><td>29.809</td><td>29.809</td><td>29.811</td><td>29.807</td><td>29.809</td></tr><tr><td>Card#</td><td colspan="4">Card 2</td><td colspan="4">Card 3</td></tr><tr><td>Port#</td><td>0</td><td>1</td><td>2</td><td>3</td><td>0</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Real-Time</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td><td>√</td></tr><tr><td>Frame Rate</td><td>29.809</td><td>29.808</td><td>29.809</td><td>29.809</td><td>29.806</td><td>29.810</td><td>29.807</td><td>29.810</td></tr></table>

# 2 Hardware Reference

# 2.1 RTV Series

# 2.1.1 PCIe-RTV24 Specifications

![Close-up of a green printed circuit board with various electronic components and connectors (no readable text or symbols)](.rtvseries-50-1r001-1010-203/d8e043871d97356fe55e6c6b4edf8b202285d1ce4a4279e292298b82f7c09968.jpg)

Figure 2-1: PCIe-RTV24 Appearance

# Dimensions

 W x L:167.65 (mm) x 111.15 (mm)

# Operating Environment

 Temperature: 0 to $5 5 ^ { \circ } \mathrm { C }$
 Humidity: 5 to 90% RHNC

# Storage Environment

 Temperature: 0 to $7 0 ^ { \circ } \mathsf { C }$
 Humidity: 0 to 95% RHNC

# Power Requirements

 +12 V max. 0.7A
 +3.3 V max. 0.5A
 Aux +3.3V max. 0.003A

# Video Input

 Four composite video color digitizers
 Video input interface: Four composite BNC connectors
 Coaxial cable suggested

# Channel Extension

 Expandable to up to 16 channels
 Channel extension interface:

 10-pin ribbon cable to on-board 10-pin header connector for channel extension, each header adds 4 video inputs channels
 Three 10-pin header connectors on-board

# General Purpose I/O Lines

 All I/Os are TTL compatible and support 4 inputs, 4 outputs, and 4 soft trigger lines
 GPIO interface:
 Two 10-pin header connectors on-board
 The I/O lines are internally pulled up and have the following characteristics:

<table><tr><td>Voltage</td><td>MIN</td><td>MAX</td></tr><tr><td>Input high voltage (5μA)</td><td>2.0V</td><td>5.25V</td></tr><tr><td>Input low voltage (-5μA)</td><td>0.0V</td><td>0.80V</td></tr><tr><td>Output high voltage (-1.0mA)</td><td>5.0V</td><td>-</td></tr><tr><td>Output low voltage (100.0mA)</td><td>-</td><td>0.5V</td></tr></table>

Table 2-1: GPIO Characteristics

 Watch Dog Timer
 For monitoring applications and will reset the PC after a programmable inactivity time-out.
 Interface: 2-pin header

# 4-channel software trigger output

 4-channels programmable trigger scale (60µs – 16ms)

![Trigger Signal ← 60μs - 16ms →](.rtvseries-50-1r001-1010-203/0b2b0e48e0acd0f53fce5b31039a97a3c92ef83fb7bbbe744653ee939dde61ca.jpg)

Figure 2-2: Trigger Signal Waveform

# User EEPROM

 Includes 1kbit available EEPROM

# RTV-24 Standard Accessories

 Watchdog reset cable
 GPIO bracket
 User Manual
 All in One CD

RTV-24 Connectors & Pin Definitions

<table><tr><td>Connector</td><td>Definition</td></tr><tr><td>&lt;img src="images/d7a88ba569dc3eac5c53405c0e933ba411fac94682da6067df9386882def4a7c.jpg"/&gt;</td><td>Video IN – CH 0</td></tr><tr><td>&lt;img src="images/1ccc3a271349570da5fe53886fac66c4e9b45cf176c06794885d6103557bc5e9.jpg"/&gt;</td><td>Video IN – CH 1</td></tr><tr><td>&lt;img src="images/eb32f71045a2f59955e372aa651e133b4a0fb17aaf7e17611d655ca63707cf47.jpg"/&gt;</td><td>Video IN – CH 2</td></tr><tr><td>&lt;img src="images/eb32f71045a2f59955e372aa651e133b4a0fb17aaf7e17611d655ca63707cf47.jpg"/&gt;</td><td>Video IN – CH 3</td></tr></table>

Table 2-2: RTV Video Inputs

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/d7bd3b7fbc0f98c8e3303f30bf5dccca51164281154fa81c65b9801cadb30950.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH4 video in</td></tr><tr><td>3</td><td>CH5 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH6 video in</td></tr><tr><td>7</td><td>CH7 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-3: Channel Extension Video Input (CN2)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/857fb269421be1a96a39fac93c32bb6cdfc269112b58d1375d564c9adabfb7cc.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH8 video in</td></tr><tr><td>3</td><td>CH9 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH10 video in</td></tr><tr><td>7</td><td>CH11 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-4: Channel Extension Video Input (CN3)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/5336287ce0fcd21e2b4b05aff77095e4f1d58b1d8a1cc38141bd54eefc632706.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH12 video in</td></tr><tr><td>3</td><td>CH13 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH14 video in</td></tr><tr><td>7</td><td>CH15 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-5: Channel Extension Video Input (CN5)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/48bace21ddccd5e03132c89eba0e20089fca9357b117a80354102d961cc093b1.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN0 (External interrupt)</td><td>2</td><td>GND</td></tr><tr><td>3</td><td>OUT0</td><td>4</td><td>Software Trigger 0</td></tr><tr><td>5</td><td>IN1 (External interrupt)</td><td>6</td><td>Software Trigger 1</td></tr><tr><td>7</td><td>OUT1</td><td>8</td><td>+5V</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>--</td></tr></table>

Table 2-6: GPIO (CN8)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/eeb287d50d89dba86d0b5844d76b7f5aaa6a9334915043ca0a0f449a9c73fb21.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN2 (External interrupt)</td><td>2</td><td>GND</td></tr><tr><td>3</td><td>OUT0</td><td>4</td><td>Software Trigger 2</td></tr><tr><td>5</td><td>IN3 (External interrupt)</td><td>6</td><td>Software Trigger 3</td></tr><tr><td>7</td><td>OUT1</td><td>8</td><td>+5V</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>--</td></tr></table>

Table 2-7: GPIO (CN9)

<table><tr><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>System reset</td></tr><tr><td>2</td><td>GND</td></tr></table>

Table 2-8: Watchdog Timer

# 2.1.2 RTV-24 Specifications

# Video Input

 Four composite video color digitizers
 Video input interface: Four composite BNC connectors
 Coaxial cable suggested

# Channel Extension

 Expandable to up to 16 channels
 Channel extension interface:
 10-pin ribbon cable to on-board 10-pin header connector for channel extension, each header adds 4 video inputs channels
 Three 10-pin header connectors on-board

# General Purpose I/O Lines

 All I/Os are TTL compatible and support 4 inputs, 4 outputs, and 4 soft trigger lines
 GPIO interface:
 Two 10-pin header connectors on-board
 The I/O lines are internally pulled up and have the following characteristics:

<table><tr><td>Voltage</td><td>MIN</td><td>MAX</td></tr><tr><td>Input high voltage (5μA)</td><td>2.0V</td><td>5.25V</td></tr><tr><td>Input low voltage (-5μA)</td><td>0.0V</td><td>0.80V</td></tr><tr><td>Output high voltage (-1.0mA)</td><td>5.0V</td><td>-</td></tr><tr><td>Output low voltage (100.0mA)</td><td>-</td><td>0.5V</td></tr></table>

Table 2-9: GPIO Characteristics

 Watch Dog Timer
 For monitoring applications and will reset the PC after a programmable inactivity time-out.
 Interface: 2-pin header

# 4-channel software trigger output

 4-channels programmable trigger scale (60µs – 16ms)

![Trigger Signal ← 60μs - 16ms →](.rtvseries-50-1r001-1010-203/f0640ccaff3188c1d88805e170d14771ab1f1fd0740a5ad84a8206b8ab0b4f27.jpg)

Figure 2-3: Trigger Signal Waveform

# User EEPROM

 Includes 1kbit available EEPROM

# Form Factor

 32-bit, 33MHz PCI half-size board

![Close-up of an Intel 8005 microcontroller board (PCB) with visible traces, connectors, and components (no readable text or symbols beyond branding)](.rtvseries-50-1r001-1010-203/c3f48f7fd3f80cc0ac9b9b9a5f59e51497ab2928561913e11e838d4a2f9bc433.jpg)

Figure 2-4: RTV-24 Appearance

# Dimensions

 W x L: 106.68(mm) x 174.62(mm)

# Operating Environment

 Temperature: 0 to 55°C
 Humidity: 5 to 90% RHNC

# Storage Environment

 Temperature: 0 to $7 0 ^ { \circ } \mathsf { C }$
 Humidity: 0 to 95% RHNC

# Power Requirements

 +5V max. 1.5A
 +3.3 V max. 0.5A

# RTV-24 Standard Accessories

 Watchdog reset cable
 GPIO bracket
 User Manual
 All in One CD

# RTV-24 Connectors & Pin Definitions

<table><tr><td>Connector</td><td>Definition</td></tr><tr><td>&lt;img src="images/3ae2933f5192648627d6af072c7086fb55bdef4c065db864db5645261fa80b00.jpg"/&gt;</td><td>Video IN – CH 0</td></tr><tr><td>&lt;img src="images/3ae2933f5192648627d6af072c7086fb55bdef4c065db864db5645261fa80b00.jpg"/&gt;</td><td>Video IN – CH 1</td></tr><tr><td>&lt;img src="images/a8c3dcea6f56be75afc65d773014d7a0e380b6991724080348688eab10048197.jpg"/&gt;</td><td>Video IN – CH 2</td></tr><tr><td>&lt;img src="images/c27e7320e09e0c2fd97f4d56e52eafa980484ed675b92e6d00b5305ea3e7d571.jpg"/&gt;</td><td>Video IN – CH 3</td></tr></table>

Table 2-10: RTV Video Inputs

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/c79f9a5e66b62cb3ad4d2dee9fa5f1deb7ee7be9586cac69f373781cf8e9e774.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH4 video in</td></tr><tr><td>3</td><td>CH5 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH6 video in</td></tr><tr><td>7</td><td>CH7 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-11: Channel Extension Video Input (CN2)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/4d8711389f421f9ee2803988a8de38a75ec0a73605719d7b2edc3f47e558db32.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH8 video in</td></tr><tr><td>3</td><td>CH9 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH10 video in</td></tr><tr><td>7</td><td>CH11 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-12: Channel Extension Video Input (CN3)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/2f5606866cbf710d21c3d5e1ca27e131f3bf5c3530986f1230852cf8766b5f2a.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH12 video in</td></tr><tr><td>3</td><td>CH13 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH14 video in</td></tr><tr><td>7</td><td>CH15 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-13: Channel Extension Video Input (CN5)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/105aae978f8cf20a62e81cddd5ba983a450e6ac180316bbcccba0e00ca9c7d1e.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN0 (External interrupt)</td><td>2</td><td>GND</td></tr><tr><td>3</td><td>OUT0</td><td>4</td><td>Software Trigger 0</td></tr><tr><td>5</td><td>IN1 (External interrupt)</td><td>6</td><td>Software Trigger 1</td></tr><tr><td>7</td><td>OUT1</td><td>8</td><td>+5V</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>--</td></tr></table>

Table 2-14: GPIO (CN8)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/5375b66b2b795dd6a3489aac80d7c76aee86a6f9a421117e3d486b020333f012.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN2 (External interrupt)</td><td>2</td><td>GND</td></tr><tr><td>3</td><td>OUT0</td><td>4</td><td>Software Trigger 2</td></tr><tr><td>5</td><td>IN3 (External interrupt)</td><td>6</td><td>Software Trigger 3</td></tr><tr><td>7</td><td>OUT1</td><td>8</td><td>+5V</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>--</td></tr></table>

Table 2-15: GPIO (CN9)

<table><tr><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>System reset</td></tr><tr><td>2</td><td>GND</td></tr></table>

Table 2-16: Watchdog Timer

# 2.1.3 RTV-E4 Extension Board (Optional)

![Green PCI expansion card with multiple connectors and a small S1 connector (no visible text or symbols)](.rtvseries-50-1r001-1010-203/4a9bef4f14c888adb7853bb519d8a12768e343edd32d45808d3d45b51979c474.jpg)

Figure 2-5: RTV-E4 Appearance

# RTV-E4 Connectors & Pin Definitions

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/93edd09871ea78ffb6c7cb220a873d7506d27dafb56596de74e77387f6d045d5.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH4 video in</td></tr><tr><td>3</td><td>CH5 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH6 video in</td></tr><tr><td>7</td><td>CH7 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-17: Channel Extension Video Input (CN11)

# 2.1.4 RTV-I4 Isolation GPIO Board (Optional)

![Green PCI expansion card with multiple electronic components and connectors (no visible text or symbols)](.rtvseries-50-1r001-1010-203/44f1ec8927a14ce961c0081352c395409ef794f92fea18a20342e1918edcf3d7.jpg)

Figure 2-6: RTV-I4 Appearance

# RTV-I4 Connectors & Pin Definitions

# Relay output signal select:

 Relay output types: Normal open or Normal closed
 Signal names: RY1, RY2, RY3, RY4
 Jumper addresses J5, J6, J7, J8
 Type select: Normal open: 2-3, Normal close: 1-2

![Normal Open\nNormal Closed\n1 3\n1 3](.rtvseries-50-1r001-1010-203/83f693b5f1bc76ad2d58d26f2887f99615bbe9e5dba9becee6fc00adb346bc00.jpg)

Table 2-18: Relay Jumper Settings

![The image displays four rows of connector diagrams.\n\n*   **Top Row:** Above the diagram are the numbers '1 2 3'. The diagram shows a rectangle with a black vertical bar on the left. Inside, there is a circle under '1' and two circles to its right, aligned under '2' and '3'. The label on the right is 'J6'.\n*   **Second Row:** The diagram is identical (black bar left, three circles). The label is 'J5'.\n*   **Third Row:** The diagram is identical. The label is 'J8'.\n*   **Fourth Row:** The diagram is identical. The label is 'J7'.](.rtvseries-50-1r001-1010-203/c0e7af232b14c54a1f363bd14b9f1b070eaa352dda6ca964e72ad2ab588e3b0d.jpg)
Figure 2-7: Relay Address Jumpers

# Relay I/O voltage requirements

Input:+5V to +24V
Output:AC: 0.5A/125V, DC: 1A/30V or 0.3A/100V

# STRG output signal select:

 STRG output signal types: Active high or Active low
Signal names: STRG\_OUT1, STRG\_OUT2, STRG\_OUT3, STRG\_OUT4
 Jumper addresses: J1, J2, J3, J4
 Trigger output voltage: 0V to +5V
 Type select: Active high =>2-3, Active low =>1-2

<table><tr><td>Active High</td><td>Active Low</td></tr><tr><td></td><td></td></tr><tr><td>1 3</td><td>1 3</td></tr></table>

Table 2-19: STRG Jumper Settings

![The image displays four identical rectangular connector schematics arranged in two columns and two rows.\n\n*   **Top Left:** A rectangle labeled **J1**. Above it are the numbers **1 2 3**.\n*   **Bottom Left:** A rectangle labeled **J2**.\n*   **Top Right:** A rectangle labeled **J3**.\n*   **Bottom Right:** A rectangle labeled **J4**.\n\nEach rectangle represents a connector plug featuring a thick black vertical bar on its left edge. Inside the rectangle, a vertical line divides the interior into two sections. The left section contains a single hollow circle, and the right section contains two hollow circles side-by-side.](.rtvseries-50-1r001-1010-203/5c852b36f6ce019cdc1b3524628c2e6ab621335e922c0dc4b8e4f602557f1dcb.jpg)
Figure 2-8: STRG Address Jumpers

# 2R10P Input Pin Header Definitions

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/19a5928423b226031978dca047a85ef2d09e61c747f85dd35791ccb2909d96bd.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GPIO Input 1</td><td>2</td><td>GND</td></tr><tr><td>3</td><td>GPIO Output 1</td><td>4</td><td>PORT1 STRG Output</td></tr><tr><td>5</td><td>GPIO Input 2</td><td>6</td><td>PORT2 STRG Output</td></tr><tr><td>7</td><td>GPIO Output 2</td><td>8</td><td>VCC</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>--</td></tr></table>

Table 2-20: RTV-I4 GPIO (CN1) &lt;--&gt; RTV-24 GPIO (CN8)

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/1a193e21253bb5a4c1eefeef1c0772ad9e9453a2d6ed7976ab93213dd023b18c.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GPIO Input 3</td><td>2</td><td>GND</td></tr><tr><td>3</td><td>GPIO Output 3</td><td>4</td><td>PORT3 STRG Output</td></tr><tr><td>5</td><td>GPIO Input 4</td><td>6</td><td>PORT4 STRG Output</td></tr><tr><td>7</td><td>GPIO Output 4</td><td>8</td><td>VCC</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>--</td></tr></table>

Table 2-21: RTV-I4 GPIO (CN2) &lt;--&gt; RTV-24 GPIO (CN9)

![Pin 1\nPin 25](.rtvseries-50-1r001-1010-203/b757676aa9aaab10c077c37f5103ce6b714ee73a6b3e25e47511959932b6e0e0.jpg)

<table><tr><td>PIN</td><td>Signal</td><td>PIN</td><td>Signal</td></tr><tr><td>1</td><td>DI1</td><td>14</td><td>RY3_COM</td></tr><tr><td>2</td><td>DI1_COM</td><td>15</td><td>RY4</td></tr><tr><td>3</td><td>DI2</td><td>16</td><td>RY4_COM</td></tr><tr><td>4</td><td>DI2_COM</td><td>17</td><td>STRG_OUT1</td></tr><tr><td>5</td><td>DI3</td><td>18</td><td>STRG_OUT2</td></tr><tr><td>6</td><td>DI3_COM</td><td>19</td><td>STRG_OUT3</td></tr><tr><td>7</td><td>DI4</td><td>20</td><td>STRG_OUT4</td></tr><tr><td>8</td><td>DI4_COM</td><td>21</td><td>STRG_GND</td></tr><tr><td>9</td><td>RY1</td><td>22</td><td>STRG_GNG</td></tr><tr><td>10</td><td>RY1_COM</td><td>23</td><td>NC</td></tr><tr><td>11</td><td>RY2</td><td>24</td><td>NC</td></tr><tr><td>12</td><td>RY2_COM</td><td>25</td><td>NC</td></tr><tr><td>13</td><td>RY3</td><td>26</td><td></td></tr></table>

Table 2-22: D-sub 25-pin Connector

# 2.2 cRTV Series

# 2.2.1 cRTV-24 Specifications

# Video Input

 Four composite video color digitizers
 Video input interface: Four composite BNC connectors
 Channel status report LED
 Coaxial cable recommended

# Channel Extension

 Expandable to up to 8 channels
 Channel extension interface
 10-pin ribbon cable to on-board 10-pin header connector for channel extension, each header adds 4 video inputs channels

# User EEPROM

 Includes 1kbit usable EEPROM

# Form Factor

 32/64bit, 33/66MHz, 3U Compact PCI board

![Close-up of an Intel 800 microcontroller board with multiple integrated circuits and connectors (no readable text or symbols)](.rtvseries-50-1r001-1010-203/2153a23d3199a1c9efb0c43fa65430698c6ec4764bd74cb2e3531e05a7eedd0f.jpg)

Figure 2-9: cRTV-24 Appearance

# Dimensions

 $\mathsf { W } \times \mathsf { L } \colon 1 6 0 ( \mathsf { m m } ) \times 1 0 0 ( \mathsf { m m } )$

# Operating Environment

 Temperature: 0 to $5 5 ^ { \circ } \mathrm { C }$
 Humidity: 5 to 90% RHNC

# Storage Environment

 Temperature: 0 to $70 \textdegree$
 Humidity: 0 to 95% RHNC

# Power Requirements

 +5V max. 1.5A
 +3.3 V max. 0.65A

# cRTV-24 Standard Accessories

 User Manual
 All in One CD

<table><tr><td>Connector</td><td>Definition</td></tr><tr><td>&lt;img src="images/2e88ef42487e2b4c642eb3190609dead81d714cf32514b360e01e65a8893f6e3.jpg"/&gt;</td><td>CH0 (Channel 0 BNC)</td></tr><tr><td>&lt;img src="images/a898b94b2ce4bdf33a80da79bb8fa82274980cd66e539f1528f759b359fb8fa3.jpg"/&gt;</td><td>CH1 (Channel 1 BNC)</td></tr><tr><td>&lt;img src="images/257852049f8d0a3bb7838f80e2ac53e4a58bcfd1ea57610a712220e9dd903daa.jpg"/&gt;</td><td>CH2 (Channel 2 BNC)</td></tr><tr><td>&lt;img src="images/257852049f8d0a3bb7838f80e2ac53e4a58bcfd1ea57610a712220e9dd903daa.jpg"/&gt;</td><td>CH3 (Channel 3 BNC)</td></tr></table>

Table 2-23: cRTV Video Inputs

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/79ed48c290f465892b1d66b8ef72b1b0da185ebfca4e286ce408435952e2e651.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH4 video in</td></tr><tr><td>3</td><td>CH5 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH6 video in</td></tr><tr><td>7</td><td>CH7 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-24: Channel Extension Video Input (CN8)

# 2.2.2 cRTV-44 Specifications

# Video Input

 Four composite video color digitizers
 Video input interface: Four composite BNC connectors
 Channel status report LED
 Coaxial cable recommended

# General Purpose I/O Lines

 All I/O lines are TTL compatible with 4 input, 4 output, and 4 soft trigger lines.
 GPIO interface:
 Two 10-pin header connectors on-board
 The I/O lines are internally pulled up and have the following characteristics:

<table><tr><td>Voltage</td><td>MIN</td><td>MAX</td></tr><tr><td>Input high voltage (20μA)</td><td>2.0V</td><td>5.25V</td></tr><tr><td>Input low voltage (-0.2μA)</td><td>0.0V</td><td>0.80V</td></tr><tr><td>Output high voltage (-1.0mA)</td><td>5.0V</td><td>-</td></tr><tr><td>Output low voltage (100.0mA)</td><td>-</td><td>0.5V</td></tr></table>

Table 2-25: GPIO Characteristics

# Channel Extension

 Expandable to up to 8 channels
 Channel extend interface
 10-pin ribbon cable to on-board 10-pin header connector for channel extension, each header adds 4 video inputs channels.

# User EEPROM

 Includes 1kbit usable EEPROM

# Form Factor

 32/64bit, 33/66MHz, 6U Compact PCI board

![Close-up of an open green printed circuit board with multiple integrated circuits and connectors, no visible text or symbols.](.rtvseries-50-1r001-1010-203/8d072e8f4cccfeefef29963c7115781b1daff0eba5e72c22eecb2d0fbef96244.jpg)

Figure 2-10: cRTV-44 Appearance

# Dimensions

 W x L: 160(mm) x 233.35(mm)

# Operating Environment

 Temperature: 0 to 55°C
 Humidity: 5 to 90% RHNC

# Storage Environment

 Temperature: 0 to $7 0 ^ { \circ } \mathsf { C }$
 Humidity: 0 to 95% RHNC

# Power Requirements

 +5V max. 1.5A
 +3.3 V max. 0.65A

# cRTV-44 Standard Accessories

 User Manual
 All in One CD

<table><tr><td>Connector</td><td>Definition</td></tr><tr><td>&lt;img src="images/bd1bd9f42a83fe215287eea206c343cba1826fcfc28b5174ac703634f88df129.jpg"/&gt;</td><td>CH0 (Channel 0 BNC)</td></tr><tr><td>&lt;img src="images/2e88ef42487e2b4c642eb3190609dead81d714cf32514b360e01e65a8893f6e3.jpg"/&gt;</td><td>CH1 (Channel 1 BNC)</td></tr><tr><td>&lt;img src="images/2e88ef42487e2b4c642eb3190609dead81d714cf32514b360e01e65a8893f6e3.jpg"/&gt;</td><td>CH2 (Channel 2 BNC)</td></tr><tr><td>&lt;img src="images/2e88ef42487e2b4c642eb3190609dead81d714cf32514b360e01e65a8893f6e3.jpg"/&gt;</td><td>CH3 (Channel 3 BNC)</td></tr></table>

Table 2-26: cRTV Video Inputs

![9□ □ □ □ □ 1\n10□ □ □ □ □ 2](.rtvseries-50-1r001-1010-203/2b76d6b1b2b7cf18071938d5e73e2ac44c79e9b857946314887cd965e266bd27.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>2</td><td>CH4 video in</td></tr><tr><td>3</td><td>CH5 video in</td><td>4</td><td>GND</td></tr><tr><td>5</td><td>GND</td><td>6</td><td>CH6 video in</td></tr><tr><td>7</td><td>CH7 video in</td><td>8</td><td>GND</td></tr><tr><td>9</td><td>GND</td><td>10</td><td>GND</td></tr></table>

Table 2-27: Channel Extension Video Input (CN8)

# GPIO 0

 Pins IN0 and OUT0 are used by channel 0
 Pins IN1 and OUT1 are used by channel 1

![1\n5\n6\n9](.rtvseries-50-1r001-1010-203/e15eb3fcc06e903afb947073526e687cf3e33bf735e9bc7755084b6f94045299.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN0 (External interrupt)</td><td>6</td><td>GND</td></tr><tr><td>2</td><td>OUT0</td><td>7</td><td>GND</td></tr><tr><td>3</td><td>IN1 (External interrupt)</td><td>8</td><td>GND</td></tr><tr><td>4</td><td>OUT1</td><td>9</td><td>+5V</td></tr><tr><td>5</td><td>GND</td><td></td><td></td></tr></table>

Table 2-28: GPIO 0 Pinout

# GPIO 1

 Pins IN2 and OUT2 are for channel 2
 Pins IN3 and OUT3 are for channel 3

![1\n5\n6\n9](.rtvseries-50-1r001-1010-203/522181dc1945abd0d80bef42583d12e06231724c507ff68a6563fe057efeb5c6.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN2 (External interrupt)</td><td>6</td><td>GND</td></tr><tr><td>2</td><td>OUT2</td><td>7</td><td>GND</td></tr><tr><td>3</td><td>IN3 (External interrupt)</td><td>8</td><td>GND</td></tr><tr><td>4</td><td>OUT3</td><td>9</td><td>+5V</td></tr><tr><td>5</td><td>GND</td><td></td><td></td></tr></table>

Table 2-29: GPIO 1 Pinout

# 2.3 PMC-RTV Series

# 2.3.1 PMC-RTV21 Specifications

# Video Input

 Four composite video color digitizers
 Video input interface: DB-9 female connectors
 Coaxial cable recommended

# General Purpose I/O Lines

 The I/O lines are TTL compatible with 1 input and 1 output

 GPIO interface:

 One DB-9 male connector
 The I/O lines are internally pulled up and have the following characteristics:

<table><tr><td>Voltage</td><td>MIN</td><td>MAX</td></tr><tr><td>Input high voltage (20μA)</td><td>2.0V</td><td>5.25V</td></tr><tr><td>Input low voltage (-0.2μA)</td><td>0.0V</td><td>0.80V</td></tr><tr><td>Output high voltage (-1.0mA)</td><td>5.0V</td><td>-</td></tr><tr><td>Output low voltage (100.0mA)</td><td>-</td><td>0.5V</td></tr></table>

Table 2-30: GPIO Characteristics

# User EEPROM

 Includes 1kbit available EEPROM

# Form Factor

 32bit/33MHz PMC socket board

![S2\nM2\nBC37\nBC38\nBC39\nBC40\nBC41\nBC42\nBC43\nBC44\nBC45\nBC46\nBC47\nBC48\nBC49\nBC50\nBC51\nBC52\nBC53\nBC54\nBC55\nBC56\nBC57\nBC58\nBC59\nBC60\nBC61\nBC62\nBC63\nBC64\nBC65\nBC66\nBC67\nBC68\nBC69\nBC70\nBC71\nBC72\nBC73\nBC74\nBC75\nBC76\nBC77\nBC78\nBC79\nBC80\nBC81\nBC82\nBC83\nBC84\nBC85\nBC86\nBC87\nBC88\nBC89\nBC90\nBC91\nBC92\nBC93\nBC94\nBC95\nBC96\nBC97\nBC98\nBC99\nB210E8 0012](.rtvseries-50-1r001-1010-203/8273af2fc49ee0eb376336cf6f54dc339b0a73686366b20542811054017e471d.jpg)

Figure 2-11: PMC-RTV21 Appearance

# Dimensions

 $\mathsf { W } \times \mathsf { L } \colon 7 4 ( \mathsf { m m } ) \times 1 4 9 ( \mathsf { m m } )$

# Operating Environment

 Temperature: 0 to $5 5 ^ { \circ } \mathrm { C }$
 Humidity: 5 to 90% RHNC

# Storage Environment

 Temperature: 0 to $70 \textdegree$
 Humidity: 0 to 95% RHNC

# Power Requirements

 +5V max. 0.35A

# PMC-RTV21 Standard Accessories

 User Manual
 All in One CD

# PMC-RTV21 Connectors & Pin Definition

![Video input\n6 9\n1 5\n9 6\n5 1\nGPIO](.rtvseries-50-1r001-1010-203/9d87ff4d8cbd89ee445d5d21fbff289ff3e1a175a56fac7752206257fba881bc.jpg)

Figure 2-12: PMC-RTV21 Video Input & GPIO

![1\n5\n6\n9](.rtvseries-50-1r001-1010-203/bf258731ad79a87819a3f6c0cd33a3a5b28352a2a0f0db9c66cad4d78bb7f5e2.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>6</td><td>CH0 Video In</td></tr><tr><td>2</td><td>CH1 Video In</td><td>7</td><td>GND</td></tr><tr><td>3</td><td>GND</td><td>8</td><td>CH2 Video In</td></tr><tr><td>4</td><td>CH3 Video In</td><td>9</td><td>GND</td></tr><tr><td>5</td><td>--</td><td></td><td></td></tr></table>

Table 2-31: Video Input

![1\n5\n6\n9](.rtvseries-50-1r001-1010-203/52e680d02214a0ac2bb4d5ec835c1e63af4db75b226e2dae8f696fa9c87b4a04.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN0 (External interrupt)</td><td>6</td><td>GND</td></tr><tr><td>2</td><td>OUT0</td><td>7</td><td>GND</td></tr><tr><td>3</td><td>--</td><td>8</td><td>GND</td></tr><tr><td>4</td><td>--</td><td>9</td><td>+5V</td></tr><tr><td>5</td><td>GND</td><td></td><td></td></tr></table>

Table 2-32: GPIO Pinout

# 2.3.2 PMC-RTV24 Specifications

![Green printed circuit board with multiple integrated circuits and connectors (no readable text or symbols)](.rtvseries-50-1r001-1010-203/a07f6b8064dac9d866065353b9c0722a238122934a8385c85f0cd01d8f724901.jpg)

# Dimensions

 $\mathsf { W } \times \mathsf { L } \colon 7 4 ( \mathsf { m m } ) \times 1 4 9 ( \mathsf { m m } )$

# Operating Environment

 Temperature: 0 to $5 5 ^ { \circ } \mathrm { C }$
 Humidity: 5 to 90% RHNC

# Storage Environment

 Temperature: 0 to $7 0 ^ { \circ } \mathsf { C }$
 Humidity: 0 to 95% RHNC

# Power Requirements

 +5V max. 1.5A
 +3.3 V max. 0.5A

# Video Input

 Four composite video color digitizers
 Video input interface: DB-9 female connectors
 Coaxial cable recommended

# General Purpose I/O Lines

 The I/O lines are TTL compatible with 1 input and 1 output
 GPIO interface:
 One DB-15 male connector
 The I/O lines are internally pulled up and have the follow¬ing characteristics:

<table><tr><td>Voltage</td><td>MIN</td><td>PIN</td></tr><tr><td>Input high voltage (20 uA)</td><td>2.0V</td><td>5.25V</td></tr></table>

Table 2-33: GPIO Characteristics

<table><tr><td>Voltage</td><td>MIN</td><td>PIN</td></tr><tr><td>Input low voltage (-0.2 uA)</td><td>0.0V</td><td>0.80V</td></tr><tr><td>Input high voltage (-1.0 mA)</td><td>5.0V</td><td>-</td></tr><tr><td>Output low voltage (100.0 mA)</td><td>-</td><td>0.5V</td></tr></table>

Table 2-34: GPIO Characteristics

# User EEPROM

 Includes 1kbit available EEPROM

# Form Factor

 32bit/33MHz PMC socket board

Figure 2-13: PMC-RTV24 Appearance

# PMC-RTV24 Standard Accessories

 User Manual
 All in One CD

PMC-RTV24 Connectors & Pin Definition
![VIDEO\n5 1\n9 6\nGPIO\n5 1\n15 11](.rtvseries-50-1r001-1010-203/2293ff17b2a65001b65849559b5f2d957f552382c721bc7a4004fb3e99b60bcc.jpg)

Figure 2-14: PMC-RTV24 Video Input & GPIO

![5\n1\n9\n6](.rtvseries-50-1r001-1010-203/695d009af46d0ef50afead8508ea792aab11a737859cd7782663ee1e5aded84d.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>GND</td><td>6</td><td>CH0 Video In</td></tr><tr><td>2</td><td>CH1 Video In</td><td>7</td><td>GND</td></tr><tr><td>3</td><td>GND</td><td>8</td><td>CH2 Video In</td></tr><tr><td>4</td><td>CH3 Video In</td><td>9</td><td>GND</td></tr><tr><td>5</td><td>--</td><td></td><td></td></tr></table>

Table 2-35: Video Input

![5\n1\n15\n11](.rtvseries-50-1r001-1010-203/a9e04e599723b9db6263a5aa072833a48b07df516aca11820a7adbb288a3db0e.jpg)

<table><tr><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td><td>PIN</td><td>Function</td></tr><tr><td>1</td><td>IN0 (External interrupt)</td><td>6</td><td>+5V output(Max.1A)</td><td>11</td><td>OUT0</td></tr><tr><td>2</td><td>IN1 (External interrupt)</td><td>7</td><td>GND</td><td>12</td><td>OUT1</td></tr><tr><td>3</td><td>IN2 (External interrupt)</td><td>8</td><td>GND</td><td>13</td><td>OUT2</td></tr><tr><td>4</td><td>IN3 (External interrupt)</td><td>9</td><td>GND</td><td>14</td><td>OUT3</td></tr><tr><td>5</td><td>GND</td><td>10</td><td>GND</td><td>15</td><td>GND</td></tr></table>

Table 2-36: GPIO Pin-out

# 3 Installation Guide

# 3.1 Hardware Installation

# 3.1.1 RTV Series

Use the following steps to install the RTV series board on the PCI bus:

1. Remove the computer cover using the instructions from the computer manual.
2. Check that there is an empty PCI (32-bit) slot t accommodate the board. If there is not an empty slot, remove a PCI board from the computer to make room for the RTV-24 board and take note of the chosen slot number.
3. Remove the blank metal plate located at the back of the selected slot (if any). Keep the removed screw to fasten the RTV-24 board after installation.
4. Carefully position the RTV-24 in the selected PCI slot as illustrated below. If using a tower computer, orient the board to suit the board slots.

![SCREW\nMETAL\nPLATE\nRTV-24\nPC form factor\n32-BIT PCI BOARD SLOT](.rtvseries-50-1r001-1010-203/9b50f2e2243a7cf940291fb4d8c98765f37fd36dccaf7e736097bbd00565a024.jpg)

Figure 3-1: RTV-24 Installation

5. Once perfectly aligned with an empty slot, press the board firmly but carefully into the connector.

6. Anchor the board by replacing the screw.
7. Connect your video sources for image acquisition tests. For details, refer to the ‘ViewCreator Utility.”
8. Turn on the computer. In some cases, when the computer boots up, the “Plug and Play” feature of Windows will detect the new PCI card 8 times (4 videos and 4 audios) and you will require drivers. For details, see the “Installation Guide.”

# 3.1.2 cRTV Series

Use the following steps to install the cRTV series board onto the Compact PCI bus:

1. Remove the computer cover using the instructions from the computer manual.
2. Check that there is an empty cPCI (32-bit/64-bit) slot to accommodate the board. If is not an empty slot, remove a cPCI board to make room for the cRTV-24 (3U) / cRTV-44 (6U) board and take note of the chosen slot number.
3. Remove the blank metal plate located at the front of the selected slot (if present). Keep the removed screw to fasten the cRTV-24 (3U) / cRTV-44 (6U) board.
4. Carefully position the cRTV-24 or cRTV-44 in the selected cPCI slot as illustrated below.

![32bit 3U cPCI Back Plane\n3U cPCI Board](.rtvseries-50-1r001-1010-203/1084c2f3cd499c37e0b12aeaadb6af502a6af558cf88a376eaac9557d57be46c.jpg)

Figure 3-2: cRTV-24 (3U cPCI)

![32bit 6U cPCI Back Plane\n6U cPCI Board](.rtvseries-50-1r001-1010-203/8eaf0d989495773135513199e8b335e11a94c41066c8218d6f5f92ad33cb98bf.jpg)

Figure 3-3: cRTV-44 (6U cPCI)

5. Carefully slide the cRTV-24 (3U)/cRTV-44 (6U) along the guide of the chosen slot to the backplane and push the board firmly but carefully into the connector, Lock the board in place by pushing the release lever outwards.
6. 6.Anchor the board by replacing the screw.
7. 7.Connect the video sources for image acquisition tests. For details, refer to the ‘ViewCreator Utility.”

8. 8.Turn on the computer. In some cases, when the computer boots up, the “Plug and Play” feature of Windows will detect the new PCI card 8 times (4 videos and 4 audios) and you will require drivers. For details, see the “Installation Guide.”

# 3.1.3 PMC-RTV Series

The PMC socket may be integrated with the cPCI CPU board or as a standalone system board for an embedded system. Use the following steps to install the PMC-RTV series board onto the PMC socket:

1. Remove the computer cover using the instructions from the computer manual.
2. Check that there is an empty PMC (32-bit) socket to accommodate the board. If there is not an empty slot, remove a PMC board from your computer to make room.
3. Carefully position PMC-RTV21 onto the PMC socket.
4. Once perfectly aligned with an empty PMC socket, press the board firmly but carefully into the connector.
5. Connect the video sources for image acquisition tests. For details, refer to the ‘ViewCreator Utility.”
6. Turn on the computer. In some cases, when the computer boots up, the “Plug and Play” feature of Windows will detect the new PCI card 8 times (1 video and 1 audio) and you will require drivers. For details, see the “Installation Guide.”

# 3.1.4 RTV-E4 Extension Board (Optional)

1.For main board installation, please refer to ‘RTV series’.
2.Each RTV-E4 will attach one signal cable for connect with RTV-24 as below

![Green PCI expansion card with multiple connectors and a coiled cable, no visible text or symbols on the card surface.](.rtvseries-50-1r001-1010-203/053288fa0aff00448997efbde11aa081c252fbeacea90157b2f447f378f402b0.jpg)

Figure 3-4: RTV-E4 Attachment

# 3.1.5 RTV-I4 Extension Board (Optional)

1.For main board installation, please refer to ‘RTV series’.
2.Each RTV-I4 will attach one signal cable for connect with RTV-24 as below

![Green PCI board with multiple microprocessor chips and connectors, no visible text or symbols on the circuit itself.](.rtvseries-50-1r001-1010-203/ef25e95d690f9fcde36f2e34d7152809e82e4f8d63a4e5c48d1fd60690d0a983.jpg)

Figure 3-5: RTV-I4 Attachment

# 3.2 Driver Installation

# 3.2.1 WDM Driver Installation

1. Run setup.
2. Click Next until the driver is completely installed.

![Angelo RTV - InstallShield Wizard\nWelcome to the InstallShield Wizard for\nAngelo RTV\nThe InstallShield(R.) Wizard will install Angelo RTV on your\ncomputer. To continue, click Next.\nWARNING: This program is protected by copyright law and\ninternational treaties.\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/288853bd4c608c4f53a5bf64d24be38e7ebedcd5bcc190977e806b28abc22b9e.jpg)

![Angelo RTV - InstallShield Wizard\nDestination Folder\nClick Next to install to this folder, or click Change to install to a different folder.\nInstall Angelo RTV to:\nC:\Program Files\ADLINK\Angelo RTV\\nChange...\nInstallShield\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/8e9c75264a946b3c2d3563cb2c44844e3a10f8d7f1b97b3665e3dd2631aa794f.jpg)

![Angelo RTY - InstallShield Wizard\nReady to Install the Program\nThe wizard is ready to begin installation.\nClick Install to begin the installation.\nIf you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.\nInstallShield\n( Back	Install	Cancel](.rtvseries-50-1r001-1010-203/0a66d12521a45f322462aa96a2569aae1c2d2465fb8012a81949b3e57cd523f6.jpg)

![Angelo RTV - InstallShield Wizard\nInstalling Angelo RTV\nThe program features you selected are being installed.\nPlease wait while the InstallShield Wizard installs Angelo RTV. This may take\nseveral minutes.\nStatus:\nInstallShield\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/02a37bb6a74a15932d4bc86b44c0611acadadb0ab8cfd77e49685f15b448b4f3.jpg)

![Angelo RTV - InstallShield Wizard\nInstallShield Wizard Completed\nThe InstallShield Wizard has successfully installed Angelo RTV.\nClick Finish to exit the wizard.\n( Back	Finish	Cancel](.rtvseries-50-1r001-1010-203/be23c5b802d4a17cbb9f8de38443b59c126abcedbab80b17d6f7bedd44a2c841.jpg)

3. Click yes and restart system.

![Angelo RTV Installer Information\nYou must restart your system for the configuration\nchanges made to Angelo RTV to take effect. Click Yes\nto restart now or No if you plan to restart later.\nYes	No](.rtvseries-50-1r001-1010-203/b7d987e814f90093c0500855a0024d05a2c188a7b3fb394dc76dbe3f793df94c.jpg)

4. Open the Device Manager and check for the following 8 items:

 ADLINK Angelo Audio Device (4 instances)
 ADLINK Angelo Video Device (4 instances)

# The Device Manager should be as follows:

![Device Manager\nFile Action View Help\nADLINK Vision\nADLINK Angelo Audio Device\nADLINK Angelo Audio Device\nADLINK Angelo Audio Device\nADLINK Angelo Audio Device\nADLINK Angelo Video Device\nADLINK Angelo Video Device\nADLINK Angelo Video Device\nADLINK Angelo Video Device\nDisk drives\nDisplay adapters\nDVD/CD-ROM drives\nFloppy disk controllers\nIDE ATA/ATAPI controllers\nKeyboards\nMice and other pointing devices\nMonitors\nNetwork adapters\nPorts (COM & LPT)\nProcessors](.rtvseries-50-1r001-1010-203/ac66d1a58bedaef096b0348a9bfa782f4daf3133b716005eb4851fd144978fb3.jpg)

# Note:

If using Windows Vista, the User Account Control (UAC) needs to be turned off before using the device. To turn off the UAC, go to [Start] - [Settings] - [Control Panel] - [User Accounts] - [Turn User Account Control on or off]. Uncheck the UAC and restart the computer, then the device can work normally.

![Turn on User Account Control (UAC) to make your computer more secure\nUser Account Control (UAC) can help prevent unauthorized changes to your computer. We recommend that\nyou leave UAC turned on to help protect your computer.\nUse User Account Control (UAC) to help protect your computer\nOK Cancel](.rtvseries-50-1r001-1010-203/0935cb0b7366058514b9e6992f81ef9d416fcb4519ea067bbf3f86975d081e3d.jpg)

# 3.2.2 DirectShow Driver Installation

1. Run setup.
2. Click Next until the driver is completely installed.

![AngeloRTVDirectShow - InstallShield Wizard\nWelcome to the InstallShield Wizard for\nAngeloRTVDirectShow\nThe InstallShield(R.) Wizard will install AngeloRTVDirectShow on\nyour computer. To continue, click Next.\nWARNING: This program is protected by copyright law and\ninternational treaties.\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/420d985d6b84f330ffe3cc3ccc9471e58e57b55927d1390217679b3ee7578bd4.jpg)

![AngeloRTVDirectShow - InstallShield Wizard\nDestination Folder\nClick Next to install to this folder, or click Change to install to a different folder.\nInstall AngeloRTVDirectShow to:\nC:\Program Files\ADLINK\AngeloRTVDirectShow\\nChange...\nInstallShield\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/8456bcd54ffdcf5dae5f6de84f452e523d8faa42fd41ee4c99e7de0d1ac89b4b.jpg)

![AngeloRTVDirectShow - InstallShield Wizard\nReady to Install the Program\nThe wizard is ready to begin installation.\nClick Install to begin the installation.\nIf you want to review or change any of your installation settings, click Back. Click Cancel to exit the wizard.\nInstallShield\n( Back	Install	Cancel](.rtvseries-50-1r001-1010-203/dbc45d899e1c2c9b993ae2439e3b28e5addb6d6de142308465eccf4741ad20fb.jpg)

![AngeloRTVDirectShow - InstallShield Wizard\nInstalling AngeloRTVDirectShow\nThe program features you selected are being installed.\nPlease wait while the InstallShield Wizard installs AngeloRTVDirectShow. This may take several minutes.\nStatus:\nInstallShield\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/aaba01004c887bcc826d35d0b6f76bef0a462b6fff34896fa67c91691a1c0107.jpg)

3. When the following window appears, please click “Continue Anyway”.

![Software Installation\nThe software you are installing has not passed Windows Logo testing to verify its compatibility with Windows XP. (Tell me why this testing is important.)\nContinuing your installation of this software may impair or destabilize the correct operation of your system either immediately or in the future. Microsoft strongly recommends that you stop this installation now and contact the software vendor for software that has passed Windows Logo testing.\nContinue Anyway    STOP Installation](.rtvseries-50-1r001-1010-203/dffb27aac03abe0d8c740b7e9ca1bd235208c555ec56a36ba3cc53785535e9b1.jpg)

![AngeloRTVDirectShow - InstallShield Wizard\nInstallShield Wizard Completed\nThe InstallShield Wizard has successfully installed\nAngeloRTVDirectShow. Click Finish to exit the wizard.\n( Back	Finish	Cancel](.rtvseries-50-1r001-1010-203/9febc7819dd57491ca1edd796a2a5f24547f2f9b29898e1bbd4619bfb152d4c8.jpg)

4. Open the Device Manager and check for the following 8 items:

 ADLINK Bt878 DirectX Audio Capture (4 instances)
 ADLINK Bt878 DirectX Video Capture (4 instances)

# The Device Manager should be as follows:

![Device Manager\nFile  Action  View  Help\nDisk drives\nDisplay adapters\nDWD/CD-ROM drives\nFloppy disk controllers\nIDE ATA/ATAPI controllers\nKeyboards\nMice and other pointing devices\nMonitors\nNetwork adapters\nPorts (COM & LPT)\nProcessors\nSound, video and game controllers\nADLINK Bt878 DirectX Audio Capture\nADLINK Bt878 DirectX Audio Capture\nADLINK Bt878 DirectX Audio Capture\nADLINK Bt878 DirectX Audio Capture\nADLINK Bt878 DirectX Video Capture\nADLINK Bt878 DirectX Video Capture\nADLINK Bt878 DirectX Video Capture](.rtvseries-50-1r001-1010-203/cfa9f63edf01d16ac080893384a6c97a5905da745e6edd2377a8aadfe3a504b7.jpg)

# 3.2.3 RTV-LVIEW Installation

1. Double-click the setup.exe file to start RTV-LVIEW installation.

![DISK1\nFile Edit View Favorites Tools Help\nBack Search Folders\nAddress D:\Documents and Settings\adlink\Desktop\RTV-LVIEW\DISK1\nFile and Folder Tasks\nRename this file\nMove this file\nCopy this file\nPublish this file to the Web\nE-mail this file\nDelete this file\nOther Places\nRTV-LVIEW\nMy Documents\nShared Documents\nMy Computer\nMy Network Places\nDetails\n_INST32I\nEX_ File\n313 KB\n_ISDEL\nInstallShield Deleter.\nStirling Technologies, Inc.\n_SETUP\nLIB File\n188 KB\n_SETUP.1\n1 File\n793 KB\n_SETUP.DLL\n3.0.105.0\nSetup Launcher Resource\nDISK1.ID\nID File\n1 KB\nSETUP\nSetup Launcher ( SETUP.EXE)\nInstallShield Corporation, Inc.\nSETUP.\nConfiguration Settings\n1 KB\nSETUP Internet Communication Settings\n69 KB\nSETUP.ISS\nISS File\n1 KB\nSETUP.PKG\nPKG File\n1 KB](.rtvseries-50-1r001-1010-203/a254a0f14fd6159593ae6e4cfe8aa97efa85a675a6e9f061675b7193906ebecd.jpg)

2. Continuously click the Next button to install RTV-LVIEW.

![ADLINK RTV-LVIEW Ver. 1.0.2.2\nWelcome\nWelcome to the RTV-LVIEW Setup program. This program will\ninstall RTV-LVIEW on your computer.\nIt is strongly recommended that you exit all Windows programs\nbefore running this Setup program.\nClick Cancel to quit Setup, and then close any programs you have\nrunning. Click Next to continue with the Setup program.\nWARNING: This program is protected by copyright law and\ninternational treaties.\nUnauthorized reproduction or distribution of this program, or any\nportion of it, may result in review civil and criminal penalties, and\nwill be prosecuted to the maximum extent possible under law.\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/a5fe97aa89d7b034d05336691518d69398066bb4949183e045fee28c3331d9d4.jpg)

![Setup\nADLINK RTV-LVIEW Ver. 1.0.2.2\nSelect Program Folder\nSetup will add program icons to the Program Folder listed below.\nYou may type a new folder name, or select one from the existing\nFolders list. Click Next to continue.\nProgram Folders:\nRTV-LVIEW\nExisting Folders:\nAdministrative Tools\nGames\nNational Instruments\nStartup\n( Back	Next )	Cancel](.rtvseries-50-1r001-1010-203/b5fc2f86a7888a88b74fb2df3628b7e6700a1b2c827cdcccd0418144d6e48ec0.jpg)

3. Click the Finish button to finish the installation.

![Setup\nADLINK RTV-LVIEW Ver. 1.0.2.2\nSetup Complete\nSetup has finished installing the application on your computer.\nYou may launch the application by selecting the icons installed.\nClick Finish to complete Setup.\n( Back	Finish](.rtvseries-50-1r001-1010-203/e18d09bcd9e146e04c495e70ee79e8d938e11561123d0688f0bab2a842a65432.jpg)

# 3.2.4 Uninstall RTV-LVIEW

Open the Control Panel and double-click Add/Remove Programs. Select RTV-LVIEW and click the Change/Remove button to uninstall it.

![Add or Remove Programs\nCurrently installed programs:\nSort by: Name\nAngelo RTV\nSize 24.42MB\nIntel(R) PRO Network Connections 12.2.41.0\nSize 7.42MB\nNational Instruments Software\nSize 1.04MB\nRTV-LVIEW\nSize 1.75MB\nTo change this program or remove it from your computer, click Change/Remove.\nChange/Remove\nWindows Driver Package - ADLINK Technology Inc. (Bt878A) VISION\nWindows Driver Package - ADLINK Technology Inc. (Bt878V) VISION\nClose](.rtvseries-50-1r001-1010-203/c998c4556142a752d7c73e24fdb94b4e86a0beb018f55aeb834ff7ee16d95fd6.jpg)

After un-installation, all files in the directory of RTV-LVIEW will be removed, except the ADLINK\_Vision palette. If you do not want to use it any more, you can remove the Angelo.llb in the user.lib folder and the menus\ADLINK\_Vision folder.

# 3.2.5 Linux Driver Installation

The driver is compiled as a kernel module and works for kernel version 2.6.

# Compile bttv for your system

BTTV is an open source driver and conforms to Video for Linux standard.

1. Open a terminal console and enter the following commands to start installation:
2. Extract the tar ball
3. Change to the driver directory which please sees README under the root directory of the RTV packet.

```txt
# tar zxvf RTV-kernel-2.6.xx.tar.gz
```

```markdown
# cd xxxxx
```

4. Make and install the driver

```txt
# make clean
# make
# make install
```

5. Edit auto load configuration file

```txt
# vi /etc/modprobe.conf
```

6. Add the following lines to the file:

```txt
# i2c
alias char-major-89 i2c-dev
options i2c-corei2c_debug=1
options i2c-algo-bit bit_test=1

# bttv
alias char-major-81 bttv
options bttv card=134,134,134,134
```

In this example, the 134 depends on how many ports the system has. For example, two PCIe-RTV24 cards have 8 ports total. The text will thus be:

```txt
options bttv card=134,134,134,134,134,134,134,134
```

7. Restart the computer. The driver should be loaded automatically while booting. Enter the following command to see if the driver was loaded:

\# lsmod | grep bttv

8. If there is a bttv module, the driver is loaded successfully. If not, enter the command to load manually:

\# modprobe bttv

Note: The linux kernel need at least these config options for Video4Linux:

```txt
CONFIG_I2C=m
CONFIG_I2C_ALGOBIT=m
CONFIG_VIDEO_DEV=m
```

If these config options are not set as module, you need recompile kernel.

# Run a test program

1. Open a terminal console and enter the following commands
2. Change to the sample directory which please sees README under the root directory of the RTV packet.

```txt
# cd xxxxx
# cd libfg-x.x.x
# make clean
# make
# ./camview
```

3. Select the video format and preview channel. You will see a new opened window and show the life image.

The samples are based on Video4 Linux API that the document can found at http://www.linuxtv.org/downloads/video4linux/API/ V4L2\_API/.

# 4 ViewCreatorPro Utility

Once hardware installation is complete, ensure that they are configured correctly before running the ViewCreatorPro utility. This chapter outlines how to establish a vision system and hot to manually controlling Angelo series cards to verify correct operation. ViewCreatorPro provides a simple yet powerful means to setup, configure, test, and debug the vision system.

Note: ViewCreatorPro is only available for Windows /XP/Vista with a recommended screen resolution higher than 800x600.

# 4.1 Overview

ViewCreatorPro offers the following features:

32-bit.64-bit operation under Windows XP/Vista WDM or DirectShow driver
 Angelo series cards access and configuration
 Video picture adjustments
 Image file saving (BMP or JPG)
 Direct access to general purpose I/Os
 FULL, CIF, or QCIF Image size, 2x2 or 4x4 display
 Software triggering

# 4.2 Component Description

Start the utility and the view should like below:

![View CreatorPro\nFile View Video Format Color Format Image Size Tool Help\nDevices\nLocal\nRTV-24_Cast0(DirectShow)\nPort0\nCB1\nCH1\nCH2\nCR2\nCR3\nPort1\nPort2\nPort3\nRTV-24_Cast0(WDM)\nPort0,CH0 p = (332,3) v = 16 rate = .00 fps total :0frames ratio = 1.00, 1.00](.rtvseries-50-1r001-1010-203/cc5b745cc88ccd0c07c6abe945b73279f41148e2499359217522225239a61540.jpg)

# 4.3 Operation Theory

ViewCreatorPro provides many functions for the Angelo RTV series cards as described below:

# 4.3.1 Devices Panel

![Devices\nLocal\nRTV-24_Card0(DirectShow)\nPort0\nCH0\nCH1\nCH2\nCH3](.rtvseries-50-1r001-1010-203/02d3bdf5c889f0061f37228e8b9c620e906bb180a2d12808190c06901d5c63b9.jpg)

![The image displays a small icon of a computer monitor with a light blue or teal screen. On the screen, there is a white square icon representing a document or page with a folded top-right corner. Below the monitor, the text 'eReader' is written in black, sans-serif font.](.rtvseries-50-1r001-1010-203/584eb5d57c1097ffb1175cae754f92f6dc934d2041c65ebbfc97ca1ccb6ac6c2.jpg)

# Local

![The image displays a low-resolution, pixelated graphic resembling the character **Creeper** from the video game Minecraft.\n\n*   **Green Block:** The main body is a green, rectangular block.\n*   **Face:** On the green surface, black squares are arranged to form a face. There are two black squares at the top (resembling eyes), followed by two black squares in the middle row (resembling the sides of a nose or cheeks), and a single black square at the bottom center (resembling a mouth).\n*   **Yellow Stem:** Below the green block is a yellow, rectangular shape that resembles a stem.\n\nThere is no text in the image.](.rtvseries-50-1r001-1010-203/6535fa4729e2f90f79fb31b2a265a5f2a8fe6a36778601217138ae3f2e3fc43f.jpg)

# Current active Device

All operations will apply to this device.

![The image is a low-resolution, pixelated screenshot of a computer interface. It shows a light grey rectangular panel or dialog box. Inside the panel are several dark, indistinct shapes arranged in rows, resembling buttons or icons. A yellow hand-shaped cursor is pointing upwards at the bottom center of the panel. There is no legible text visible in the image.](.rtvseries-50-1r001-1010-203/b438f17939d196f125aab1548b98e9e5ec16028c6399cebfff97bc48845ae922.jpg)

# Inactive Device

Click the port after this icon to activate this device.

![The image displays a small, pixelated green circle centered on a white background. It resembles a coin or button icon, characterized by a lighter green outer ring surrounding a darker, textured green center.](.rtvseries-50-1r001-1010-203/336dd07272e75ef971eea110091da02e45c7b6141540f96b818ecba3c1b63898.jpg)

# Current active port

All operations will apply to this port.

![A small, dark, pixelated circular shape centered on a white background, resembling a low-resolution sphere or button with a checkerboard-like texture.](.rtvseries-50-1r001-1010-203/fe7ebbc07718d85483568b8d809501b2ca57287e4caf7801ef4b8bbc14b8be48.jpg)

# Inactive port

Click the port after this icon to activate this port.

![The image displays a single, green sphere centered on a white background. The sphere features a gradient shading with lighter highlights on the left side and darker tones on the right, giving it a glossy, three-dimensional appearance.](.rtvseries-50-1r001-1010-203/c3395bdb9f599f0b0a53175726abe56778d7c0822f0004588edb83c11306032a.jpg)

# Current active channel

All operations will apply to this channel.

![The image displays a single circular icon centered on a white background. The circle has a gray gradient, appearing lighter in the center and darker at the edges, creating a 3D button effect. Inside the circle, the number '04' is written in a dark, sans-serif font.](.rtvseries-50-1r001-1010-203/935ced3ad16dd69d9fe66b5216e15b1d0b6a6bce425a89af33c1742331bb8e5e.jpg)

# Inactive channel

Click the port after this icon to activate this channel.

![The image features a thick, black 'X' symbol centered on a white background. The lines are slightly pixelated, resembling a close or cancel icon.](.rtvseries-50-1r001-1010-203/1f90984d35bbe81ddddb3ce9772861caa8bafe28072a098de2234fdb1bd163a7.jpg)

# Close this panel

# 4.3.2 Adjustment Panel

A panel allows user adjusting video images. Click and hold the left mouse button on the slider of the Adjustment Panel and drag the cursor to change its value. Or type value into the edit tool to change its value directly.

![Adjustment\nBrightness\nContrast\nHue\nSaturation(U)\nSaturation(V)\nLUMA notch filter\nX offset\nY offset\n128\n124\n0\n127\n90\n0\n0\n0\nDefault](.rtvseries-50-1r001-1010-203/6085d52174f5149102655e8f55181a528754405b92fb8a022f1301a4750f1dbb.jpg)

# Default Button

Press Default Button resetting all values to default value.

![The image displays black graphical elements on a white background. From left to right, there is a partial vertical black bar (cut off on the left edge), followed by a space, then a black 'x' symbol, followed by a space, and finally another black 'x' symbol.](.rtvseries-50-1r001-1010-203/9034795b0ce203f480b1d6ac7377921187957ce8ce4ef593d135ef239884b5b5.jpg)

Close this panel

# 4.3.3 Toolbar

![The image displays a computer icon featuring a white document with a folded upper-right corner. Superimposed over the left side of the document is a silver computer mouse. Inside the document area, there is a small graphic resembling a table or list on the left and three stacked triangles—green, yellow, and red—on the bottom right.](.rtvseries-50-1r001-1010-203/9b11c6a4a4708d6648cfb4f7cccb0b5b0b7ba6fc5b22f12eb5b5a99fcdab3d84.jpg)

Continue Grab

Start to grab images and display the images on display panel. Click it again to stop the grab. This is a toggle button.

![This image features a stylized icon set against a yellow-orange background. It depicts a white, vertical rectangle resembling a document or file. Superimposed over the center of this white shape is a black silhouette of an anchor, with its flukes pointing to the left. At the bottom right corner of the white document shape, there is a small, solid red square.](.rtvseries-50-1r001-1010-203/9b59f124bfcec1dd65597ad8e1f20fd6b48f060264401553686aa280b1bde88e.jpg)

Stop Grab

Stop grabbing.

![This image features a low-resolution computer icon of a gray camera. The camera is rectangular with a large, dark circular lens on the right side and a small flash unit near the top left corner. The icon is set against a light blue gradient background. There is no text visible in the image.](.rtvseries-50-1r001-1010-203/8ac46f9788bc7c9ff4daedbbe4240040fc8488517b11a0fa774ccbd8373f5f59.jpg)

Snap Shot

Capture an image and display the image on display panel.

![The image features a stylized, cartoon-like illustration of a human eye set against a light blue gradient background. The eye is defined by thick black outlines, depicting the upper and lower eyelids, eyelashes, and an eyebrow. The iris is colored blue with a black pupil and a small white highlight. No text is visible in the image.](.rtvseries-50-1r001-1010-203/b2756f9f31d1b95da4d4fb7a203a787bb40d4589eda587a1f87c4c9c75eaf1b9.jpg)

Hind Image

Hide or unhide displaying image. This is a toggle button.

![The image displays a square icon with a blue border. Inside, four blue arrows point outward from the center toward the four corners.](.rtvseries-50-1r001-1010-203/deff7314ec59ef814305cc00ae41b0bf64047a56a812a4293a460185fc61a2ac.jpg)

Fit Size

Fit the images which are selected to whole display panel. The images which are selected will have a blue frame.

# 1:1

# Original Size

Restore the images which are selected to original size. The images which are selected will have a blue frame.

![A magnifying glass icon featuring a white lens with a red rim and a red plus sign in the center. A yellow handle extends diagonally downward from the bottom left. The background is a light blue gradient.](.rtvseries-50-1r001-1010-203/5af6aba26fb14dd08521e52d15cab2838df316b9576edde8d42a679e74536bbc.jpg)

# Zoom In

Zoom in the images which are selected. The images which are selected will have a blue frame.

![The image displays a magnifying glass icon angled diagonally, with a yellow handle extending towards the bottom left. Inside the white circular lens is a single red horizontal line, resembling a minus sign. The background is a light blue gradient.](.rtvseries-50-1r001-1010-203/37643d797073deaa8fcf74df2c3bbc9472e613ad1b6202b1080a10de1d9efbf3.jpg)

# Zoom Out

Zoom in the images which are selected. The images which are selected will have a blue frame.

![This is a line drawing of a graph icon. It features a vertical axis and a horizontal axis meeting at a bottom-left corner. A red line zig-zags upwards from left to right, indicating a positive trend. Double-headed arrows run along the axes (pointing up, down, left, and right). Additionally, there are small diagonal arrows: one at the top-left corner pointing up and to the right, and one at the bottom-left corner pointing down and to the left.](.rtvseries-50-1r001-1010-203/722e3acb3472dad28ca660b80a326745838ba41addb183d927ead29f123a416b.jpg)

# Focus Value

Open a chart to see pixel values of the selected horizontal line of the image which is selected first. The display image shows a red horizontal line on it. Click mouse on the display image to move the selected line.

If it is grabbing image, the background color of focus value window is gray. The chart will update immediately by acquired image and the x-axis region depends on which horizontal pixels shown in display panel. The window is shown below:

![| Pixel | Value |\n|-------|-------|\n| 0     | 0     |\n| 1     | 256   |\n| 3     | 256   |\n| 4     | 0     |\n| 5     | 256   |](.rtvseries-50-1r001-1010-203/67244bd322480882cc3cdfc276a9cafcd1df66727b73f330afe5c6d701de5529.jpg)

After stopping grabbing, the background color of focus value window is black. The x-axis size is the width of the whole image. The window is shown below:

![| Pixel | Value |\n|-------|-------|\n| 0     | 192   |\n| 1     | 256   |\n| 2     | 192   |\n| 3     | 256   |\n| 4     | 192   |\n| 5     | 256   |\n| 6     | 192   |\n| 7     | 256   |\n| 8     | 192   |\n| 9     | 256   |\n| 10    | 192   |\n| 11    | 256   |\n| 12    | 192   |\n| 13    | 256   |\n| 14    | 192   |\n| 15    | 256   |\n| 16    | 192   |\n| 17    | 256   |\n| 18    | 192   |\n| 19    | 256   |\n| 20    | 192   |\n| 21    | 256   |\n| 22    | 192   |\n| 23    | 256   |\n| 24    | 192   |\n| 25    | 256   |\n| 26    | 192   |\n| 27    | 256   |\n| 28    | 192   |\n| 29    | 256   |\n| 30    | 192   |\n| 31    | 256   |\n| 32    | 192   |\n| 33    | 256   |\n| 34    | 192   |\n| 35    | 256   |\n| 36    | 192   |\n| 37    | 256   |\n| 38    | 192   |\n| 39    | 256   |\n| 40    | 192   |\n| 41    | 256   |\n| 42    | 192   |\n| 43    | 256   |\n| 44    | 192   |\n| 45    | 256   |\n| 46    | 192   |\n| 47    | 256   |\n| 48    | 192   |\n| 49    | 256   |\n| 50    | 192   |\n| 51    | 256   |\n| 52    | 192   |\n| 53    | 256   |\n| 54    | 192   |\n| 55    | 256   |\n| 56    | 192   |\n| 57    | 256   |\n| 58    | 192   |\n| 59    | 256   |\n| 60    | 192   |\n| 61    | 256   |\n| 62    | 192   |\n| 63    | 256   |\n| 64    | 192   |\n| 65    | 256   |\n| 66    | 192   |\n| 67    | 256   |\n| 68    | 192   |\n| 69    | 256   |\n| 70    | 192   |\n| 71    | 256   |\n| 72    | 192   |\n| 73    | 256   |\n| 74    | 192   |\n| 75    | 256   |\n| 76    | 192   |\n| 77    | 256   |\n| 78    | 192   |\n| 79    | 256   |\n| 80    | 192   |\n| 81    | 256   |\n| 82    | 192   |\n| 83    | 256   |\n| 84    | 192   |\n| 85    | 256   |\n| 86    | 192   |\n| 87    | 256   |\n| 88    | 192   |\n| 89    | 256   |\n| 90    | 192   |\n| 91    | 256   |\n| 92    | 192   |\n| 93    | 256   |\n| 94    | 192   |\n| 95    | 256   |\n| 96    | 192   |\n| 97    | 256   |\n| 98    | 192   |\n| 99    | 256   |\n|100* (labeled) | (labeled) |](.rtvseries-50-1r001-1010-203/f659c8f91abc5717ce7d90fe53dc59a6c8d875a78344459b6a99f23d011ab9db.jpg)

If the image is chromatic and is RGB type, there are three curves represented red, green, and blue individual in the chart. The window is shown below:

![| Pixel | Blue Line | Green Line | Red Line |\n|-------|-----------|------------|----------|\n| 0     | 192       | 64         | 32       |\n| 319   | 256       | 160        | 96       |](.rtvseries-50-1r001-1010-203/3ef5bd17eb0bca36f6578d62f908383c4e71c965c1c999d6f0f2a26980deed37.jpg)

If the image is chromatic and is YUV type, there are three curves represented y, u, and v individual in the chart. The window is shown below:

![| Pixel | Value (Line 1) | Value (Line 2) | Value (Line 3) |\n|-------|----------------|----------------|----------------|\n| 0     | 192            | 96             | 128            |\n| 319   | 192            | 96             | 128            |](.rtvseries-50-1r001-1010-203/1ee9a605bea3f23e5dd8e3c48f9704b852e1ebf073555b610224bf1405d163aa.jpg)

![The image shows a 'zoom in' icon consisting of a magnifying glass with a red plus sign inside the lens and a yellow handle. It is superimposed over a blue L-shaped line representing graph axes in the bottom left corner.](.rtvseries-50-1r001-1010-203/1d61a16af0dddb783ede8424ae6c29dcfcde6a9fb490402a1ac8878daf555de8.jpg)

# Zoom In

Open a window to zoom in the green rectangle region.

![The image is a line graph icon featuring a red zigzag line trending upward. It is set against a light blue gradient background that is darker at the top left. The graph consists of a vertical axis with an arrow pointing up and a horizontal axis with an arrow pointing right.](.rtvseries-50-1r001-1010-203/7f593a1ec5dad6b7a8f31a7b3b689100e7ff3e90c083c4547e6350b1347254ce.jpg)

# Differential

Open a window to show the slop of the line for the green rectangle region.

Drag the vertical green line to resize the green rectangle.

![The image features a red plastic object, resembling a nozzle or connector, positioned diagonally against a gradient background that transitions from light blue to white. A large red capital letter 'R' is located in the upper left corner.](.rtvseries-50-1r001-1010-203/1c38caca5fba2374745c6679107eab77d3d4785c36847137ba37ac8d30dcc7bc.jpg)

# Show/Hide Red Values

Show or hide the red value of the pixels.

![The image features a large, green capital letter 'G' in the upper left corner set against a light blue gradient background. Below the letter is a 3D rendering of a bright green, cylindrical object angled diagonally from the bottom left to the top right. The object resembles a capsule or cartridge with horizontal ridges along its body and a small black square detail near the top end. The rightmost end of the object transitions into a metallic, silver-colored connector with black accents.](.rtvseries-50-1r001-1010-203/1af0e05d254258f4582ae3c4763e838a2283dd471522af77cb901e5c0a697118.jpg)

# Show/Hide Green Values

Show or hide the green value of the pixels.

![The image displays a capital letter 'B' in blue located in the upper left corner. Below and to the right of the letter is a blue, cylindrical object resembling a connector or plug, oriented diagonally with its metallic tip pointing toward the bottom left. The background is a light blue gradient.](.rtvseries-50-1r001-1010-203/af4da2e8ad11aef4904c3f7a70076dac65b426d2d3e8319bc3ed8fbcf5ab37e5.jpg)

# Show/Hide Blue Values

Show or hide the blue value of the pixels.

![The image displays two angled views of a metallic mechanical component, appearing to be a pneumatic cylinder, set against a light blue background. Each unit features a rectangular body with mounting holes and a cylindrical rod extending from the left side. A large, grey capital letter 'Y' floats above each component.](.rtvseries-50-1r001-1010-203/e0a164e4383d17b49600da3c92a4b90f67bba8828984f3c9856c13eee171b425.jpg)

# Show/Hide Y Values

Show or hide the y value of the pixels.

![The image displays a teal-colored electrical connector or plug positioned diagonally against a light blue gradient background. In the upper left corner, there is a capital letter 'U'.](.rtvseries-50-1r001-1010-203/ae3e015ed20fa8146f4ea8a0fd4459f952209406e39736bf58a5e1eae4a309a9.jpg)

# Show/Hide U Values

Show or hide the u value of the pixels.

![The image shows a yellow mechanical component, resembling a linear slide bearing or bushing, positioned diagonally from the bottom left to the top right against a light blue background. Above the object is a large, yellow capital letter 'V'.](.rtvseries-50-1r001-1010-203/45433b4b7f33d6f2122d90aa23077ae9138e570c5afcc7acd0c5292825d8c03d.jpg)

# Show/Hide V Values

Show or hide the v value of the pixels.

![The image displays a blue line-art icon on a white background. It features a square outline. Inside the square, there is a central circle with four arrows radiating outward in the cardinal directions (up, down, left, and right). Outside the square, there are three arrows indicating expansion: one in the top-left corner pointing diagonally up and to the left, one in the top-right corner pointing horizontally to the right, and one in the bottom-right corner pointing horizontally to the right.](.rtvseries-50-1r001-1010-203/b188520c3a9e85a3bf52d5971b78ebed0836de6cc08a862870c42a009bb2d209.jpg)

# Focus Cross

See pixel values of the selected point of the image on toolbar. The display image shows a blue cross line on it. Click mouse on the display image to move the selected point.

# 4.3.4 Status Bar

<table><tr><td>Port0,CH0</td><td>p = (332,3)</td><td>v = 16</td><td>rate = .00 fps</td><td>total : 0frames</td><td>ratio = 1.00, 1.00</td></tr></table>

From left to right, the panel items are status host, cursor position, pixel value, frame rate, total captured frames, and magnification (horizontal ratio, vertical ratio).

# 4.3.5 Display Panel

Press left mouse button on the image and then there will be a blue frame around the image. It means the image is selected. If user wants select more images, please keep pressing Ctrl and click the other images. Like the picture below, the up-left channel and down-right channel are selected. Then user can adjust these images’ size by “Fit Size”, “Original Size”, “Zoom In”, and “Zoom out” button.

![This image displays a 2x2 grid of four digital windows, each framed by a blue border with navigation arrows and scrollbars.\n\n*   **Top Left:** A horizontal gradient transitioning from black on the left to white on the right.\n*   **Top Right:** A black background featuring a large grey semicircle in the bottom right corner.\n*   **Bottom Left:** A child with brown hair, wearing a striped shirt with a floral pattern, raising both arms against a blurred, beige background. Another head is partially visible at the very bottom edge.\n*   **Bottom Right:** A technical test chart containing a central circle with radiating lines. It displays numbers including '6 7 8 9', '-6 -7 -8 -9', '5- 4- 3- 2-', and '5 4 3 2'. To the right, there is a vertical scale numbered '1 - 2 - 3 - 4 - 5', a black square, and a striped rectangle.](.rtvseries-50-1r001-1010-203/ec96a3bc4b2b6369e4a8c702ec24bf2f9455babe84792c902a02c02c0e15152f.jpg)

Press left mouse button and then drag it, display panel will appear a green rectangle region which will be zoomed in. Keep pressing Shift during dragging, the image will be zoomed in at the same proportion of width and height. Shown below:

![Abstract grayscale gradient background with a green rectangular selection box and arrow, no text or symbols present.](.rtvseries-50-1r001-1010-203/5bfebbc343af9c9546815ff326f4a78cba67bad19924819668937d7af4509c0b.jpg)

Press right mouse button, the cursor will become a move2D icon. Then user can drag the image. Shown below:

![Pure gradient background with no text, numbers, or symbols](.rtvseries-50-1r001-1010-203/6eebbc7ddf4a3d6f9573fa358e1788a4255f0bb2c0b36eb31b133435053447ee.jpg)

# 4.3.6 Main Menu

# File menu

 Open Image
Open an image from a file and display it to the display panel.
 Save Image
Save current displaying image to a bitmap file.
 Exit
Terminate ViewCreatorPro.

# View menu

 Devices
Hide or unhide Devices panel.
 Adjustment
Hide or unhide Adjustment panel.
 ChannelExtensionEnable
Determine if let user select channel node.

# Video Format menu

 NTSC
Set the channels showed on display panel to NTSC format.
 PAL
Set the channels showed on display panel to PAL format.

# Color Format menu

Set the channels showed on display panel to gray format.
 RGB32
Set the channels showed on display panel to rgb32 format.
 RGB24
Set the channels showed on display panel to rgb24 format.
 RGB16
Set the channels showed on display panel to rgb16 format.
 RGB15
Set the channels showed on display panel to rgb15 format.
 YUV
Set the channels showed on display panel to yuv format.

# Image Size menu

#  Full Image

Set buffer sizes of the channels showed on display panel to full image size.

#  Cif Image

Set buffer sizes the channels showed on display panel to cif image size.

#  Qcif Image

Set buffer sizes the channels showed on display panel to qcif image size.

# Tool menu

#

Click Tool in the menu bar and select GPIO item to bring up the GPIO dialog box. Select the card and port to access and select the digital output value. Click the write or read button to write/read to/from the digital I/O ports.

![GPIO\nCard Index: TreeNode: RTV-24_Card0(WDM)\nPort: 0\nDI/DO\nDigital Output: 0\nWrite\nDigital Input: 1\nRead](.rtvseries-50-1r001-1010-203/7d9acc2d2c06334ce1fc2bd9165a759572b8ae46e20293d0d76e465eacd4fb2c.jpg)

#  EEPROM

Click Tool in the menu bar and select EEPROM to bring up the EEPROM dialog box. Select the card you wish to access, enter the offset and output values, and then click the Write button to write the value into the EEPROM. Enter the offset value and click the Read button to read the value from the EEPROM. Valid offset values are between 0-127. Valid output values are 0-255. The value in the EEPROM will not be erased when the system is powered off.

![EEPROM\nCard Index: TreeNode: RTV-24_Card0(WDM)\nOffset(Dec) Value(Dec)\n0~127 0~255\n0 0 Write\n0 1 Read](.rtvseries-50-1r001-1010-203/77e20e13421ea629ec8bfc92d84d3a2ed7025c9eec4560a441ebd16a18d1f4e4.jpg)

#  Software Trigger

Click Tool in the menu bar and select Software Trigger to bring up the Trigger dialog box. Select the card to access and set the interval of the trigger pulse output. Check the ports you want to trigger simultaneously, and click the Trigger button. The one shot pulse output voltage goes high (from 0V to 5V).

![Software Trigger\nCard Index: TreeNode: RTV-24_Card0(WDM)\nInterval: 16 ms\nApply to\nPort 0 Port 1\nPort 2 Port 3\nTrigger](.rtvseries-50-1r001-1010-203/563eda6de9f3670a9a15076b8c0541d3d9f9bae715c67655769f33a1bfb3568d.jpg)

# Help menu

#  About

Click Help in the menu bar and select About ViewCreator-Pro to bring up the About ViewCreatorPro box. This window will show ViewCreatorPro version.

![About ViewCreatorPro\nViewCreatorPro 1.0.0.0\nCopyright (C) 2009\nOK](.rtvseries-50-1r001-1010-203/655dd7013d4e6fff2a98526e228ba731e5fa68bae57b8b09d88b1889cb28bf68.jpg)

#  AboutDevice

Click Help in the menu bar and select About Device to bring up the About Device box. This window will show the driver version and dll version.

![AboutDevice\nBt878.sys : 1.2.0.1\nAngeloRTV.dll : 1.5.3.0\nOK](.rtvseries-50-1r001-1010-203/be664e2dccf972c1b3f3770b7b0a27bfd7f498901428ce0a8acdee3b963fd0ef.jpg)

# 5 Function Library

This chapter describes the API for Angelo RTV series cards. Users can use these functions to develop application programs under Visual C++, Visual Basic, C++ Builder, C#, Visual Basic .Net, and Delphi.

# 5.1 List of Functions

<table><tr><td>Category</td><td>Section</td><td>Function</td></tr><tr><td rowspan="5">System</td><td rowspan="5">5.3</td><td>AngeloRTV_Initial (PortNo)</td></tr><tr><td>AngeloRTV_Close (PortNo)</td></tr><tr><td>AngeloRTV_Software_Reset (PortNo)</td></tr><tr><td>AngeloRTV_Read_Serial (CardNo, HighByte, LowByte)</td></tr><tr><td>AngeloRTV_Get_Version (DriverVersion, DLLVersion, Reserved)</td></tr><tr><td rowspan="8">Configuration</td><td rowspan="8">5.4</td><td>AngeloRTV_Set_Image_Config (PortNo, ConfigIndex, Value)</td></tr><tr><td>AngeloRTV_Get_Image_Config (PortNo, ConfigIndex, Value)</td></tr><tr><td>AngeloRTV_Set_Color_Format (PortNo, ColorFormat)</td></tr><tr><td>AngeloRTV_Get_Color_Format (PortNo, ColorFormat)</td></tr><tr><td>AngeloRTV_Set_Video_Format (PortNo, Value)</td></tr><tr><td>AngeloRTV_Get_Video_Format (PortNo, Value)</td></tr><tr><td>AngeloRTV_Set_Image_Geometric (PortNo, X_Offset, Y_Offset, X_Active, Y_Active, X_Scale, Y_Scale)</td></tr><tr><td>AngeloRTV_Detect_Video_Format (PortNo, FormatValue)</td></tr><tr><td rowspan="5">Image Grabbing</td><td rowspan="5">5.5</td><td>AngeloRTV_Capture_Start (PortNo, CaptureNo)</td></tr><tr><td>AngeloRTV_Select_Channel (PortNo, Multiplex)</td></tr><tr><td>AngeloRTV_Capture_Stop (PortNo)</td></tr><tr><td>AngeloRTV_Capture_Config (PortNo, Start_Field)</td></tr><tr><td>AngeloRTV_Sync_Grab (PortNo, Start_Address, Width, Height, Size_Byte)</td></tr><tr><td rowspan="6">GPIO &amp; EPROM</td><td rowspan="6">5.6</td><td>AngeloRTV_Set_GPIO_Sts (PortNo, Status)</td></tr><tr><td>AngeloRTV_Get_GPIO_Sts (PortNo, Status)</td></tr><tr><td>AngeloRTV_Set_GPIO_Int_Logic (PortNo, Logic)</td></tr><tr><td>AngeloRTV_Write_EEPROM (PortNo, Offset, Value)</td></tr><tr><td>AngeloRTV_Read_EEPROM (PortNo, Offset, Value)</td></tr><tr><td>AngeloRTV_Set_LED_Sts (PortNo, LEDStatus)</td></tr><tr><td rowspan="3">Callback &amp; Thread</td><td rowspan="3">5.7</td><td>AngeloRTV_Set_Int_Event (PortNo, hEvent)</td></tr><tr><td>AngeloRTV_Set_Callback (PortNo, CallBackProc)</td></tr><tr><td>AngeloRTV_Get_Int_Status (PortNo, IntStatus)</td></tr><tr><td rowspan="2">Software Trigger</td><td rowspan="2">5.8</td><td>AngeloRTV_Trigger_Config (PortNo, Interval)</td></tr><tr><td>AngeloRTV_Trigger_Start (CardNo, Multiplex)</td></tr><tr><td rowspan="3">Frame Buffer</td><td rowspan="3">5.9</td><td>AngeloRTV_Get_frame (PortNo, Start_Address, Width, Height, Size_Byte)</td></tr><tr><td>AngeloRTV_Save_File (PortNo, FileName, FileFormat, nQuality)</td></tr><tr><td>AngeloRTV_Copy_frame (PortNo, Dest_Address, Size_Byte)</td></tr></table>

Table 5-1: List of Functions

# 5.2 C/C++ Programming Library

Function prototypes and common data types are defined in Angelo.h. The Angelo series library uses these data types. We suggest that these data types be used in your application programs. The following table shows the data types and their range:

<table><tr><td>Type Name</td><td>Description</td><td>Range</td></tr><tr><td>U8</td><td>8-bit ASCII character</td><td>0 to 255</td></tr><tr><td>I16</td><td>16-bit integer</td><td>-32768 to 32767</td></tr><tr><td>U16</td><td>16-bit unsigned integer</td><td>0 to 65535</td></tr><tr><td>I32</td><td>32-bit long integer</td><td>-2147483648 to 2147483647</td></tr><tr><td>U32</td><td>32-bit unsigned long integer</td><td>0 to 4294967295</td></tr><tr><td>F32</td><td>32-bit float</td><td>-3.402823E38 to 3.402823E38</td></tr><tr><td>F64</td><td>64-bit double float</td><td>-1.797683134862315E308 to 1.797683134862315E309</td></tr><tr><td>Boolean</td><td>Boolean logic</td><td>TRUE, FALSE</td></tr></table>

Table 5-2: C/C++ Data Types

# 5.3 System Functions

# @ Name

AngeloRTV\_Initial(PortNo)

Initialize the port in Angelo series card.

AngeloRTV\_Close(PortNo)

Close the port in Angelo series card.

AngeloRTV\_Software\_Reset(PortNo)

Reset the port in Angelo series card.

AngeloRTV\_Read\_Serial(CardNo, HighByte, LowByte)

Read the unique 48-Bit Serial Number of Angelo Series Card (Only for RTV-24 Rev.B1 above, PCI-2100 Rev.A2 above)

AngeloRTV\_Get\_Version(DriverVersion, DLLVersion, Reserved) Get the version of driver of AngeloRTV card and AngeloRTV.dll.

# @ Description

AngeloRTV\_Initial:

This function initializes the ports of the Angelo Series card. Each application program must call this function before any other functions can be used. If the initialization is executed successfully, it returns a value of 0.

Note: There are four ports on the RTV-24, cRTV-24, and cRTV-44 series cards, and one port on the PMC- RTV21.

AngeloRTV\_Close:

Releases all resources from the ports.

AngeloRTV\_Software\_Reset:

Resets the port to its initial state.

AngeloRTV\_Read\_Serial:

This function can read a 48-bit unique ID and store in 2 Long interger.

AngeloRTV\_Get\_Version:

Used to get the current version of AngeloRTV card driver and AngeloRTV.dll file.

# @ Syntax

C/C++ (Windows/CE.NET)

I16 AngeloRTV\_Initial(U16 PortNo)

```txt
I16 AngeloRTV_Close(U16 PortNo)
I16 AngeloRTV_Software_Reset(U16 PortNo)
U16 AngeloRTV_Read_Serial(U16 CardNo, U32* HighByte, U32* LowByte);
I16 AngeloRTV_Get_Version(U32 *DriverVersion, U32 *DLLVersion, U32 *Reserved)
```
Visual Basic (Windows/CE.NET)

```csv
AngeloRTV_Initial (ByVal PortNo As Integer) As Integer
AngeloRTV_Close(ByVal PortNo As Integer) As Integer
AngeloRTV_Software_Reset (ByVal PortNo As Integer) As Integer
AngeloRTV_Read_Serial(Byval CardNo as Integer, ByRef HighByte As Long, ByRef LowByte As Long) As Integer
AngeloRTV_Get_Version (ByRef DriverVersion As Long, ByRef DLLVersion As Long, ByRef Reserved As Long) As Integer
```

Delphi (Windows)
```txt
AngeloRTV_Initial(PortNo:Smallint):Smallint
AngeloRTV_Close(PortNo:Smallint):Smallint
AngeloRTV_Software_Reset
(PortNo:Smallint):Smallint
AngeloRTV_Read_Serial(CardNo:SmallInt; Var
HighByte: Longint; Var
LowBytet:Longint):Smallint;
AngeloRTV_Get_Version (var DriverVersion:Longint;
var DLLVersion:Longint; var
Reserved:Longint):Smallint
```

# @ Arguments

# PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two RTV-24 Angelo cards (card 0, card 1) in the system, and each RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

# HighByte:

HighByte stores the upper 16Bit of Serial No..

# LowByte:

LowByte stores the lower 32Bit of Serial No.

# DriverVersion:

Indicate the current version of AngeloRTV driver. This parameter is a pointer to an integer array with length 4.

# DLLVersion:

Indicate the current version of AngeloRTV.dll file. This parameter is a pointer to an integer array with length 4.

# @ Return Code

 0: ERROR\_NoError
 -2: ERROR\_Card\_Not\_Exist – make sure the Angelo series card is plugged into the system, check the device manager to make sure the device is loaded, and the “PortNo” parameter is valid.
 -3: ERROR\_Card\_Not\_Accessible – make sure the Angelo series card is plugged into the system, check the device manager to make sure the device is loaded, and the “PortNo” parameter is valid.
 -12: ERROR\_CPLD\_Check\_Failed – Power off the computer and power on again.

@ Example
```txt
&lt;VC/BCB&gt;
AngeloRTV_Initial –
    I16 Result;
    for (int PortNo = 0 ; PortNo &lt;4;PortNo++)
    Result = AngeloRTV_Initial (PortNo);
AngeloRTV_Cose –
    I16 Result;
    for (int PortNo = 0 ; PortNo &lt;4;PortNo++)
    Result = AngeloRTV_Cose (PortNo);
AngeloRTV_Software_Reset–
    I16 Result;
    for (int PortNo = 0 ; PortNo &lt;4;PortNo++)
    Result = AngeloRTV_Software_Reset (PortNo);
AngeloRTV_Read_Serial–
    int Result;
    int CardNo = 0;
    unsigned long HighByte = 0, LowByte = 0;
    Result = AngeloRTV_Read_Serial(CardNo, &HighByte, &LowByte);
AngeloRTV_Get_Version –
```

```c
I16 Result;
U32 DriverVersion[4] = {0}, DLLVersion[4] = {0},
Reserved[4] = {0};
char strDriverVersion[20], strDLLVersion[20];
Result = AngeloRTV_Get_Version (DriverVersion,
DLLVersion, Reserved);
sprintf(strDriverVersion, "%d.%d.%d.%d",
DriverVersion[0], DriverVersion[1],
DriverVersion[2], DriverVersion[3]);
sprintf(strDLLVersion, "%d.%d.%d.%d",
DLLVersion[0], DLLVersion[1],
DLLVersion[2], DLLVersion[3]);
```
&lt; Visual Basic &gt;

```txt
AngeloRTV_Initial –
Dim Result As Integer
Dim PortNo As Integer
For PortNo = 0 To 3
Result = AngeloRTV_Initial (ByVal PortNo)
```
AngeloRTV\_Cose – Dim Result As Integer Dim PortNo As Integer For PortNo= 0 To 3 Result = AngeloRTV\_Close (ByVal PortNo)

```txt
AngeloRTV_Read_Serial-
Dim Result As Integer
Dim CardNo As Integer
Dim HighByte As Long, LowByte As Long
CardNo=0
HighByte=0
LowByte=0
Result = AngeloRTV_Read_Serial(CardNo, HighByte, LowByte)
```
AngeloRTV\_Software\_Reset–

```txt
Dim Result As Integer
Dim PortNo As Integer
For PortNo= 0 To 3
Result = AngeloRTV_Software_Reset (ByVal PortNo)
```
AngeloRTV\_Get\_Version –

```txt
Dim Result As Integer
Dim DriverVersion(3) As Long, DLLVersion(3) As Long, Reserved(3) As Long
Dim strDriverVersion, strDLLVersion As String
```

```txt
Result = AngeloRTV_Get_Version (DriverVersion(0), DLLVersion(0), Reserved(0))
strDriverVersion = CStr(DriverVersion(0)) + "." +
    CStr(DriverVersion(1)) + "." +
    CStr(DriverVersion(2)) + "." +
    CStr(DriverVersion(3))
strDLLVersion = CStr(DLLVersion(0)) + "." +
    CStr(DLLVersion(1)) + "." +
    CStr(DLLVersion(2)) + "." +
    CStr(DLLVersion(3))
```

&lt;Delphi &gt;
```vhdl
AngeloRTV_Initial –
var PortNo, Result: SmallInt;
for i := 0 to 3 do
begin
Result := AngeloRTV_Initial (PortNo);
End;
```
AngeloRTV\_Cose – var PortNo,Result:SmallInt; for i:= 0 to 3 do begin Result := AngeloRTV\_Close (PortNo); End;

```vhdl
AngeloRTV_Software_Reset-
var PortNo, Result: SmallInt;
for i := 0 to 3 do
begin
Result := AngeloRTV_Software_Reset (PortNo);
End;
```
AngeloRTV\_Read\_Serial–

```txt
var
CardNo, Result: SmallInt;
HighByte, LowByte: SmallInt;
Result := AngeloRTV_Read_Serial(CardNo, HighByte, LowByte)
```
AngeloRTV\_Get\_Version – var Result: Smallint; DriverVersion: array[1..4] of Longint; DLLVersion: array[1..4] of Longint; Reserved: array[1..4] of Longint; strDriverVersion, strDLLVersion: String;

```txt
Result := AngeloRTV_Get_Version
(DriverVersion[1], DLLVersion[1], Reserved[1]);
strDriverVersion := IntToStr(DriverVersion[1]);
strDriverVersion := strDriverVersion + '.' + IntToStr(DriverVersion[2]);
strDriverVersion := strDriverVersion + '.' + IntToStr(DriverVersion[3]);
strDriverVersion := strDriverVersion + '.' + IntToStr(DriverVersion[4]);
strDLLVersion := IntToStr(DLLVersion[1]);
strDLLVersion := strDLLVersion + '.' + IntToStr(DLLVersion[2]);
strDLLVersion := strDLLVersion + '.' + IntToStr(DLLVersion[3]);
strDLLVersion := strDLLVersion + '.' + IntToStr(DLLVersion[4]);
```

# 5.4 Configuration Functions

# @ Name

AngeloRTV\_Set\_Image\_Config(PortNo, ConfigIndex ,Value) Set the video adjustments.

AngeloRTV\_Get\_Image\_Config(PortNo, ConfigIndex, Value) Get the video adjustments.

AngeloRTV\_Set\_Color\_Format(PortNo, ColorFormat) Set the color format.

AngeloRTV\_Get\_Color\_Format(PortNo, ColorFormat) Get the color format.

AngeloRTV\_Set\_Video\_Format(PortNo, Value) Set the video format.

AngeloRTV\_Get\_Video\_Format(PortNo, Value) Set the video format.

AngeloRTV\_Set\_Image\_Geometric(PortNo, X\_Offset, Y\_Offset, X\_Active, Y\_Active, X\_Scale, Y\_Scale)

Advanced image processing.

AngeloRTV\_Detect\_Video\_Format(PortNo, FormatValue) Detect the video format and if there is signal input.

# @ Description

AngeloRTV\_Set\_Image\_Config:

Adjusts the hue, contrast, Saturation and brightness of the port for the Angelo series card.

AngeloRTV\_Get\_Image\_Config:

Retrieves the current hue, contrast, Saturation and brightness setting of the port for the Angelo series card.

AngeloRTV\_Set\_ Color \_Format:

Sets the color format of the port for the Angelo series card. Valid color formats are: gray scale, RGB.

AngeloRTV\_Get\_ Color \_Format:

Retrieves the color format of the port for the Angelo series card.

AngeloRTV\_Set\_ Video\_Format:

Sets the Video format of the port for the Angelo series card. Valid color formats are: NTSC, EIA, PAL, CCIR.

AngeloRTV\_Get\_ Video \_Format:

Retrieves the video format of the port for the Angelo series card.

AngeloRTV\_Set\_Image\_Geometric:

This function is used for image cropping and scaling.

AngeloRTV\_Detect\_Video\_Format:

Use the function to retrieve the video format. And if the return value of the 2nd parameter is 0 that means there is no signal input.

![X_Scale = 0.5\nY_Scale = 0.5\nVideo Frame\nY_Offset\nY_Active\nX_Offset X_Active](.rtvseries-50-1r001-1010-203/cecf01afd67cd54ec7c9503048c85b26dc9039b4fb2f6732453df5b63adbafeb.jpg)

Figure 5-1: Video Frame

# @ Syntax

C/C++ (Windows/CE.NET)
```c
I16 AngeloRTV_Set_Image_Config(U16 PortNo, U8 ConfigIndex, U8 Value);
I16 AngeloRTV_Get_Image_Config(U16 PortNo, U8 ConfigIndex, U8* Value);
I16 AngeloRTV_Set_Color_Format (U16 PortNo, U8 ColorFormat);
I16 AngeloRTV_Get_Color_Format (U16 PortNo, U8* ColorFormat);
```

```c
I16 AngeloRTV_Set_Video _Format (U16 PortNo, U8 VideoFormat);
I16 AngeloRTV_Set_Video _Format (U16 PortNo, U8* VideoFormat);
I16 AngeloRTV_Set_Image_Geometric(U16 PortNo, U32 X_Offset, U32 Y_Offset, U32 X_Active, U32 Y_Active, double X_Scale, double Y_Scale);
I16 AngeloRTV_Detect_Video_Format (U16 PortNo, U8 * FormatValue);
```
Visual Basic (Windows/CE.NET)

```txt
AngeloRTV_Set_Image_Config(ByVal PortNo As Integer, ByVal ConfigIndex As Byte, ByVal Value As Byte) As Integer
AngeloRTV_Get_Image_Config(ByVal PortNo As Integer, ByVal ConfigIndex As Byte, ByVal Value As Byte) As Integer
AngeloRTV_Set_Color _Format (ByVal PortNo As Integer, ByVal ColorFormat As Byte) As Integer
AngeloRTV_Get_Color _Format (ByVal PortNo As Integer, ByVal ColorFormat As Byte) As Integer
AngeloRTV_Set_Video _Format (ByVal PortNo As Integer, ByVal VideoFormat As Byte) As Integer
AngeloRTV_Set_Video _Format (ByVal PortNo As Integer, ByVal VideoFormat As Byte) As Integer
AngeloRTV_Set_Image_Geometric(ByVal PortNo As Integer, ByVal X_Offset As Long, ByVal Y_Offset As Long, ByVal X_Active As Long, ByVal Y_Active As Long, ByVal X_Scale As Double, ByVal Y_Scale As Double) As Integer
AngeloRTV_Detect_Video_Format (ByVal PortNo, ByVal FormatValue As Byte) As Integer
```
Delphi (Windows)

```c
AngeloRTV_Set_Image_Config(PortNo:Smallint;ConfigIndex:Byte;Value:Byte): Smallint;
AngeloRTV_Get_Image_Config(PortNo:Smallint;ConfigIndex:Byte;var Value:Byte):Smallint;
AngeloRTV_Set_Color_Format(PortNo:Smallint;ColorFormat:Byte):Smallint;
```

```txt
AngeloRTV_Get_Color_Format(PortNo:Smallint;var ColorFormat:Byte):Smallint;
AngeloRTV_Set_Video_Format(PortNo:Smallint;Video Format:Byte):Smallin;
AngeloRTV_Get_Video_Format(PortNo:Smallint;var VideoFormat:Byte):Smallint;
AngeloRTV_Set_Image_Geometric (PortNo:Smallint; X_Offset:LongInt; Y_Offset:LongInt; X_Active:LongInt; Y_Active:LongInt; X_Scale:Double; Y_Scale:Double):Smallint;
AngeloRTV_Detect_Video_Format(PortNo:Smallint; var FormatValue:Byte):Smallint;
```

# @ Arguments

# PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two PCI-RTV-24 Angelo cards (card 0, card 1) in the system, and each PCI-RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

# ConfigIndex:

 0 for BRIGHTNESS
 1 for HUE
 2 for SATURATION (U)
 3 for SATURATION (V)
 4 for CONTRAST (LUMA)
 5 for luma notch filter (for monochrome video, the notch filter should not be used)

# Value: (0-255)

 Range Default value
 BRIGHTNESS 0 ---- 255 128
 HUE 0 ---- 255 0
 CHROMA (U) 0 ---- 255 127
 CHROMA (V) 0 ---- 255 90
 LUMA 0 ---- 255 124
 LUMA notch filter 0(Enable) or 1(Disable)

# Color Format:

 RGB16 = 0,
 GRAY = 1,
 RGB15 = 2,
 RGB24 = 3,
 RGB32 = 4,
 RGB8 = 5,
 RAW8X = 6,
 YUY24:2:2= 7,

# Video Format:

 Full NTSC (640\*480) = 0,
 Full PAL (768\*576) = 1,
 CIF NTSC (320\*240) = 2,
 CIF PAL (384\*288) = 3,
 QCIF NTSC (160\*120) = 4,
 QCIF PAL (192\*144) = 5,

Note: Please do not use Full NTSC and Full PAL format to acquire dynamic object image, because the interlaced scanning may not be able to present clear image for it.

X\_Scale:

This parameter is the scaling factor applied to the Angelo sampled line to obtain pixels according to the resolution.

X\_Active

This parameter value is the length of the active video line

X\_Offset

This parameter value is the number of scaled pixels to skip before the start of the active video line.

Y\_Scale:

This parameter is the scaling factor applied to the Angelo sampled data lines in the vertical direction.

Y\_Active

This parameter value is the height (in lines) of the active video image.

Y\_Offset

This parameter value is the number of lines to skip before the first line of the active video image.

# FormatValue:

If the return value of this parameter is 0 that means there is no video signal input. And if the value is 1 or 2, the video format of the port is NTSC. Otherwise, if the value is 3, 4 or 5, the video format of the port is PAL.

@ Example
```txt
&lt;VC/BCB&gt;
AngeloRTV_Set_Image_Config -
AngeloRTV_Get_Image_Config -
I16 Result;
I16 PortNo = 0;
U8 ConfigIndex = 0;
U8 Value = 128;
Result = AngeloRTV_Set_Image_Config (PortNo, ConfigIndex, Value);
Result = AngeloRTV_Get_Image_Config (PortNo, ConfigIndex, &Value);
AngeloRTV_Set_Color_Format -
AngeloRTV_Get_Color_Format -
AngeloRTV_Set_Video_Format -
AngeloRTV_Get_Video_Format -
I16 Result;
I16 PortNo = 0;
U8 VideoFormat = 0;
U8 ColorFormat = 3;
Result = AngeloRTV_Set_Color_Format(PortNo, ColorFormat);
Result = AngeloRTV_Get_Color_Format(PortNo, &ColorFormat);
Result = AngeloRTV_Set_Video_Format(PortNo, VideoFormat);
Result = AngeloRTV_Get_Video_Format(PortNo, &VideoFormat);
```

AngeloRTV\_Set\_Image\_Geometric –
```txt
I16 Result;
I16 PortNo = 0;
U32 X_Active = 600;
U32 Y_Active = 400;
U32 X_Offset = 40;
```

```txt
U32 Y_Offset = 80;
Double X_Scale = 1.0;
Double Y_Scale = 1.0;
Result = AngeloRTV_Set_Image_Geometric (PortNo, X_Offset, Y_Offset, X_Active, Y_Active, X_Scale, Y_Scale);
AngeloRTV_Detect_Video_Format –
I16 Result;
U16 PortNo;
U8 FormatValue;
PortNo = 0;
Result = AngeloRTV_Detect_Video_Format (PortNo, &FormatValue);
&lt;Visual Basic&gt;
AngeloRTV_Set_Image_Config –
AngeloRTV_Get_Image_Config –
Dim Result As Integer
Dim PortNo As Integer
Dim ConfigIndex As Byte
Dim Value As Byte
PortNo = 0
ConfigIndex = 0
Value = 128
Result = AngeloRTV_Set_Image_Config (ByVal PortNo, ByVal ConfigIndex, ByVal Value)
Result = AngeloRTV_Get_Image_Config (ByVal PortNo, ByVal ConfigIndex, ByVal Value)
AngeloRTV_Set_Color_Format –
AngeloRTV_Get_Color_Format –
AngeloRTV_Set_Video_Format –
AngeloRTV_Get_Video_Format –
Dim Result As Integer
Dim PortNo As Integer
Dim ColorFormat As Byte
Dim VideoFormat As Byte
PortNo = 0
ColorFormat = 3
VideoFormat = 0
Result = AngeloRTV_Set_Color_Format(ByVal PortNo, ByVal ColorFormat)
Result = AngeloRTV_Get_Color_Format(ByVal PortNo, ByVal ColorFormat)
```

```txt
Result = AngeloRTV_Set_Video_Format(ByVal PortNo, ByVal VideoFormat)
Result = AngeloRTV_Get_Video_Format(ByVal PortNo, ByRef VideoFormat)
```
AngeloRTV\_Set\_Image\_Geometric –

```txt
Dim Result As Integer
Dim PortNo As Integer
Dim X_Active As Long
Dim Y_Active As Long
Dim X_Offset As Long
Dim Y_Offset As Long
Dim X_Scale As Double
Dim Y_Scale As Double
PortNo = 0
X_Active = 600
Y_Active = 400
X_Offset = 40
Y_Offset = 80
X_Scale = 1.0
Y_Scale = 1.0
Result = AngeloRTV_Set_Image_Geometric (PortNo, X_Offset, Y_Offset, X_Active, Y_Active, X_Scale, Y_Scale)
```
AngeloRTV\_Detect\_Video\_Format –

```vba
Dim Result As Integer
Dim PortNo As Integer
Dim FormatValue As Byte
PortNo = 0
Result = AngeloRTV_Detect_Video_Format (ByVal PortNo, ByRef FormatValue)
```
&lt;Delphi &gt;
AngeloRTV\_Set\_Image\_Config –

AngeloRTV\_Get\_Image\_Config –
```txt
Var
Result : SmallInt;
PortNo : SmallInt;
ConfigIndex: Byte;
Value: Byte;
PortNo:=0;
ConfigIndex:=0;
Value:=0;
Result := AngeloRTV_Set_Image_Config(PortNo, ConfigIndex, Value);
```

```verilog
Result := AngeloRTV_Get_Image_Config (PortNo, ConfigIndex, Value);
AngeloRTV_Set_Color_Format -
AngeloRTV_Get_Color_Format -
AngeloRTV_Set_Video_Format -
AngeloRTV_Get_Video_Format -
Var
Result : SmallInt;
PortNo : SmallInt;
VideoFormat: Byte;
ColorFormat: Byte;
PortNo:=0;
VideoFormat:=0;
ColorFormat:=3;
Result :=
    AngeloRTV_Set_Color_Format(PortNo,ColorFormat);
Result :=
    AngeloRTV_Get_Color_Format(PortNo,ColorFormat);
Result :=
    AngeloRTV_Set_Video_Format(PortNo,VideoFormat);
Result := AngeloRTV_Get_Video_Format(PortNo,VideoFormat);
AngeloRTV_Set_Image_Geometric -
Var
Result : SmallInt;
PortNo : SmallInt;
X_Active : LongInt;
Y_Active : LongInt;
X_Offset : LongInt;
Y_Offset : LongInt;
X_Scale : Double;
Y_Scale : Double;
PortNo := 0;
X_Active := 600;
Y_Active := 400;
X_Offset := 40;
Y_Offset := 80;
X_Scale := 1.0;
Y_Scale := 1.0;
```

```autohotkey
Result := AngeloRTV_Set_Image_Geometric(PortNo, X_Offset, Y_Offset, X_Active, Y_Active, X_Scale, Y_Scale);
```
AngeloRTV\_Detect\_Video\_Format –

```txt
var
Result : SmallInt;
PortNo : SmallInt;
FormatValue : Byte;
PortNo := 0;
Result := AngeloRTV_Detect_Video_Format (PortNo, FormatValue);
```

# 5.5 Image Grabbing

# @ Name

AngeloRTV\_Capture\_Start(PortNo, CaptureNo)

Start to grab the video image

AngeloRTV\_Select\_Channel(PortNo, Multiplex)

Channel extension of video signal, for advanced only

AngeloRTV\_Capture\_Stop(PortNo)

Stop to grab the video image

AngeloRTV\_Capture\_Config(PortNo, Start\_Field)

Set the starting field of image

AngeloRTV\_Sync\_Grab(PortNo, Start\_Address, Width, Height, Size\_Byte)

Get an image frame with start address of memory

# @ Description

AngeloRTV\_Capture\_Start:

Continuously captures video frames and stops when the total frame number equals the “CaptureNo” parameter. The frame update rate is 30 frames/sec. If the “CaptureNo” is 0xFFFFFFFF, the frame grabbing will not stop until the “AngeloRTV\_Capture\_Stop” function is called.

AngeloRTV\_Capture\_Stop:

Stop grabbing video frames.

AngeloRTV\_Select\_Channel:

Angelo series cards are capable of channel extension. This function is used to multiplex video signals for the ports. In most cases using this function should not be required because the default setting is one port is dedicated to one channel.

Note: Do not call this function if there is no channel extension board in the system.

AngeloRTV\_Capture\_Config:

Chooses the starting field of image.

AngeloRTV\_Sync\_Grab:

This is a synchronous image grabbing function to get an image frame. Retrieve the memory start address from the frame data, width, height, and size in bytes of the image.

# @ Syntax

C/C++ (Windows/CE.NET)
```txt
I16 AngeloRTV_Capture_Start (U16 PortNo, U32 CaptureNo)
I16 AngeloRTV_Select_Channel (U16 PortNo, U16 Multiplex)
I16 AngeloRTV_Capture_Stop (U16 PortNo)
I16 AngeloRTV_Capture_Config (U16 PortNo, U32 Start_Field)
I16 AngeloRTV_Sync_Grab(U16 PortNo, U32* Start_Address, U32* Width, U32* Height, U32* Size_Byte)
```
Visual Basic (Windows/CE.NET)

```csv
AngeloRTV_Capture_Start (ByVal PortNo As Integer, ByVal CaptureNo As Long) As Integer
AngeloRTV_Select_Channel (ByVal PortNo As Integer, ByVal Multiplex As Integer) As Integer
AngeloRTV_Capture_Stop (ByVak PortNo As Integer) As Integer
AngeloRTV_Capture_Config (ByVal PortNo As Integer, ByVal Start_Field As Long) As Integer
AngeloRTV_Sync_Grab (ByVal PortNo As Integer, ByRef Start_Address As Long, ByRef Width as Long, ByRef Height As Long, ByRef Size_byte As Long) As Integer
```
Delphi (Windows)

```txt
AngeloRTV_Capture_Start (PortNo:Smallint; CaptureNo:LongInt):Smallint
AngeloRTV_Select_Channel (PortNo:Smallint; Multiplex:SmallInt):Smallint
AngeloRTV_Capture_Stop (PortNo:Smallint):Smallint
AngeloRTV_Capture_Config (PortNo:Smallint; Start_Field:LongInt):Smallint
AngeloRTV_Sync_Grab(PortNo:Smallint; var Start_Address:Pointer; var Width:Longint; var Height:Longint; var Size_byte:Longint):Smallint
```

# @ Argument

PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two PCI-RTV-24 Angelo cards (card 0, card 1) in the system, and each PCI-RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

# CaptureNo:

Total number of frames to capture. If the “CaptureNo” is 0xFFFFFFFF, the frame grabbing will not stop until the “AngeloRTV\_Capture\_Stop” function is called.

# Multiplex:

Indicates the multiplex channels.

 Bit 0 : Channel 0, 0 for disable ; 1 for enable.
 Bit 1 : Channel 1, 0 for disable ; 1 for enable.
 Bit 2 : Channel 2, 0 for disable ; 1 for enable.
 Bit 3 : Channel 3, 0 for disable ; 1 for enable.

For example:

 Multiplex = 1, only channel 0 is enable
 Multiplex = 2, only channel 1 is enable
 Multiplex = 15, four channels are enable

# Start\_Filed:

Indicates the first field of image.

 0: first field is Odd, so the image will be Odd field + Even field.
 1: first field is Even, so the image will be Even field + Odd field.
 2: first field depends on the current field, so the image will be Even field + Odd field, or Odd field + Even field.

# Start\_Address:

Memory start address of the video frame.

# Width:

Image width.

# Height:

Image height.

# Size\_Byte:

Memory size in bytes.

# @ Return Code

 0: ERROR\_NoError
 -7: ERROR\_Not\_Initialized – Make sure the port has been initialized by “AngeloRTV\_Initial”.
 -9: ERROR\_Invalid\_PortNo – Please input the correct “PortNo” parameter.

# @ Example

```txt
&lt;VC/BCB&gt;
AngeloRTV_Capture_Config-
AngeloRTV_Capture_Start-
AngeloRTV_Sync_Grab-
AngeloRTV_Capture_Stop-
I16 Result;
U16 PortNo = 0;
U32 CaptureNo = 0xFFFFFFFF;
U32 Start_Field = 0;
U32 StrAddr;
U32 Width, Height, Size_Byte;
Result = AngeloRTV_Capture_Config (PortNo, Start_Field);
Result = AngeloRTV_Capture_Start (PortNo, CaptureNo);
Result = AngeloRTV_Sync_Grab (PortNo, &StrAddr, &Width, &Height, &Size_Byte);
Result = AngeloRTV_Capture_Stop (PortNo);
```

# &lt; Visual Basic &gt;

AngeloRTV\_Capture\_Config –

AngeloRTV\_Capture\_Start –

AngeloRTV\_Sync\_Grab –

```txt
AngeloRTV_Capture_Stop -
Dim Result As Integer
Dim PortNo As Integer
Dim CaptureNo As Long
Dim Start_Field As Long
Dim StrAddr As Long
Dim Width as Long, Height As Long, Size_Byte As Long
PortNo = 0
CaptureNo = &HFFFFFFF
Start_Field = 0
```

```verilog
Result = AngeloRTV_Capture_Config (ByVal PortNo, ByVal Start_Field)
Result = AngeloRTV_Capture_Start (ByVal PortNo, ByVal CaptureNo)
Result = AngeloRTV_Sync_Grab (ByVal PortNo, StrAddr, Width, Height, Size_Byte)
Result = AngeloRTV_Capture_Stop (ByVal PortNo)

&lt;Delphi&gt;

AngeloRTV_Capture_Config -
AngeloRTV_Capture_Start -
AngeloRTV_Sync_Grab -
AngeloRTV_Capture_Stop -

Var
Result : SmallInt;
PortNo: SmallInt;
CaptureNo: LontInt;
Start_Field: LontInt;
StrAddr: Pointer;
Width, Height, Size_Byte: LongInt;
begin
PortNo:=0;
Start_Field :=0;
CaptureNo:= INFINITE;
Result := AngeloRTV_Capture_Config (PortNo, Start_Field);
Result := AngeloRTV_Capture_Start (PortNo, CaptureNo);
Result := AngeloRTV_Sync_Grab (PortNo, StrAddr, Width, Height, Size_Byte);
Result: = AngeloRTV_Capture_Stop (PortNo);
end;
```

# 5.6 GPIO & EEPROM Functions

# @ Name

AngeloRTV\_Set\_GPIO\_Sts (PortNo, Status)

Set Digital Output status.

AngeloRTV\_Get\_GPIO\_Sts (PortNo, Status)

Get Digital Input status.

AngeloRTV\_Set\_GPIO\_Int\_Logic (PortNo, Logic)

Configure the Digital Input Interrupt condition

AngeloRTV\_Write\_EEPROM (PortNo, Offset, Value)

Write data into EEPROM

AngeloRTV\_Read\_EEPROM (PortNo, Offset, Value)

Read data from EEPROM

AngeloRTV\_Set\_LED\_Sts (PortNo, LEDStatus)

Set LED status for cPci RTV24 card.

# @ Description

AngeloRTV\_Set\_GPIO\_Sts:

There is one digital output channel in each port of the Angelo series card, use this function to set the digital output status.

AngeloRTV\_Get\_GPIO\_Sts:

There is one digital input channel in each port of Angelo series card, use this function to get the digital input status.

AngeloRTV\_Set\_GPIO\_Int\_Logic:

This function used to configure the Digital Input Interrupt condition.

AngeloRTV\_Write\_EEPROM:

Writes data into the EEPROM. Data in EEPROM will not be lost even when powered off.

AngeloRTV\_Read\_EEPROM:

Reads data from the EEPROM. Data in EEPROM will not be lost even when powered off.

AngeloRTV\_Set\_LED\_Sts:

Use the function to set LED status. The function is for cPci RTV24 card only.

# @ Syntax

C/C++ (Windows/CE.NET)
```txt
I16 AngeloRTV_Set_GPIO_Sts(U16 PortNo, U8 Status);
I16 AngeloRTV_Get_GPIO_Sts(U16 PortNo, U8*Status);
I16 AngeloRTV_Set_GPIO_Int_Logic(U16 PortNo, U16Logic);
I16 AngeloRTV_Write_EEPROM(U16 CardNo, U8 Offset, U8 Value);
I16 AngeloRTV_Read_EEPROM(U16 CardNo, U8 Offset, U8*Value);
I16 AngeloRTV_Set_LED_Sts (U16 PortNo, U8 LEDStatus);
```
Visual Basic (Windows/CE.NET)

```txt
AngeloRTV_Set_GPIO_Sts (ByVal PortNo As Integer, ByVal Status As Byte) As Integer
AngeloRTV_Get_GPIO_Sts (ByVal PortNo As Integer, ByRef Status As Byte) As Integer
AngeloRTV_Set_GPIO_Int_Logic(ByVal PortNo As Integer, ByVal Logic As Integer) As Integer
AngeloRTV_Write_EEPROM (ByVal PortNo As Integer, ByVal Offset As Byte, ByVal Value As Byte) As Integer
AngeloRTV_Read_EEPROM (ByVal PortNo As Integer, ByVal Offset As Byte, ByVal Value As Byte) As Integer
AngeloRTV_Set_LED_Sts (ByVal PortNo As Integer, ByVal LEDStatus As Byte) As Integer
```
Delphi (Windows)

```c
AngeloRTV_Set_GPIO_Sts
(PortNo:Smallint;status:Byte):Smallint;
AngeloRTV_Get_GPIO_Sts (PortNo:Smallint;var status:Byte):Smallint;
AngeloRTV_Set_GPIO_Int_Logic(PortNo:Smallint; Logic:Smallint):Smallint;
AngeloRTV_Write_EEPROM (
PortNo:Smallint;Offset:Byte;Value:Byte):Smallint;
AngeloRTV_Read_EEPROM ( PortNo:Smallint; Offset:Byte;var Value:Byte):Smallint;
AngeloRTV_Set_LED_Sts (PortNo:Smallint; LEDStatus:Byte):Smallint;
```

# @ Argument

# PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two PCI-RTV-24 Angelo cards (card 0, card 1) in the system, and each PCI-RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

# Status:

The digital input or digital output status

 0 Low
 1 High

Logic:

The digital input interrupt condition

 0: Active Low
 1: Active High

Offset:

The offset address of the EEPROM. This parameter is valid between 0 and 127

Value: The value in Byte data type, this parameter is valid between 0 and 255.

# LEDStatus:

Use the parameter to set the LED status.

 LEDStatus = 1: High
 LEDStatus = 0: Low

# @ Return Code

 0: ERROR\_NoError
 -7: ERROR\_Not\_Initialized – Make sure the port has been initialized by “AngeloRTV\_Initial”.
 -9: ERROR\_Invalid\_PortNo – Please input the correct “PortNo” parameter.
 -15: ERROR\_Invalid\_Address – a valid offset address is between 0 and 127

# @ Example

&lt;VC/BCB &gt;

AngeloRTV\_Set\_GPIO\_Sts –

```c
AngeloRTV_Get_GPIO_Sts –
    I16 Result;
    I16 PortNo = 0;
    U8 Status = 1;
    Result = AngeloRTV_Set_GPIO_Sts (PortNo, Status);
    Result = AngeloRTV_Get_GPIO_Sts (PortNo, &Status);

AngeloRTV_Set_GPIO_Int_Logic –
    I16 Result;
    U16 PortNo = 0;
    U16 Logic = 0;
    Result = AngeloRTV_Set_GPIO_Int_Logic (PortNo, Logic);

AngeloRTV_Write_EEPROM
AngeloRTV_Read_EEPROM
    I16 Result;
    I16 PortNo = 0;
    U8 Offset = 0;
    U8 Value = 128;
    Result = AngeloRTV_Write_EEPROM (PortNo, Offset, Value);
    Result = AngeloRTV_Read_EEPROM (PortNo, Offset, &Value);

AngeloRTV_Set_LED_Sts –
    I16 Result;
    U16 PortNo;
    U8 LEDStatus;
    PortNo = 0;
    LEDStatus = 1;
    Result = AngeloRTV_Set_LED_Sts (PortNo, LEDStatus);

&lt;Visual Basic&gt;

AngeloRTV_Set_GPIO_Sts –
AngeloRTV_Get_GPIO_Sts –
    Dim Result As Integer
    Dim PortNo As Integer
    Dim Status As Byte
    PortNo = 0
    Status = 1
    Result = AngeloRTV_Set_GPIO_Sts (ByVal PortNo, ByVal Status)
    Result = AngeloRTV_Get_GPIO_Sts (ByVal PortNo, ByVal Status)
```

```txt
AngeloRTV_Set_GPIO_Int_Logic –
    Dim Result As Integer
    Dim PortNo As Integer
    Dim Logic As Integer
    PortNo = 0
    Logic = 0
    Result = AngeloRTV_Set_GPIO_Int_Logic (ByVal PortNo, ByVal Logic)
AngeloRTV_Write_EEPROM
AngeloRTV_Read_EEPROM
    Dim Result As Integer
    Dim PortNo As Integer
    Dim Offset As Byte
    Dim Value As Byte
    PortNo = 0
    Offset = 0
    Value = 128
    Result = AngeloRTV_Write_EEPROM(ByVal PortNo, ByVal Offset, ByVal Value)
    Result = AngeloRTV_Read_EEPROM(ByVal PortNo, ByVal Offset, ByVal Value)
AngeloRTV_Set_LED_Sts –
    Dim Result As Integer
    Dim PortNo As Integer
    Dim LEDStatus As Byte
    PortNo = 0
    LEDStatus = 1
    Result = AngeloRTV_Set_LED_Sts (ByVal PortNo, ByVal LEDStatus)
&lt;Delphi&gt;
AngeloRTV_Set_GPIO_Sts –
AngeloRTV_Get_GPIO_Sts –
Var
Result : SmallInt;
PortNo : SmallInt;
Status: Byte;
PortNo:=0;
Status:=1;
Result := AngeloRTV_Set_GPIO_Sts (PortNo, Status);
Result := AngeloRTV_Get_GPIO_Sts (PortNo, Status);
AngeloRTV_Set_GPIO_Int_Logic –
```

```autohotkey
var
Result: SmallInt;
PortNo: SmallInt;
Logic: SmallInt;
PortNo := 0;
Logic := 0;
Result := AngeloRTV_Set_GPIO_Int_Logic (PortNo, Logic);
AngeloRTV_Write_EEPROM
AngeloRTV_Read_EEPROM
Var
Result : SmallInt;
PortNo : SmallInt;
Offset: Byte;
Value: Byte;
PortNo:=0;
Offset:=0;
Value:=128;
Result := AngeloRTV_Write_EEPROM (PortNo, Offset, Value);
Result := AngeloRTV_Read_EEPROM (PortNo, Offset, Value);
AngeloRTV_Set_LED_Sts -
var
Result: Smallint;
PortNo: Smallint;
LEDStatus: Byte;
PortNo := 0;
LEDStatus := 1;
Result := AngeloRTV_Set_LED_Sts (PortNo, LEDStatus);
```

# 5.7 Callback & Thread Functions

# @ Name

AngeloRTV\_Get\_Int\_Status (PortNo, IntStatus)

Gets the current interrupt status

AngeloRTV\_Set\_Int\_Event (PortNo,hEvent)

Assigns the windows interrupt event

AngeloRTV\_Set\_Callback(PortNo, CallBackProc)

Sets the callback function when an interrupt is generated

# @ Description

AngeloRTV\_Get\_Int\_Status:

Allows users to identify what caused an interrupt signal.

 Bit 0: GPIO interrupt, when Digital input channel is changed.
 Bit 1: Channel 0 Image ready
 Bit 2: Channel 1 Image ready
 Bit 3: Channel 2 Image ready
 Bit 4: Channel 3 Image ready

Note: There are four channels in each port, the default channel is channel 0.

AngeloRTV\_Set\_Int\_Event:

Links interrupt events. Users only have to declare the “hEvent” variable and call this function to DLL, the DLL will link the event and interrupt automatically.

AngeloRTV\_Set\_Callback:

Links the callback function when an interrupt is generated to host pc.

Note: There are two ways to use the synchronization mechanism, one is the callback function, and the other is the thread function.

# @ Syntax

C/C++ (Windows/CE.NET)

```javascript
I16 AngeloRTV_Get_Int_Status(U16 PortNo,U32 *IntStatus);
I16 AngeloRTV_Set_Int_Event(U16 PortNo,HANDLE* hEvent);
```

```txt
I16 AngeloRTV_Set_Callback (U16 PortNo, void (
    __stdcall *CallBackProc) (U32
    VideoBufferaddress , U16 PortNo));
```
Visual Basic (Windows/CE.NET)

```txt
AngeloRTV_Set_Int_Event (ByVal PortNo As Integer, ByRef hEvent As Long) As Integer
AngeloRTV_Get_Int_Status (ByVal PortNo As Integer, ByRef IntStatus As Long) As Integer
AngeloRTV_Set_Callback (ByVal PortNo As Integer, ByVal CallBack As Long) As Integer
```
Delphi (Windows)

```txt
AngeloRTV_Set_Int_Event(PortNo:Smallint;var
    hEvent:Integer):Smallint;
AngeloRTV_Get_Int_Status(PortNo:Smallint;var
    IntStatus:Longint):Smallint;
AngeloRTV_Set_Callback(PortNo:Smallint;lpCallBack
    kProc:CallbackFunc):Smallint;
```

# @ Argument

# PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two PCI-RTV-24 Angelo cards (card 0, card 1) in the system, and each PCI-RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

# IntStatus:

# Interrupt status

 Bit 0:GPIO interrupt, when Digital input channel is changed.
 Bit 1:Channel 0 Image ready
 Bit 2:Channel 1 Image ready
 Bit 3:Channel 2 Image ready
 Bit 4:Channel 3 Image ready

# hEvent:

Interrupt event handle.

# @ Return Code

 0: ERROR\_NoError
 -7: ERROR\_Not\_Initialized – Make sure the port has been initialized by “AngeloRTV\_Initial”.
 -9: ERROR\_Invalid\_PortNo – Please input the correct “PortNo” parameter.

# @ Example

&lt; VC/BCB &gt;
Use Thread:
```c
HANDLE hEvent=NULL;
void *pThread=NULL;
U32 threadID;
U16 PortNo = 0;

DWORDnObj;
U32 Size_Byte;
U32 Status = 0;
I16 ISR_ON=0;
DWORD WINAPI IntThreadProc(LPVOID lpParam)
{
    while(ISR_ON)
    {
    nObj = WaitForSingleObject(hEvent,
    INFINITE);
    AngeloRTV_Get_Int_Status(PortNo, &Status);
    if((Status&0x01)==1)//GPIO
    {
    }
    if((Status>>1&0x01)==1)//Channel 0 of the
    nPort
    {
    }
    else if((Status>>2&0x01)==1)//Channel 1 of
    the nPort
    {
    }
    else if((Status>>3&0x01)==1)//Channel 2 of
    the nPort
    {
    }
    else if((Status>>4&0x01)==1)//Channel 3 of
    the nPort
```

```txt
{
}
ResetEvent(hEvent);
}
Return TRUE;
}
AngeloRTV_Set_Int_Event(PortNo, &hEvent);
pThread = CreateThread(NULL, 0, IntThreadProc, 0, 0, &threadID);
```
Use Callback Function:

```c
U16 PortNo = 0;
void __stdcall MediaStreamProc( U32
    VideoBufferaddress ,U16 PortNo)
{
    U32 Status;
    AngeloRTV_Get_Int_Status(PortNo,&Status);
    if((Status&0x01)==1)//GPIO
    {
    }
    if((Status>>1&0x01)==1)//Channel 0 of the nPort
    {
    }
    else if((Status>>2&0x01)==1)//Channel 1 of the nPort
    {
    }
    else if((Status>>3&0x01)==1)//Channel 2 of the nPort
    {
    }
    else if((Status>>4&0x01)==1)//Channel 3 of the nPort
    {
    }
}
AngeloRTV_Set_Callback(PortNo,MediaStreamProc);
```
&lt; Visual Basic &gt;

Use Callback Function
```txt
Dim Result As Integer
Dim PortNo As Integer
Public Sub lpcallback(ByVal VideoBufferaddress As Long, ByVal PortNo As Integer)
```

```vba
Dim Status As Long
Result = AngeloRTV_Get_Int_Status(PortNo, Status)
End Sub
PortNo = 0
Result = AngeloRTV_Set_Callback(PortNo, AddressOf lpcallback)
```
&lt;Delphi &gt;

Use Thread
```txt
Var
ISR_ON : SmallInt;
Event_Angelo:Integer;
ThreadId : LongInt;
PortNo: SmallInt;
PortNo:=0;
function ThreadFunc(Parameter: Pointer):
    Integer ;
    var
    Str_Add :Pointer;
    Size_Byte :Longint;
    intstatus : LongInt;
begin
    while(ISR_ON=1) do
    begin

    WaitForSingleObject(Event_Angelo, INFINITE);
    ResetEvent(Event_Angelo);

    AngeloRTV_Get_Int_Status(PortNo, intstatus);
    if intstatus = 2 then //image
    ready for channel 0 of port
    begin
    end;
    end;
end;

AngeloRTV_Set_Int_Event(PortNo, Event_Angelo);
ISR_ON :=1;
Mythread :=
BeginThread(nil, 0, ThreadFunc, nil, 0, ThreadId);
```

Use Callback function
```matlab
var
PortNo: SmallInt;
PortNo:=0;
procedure MyCallback(VideoBufferAddress:
    LongInt;PortNo : SmallInt);stdcall
var
    Str_Add :Pointer;
    Result :SmallInt;
    Size_Byte :LongInt;
    intstatus :LongInt;
begin
    AngeloRTV_Get_Int_Status(PortNo, intstatus);
    if intstatus = 2 then
    begin
    end;
    end;
AngeloRTV_Set_Callback(Cur_Port, MyCallback);
```

# 5.8 Watchdog Timer

Note: This function is only available for RTV-24.

# @ Name

AngeloRTV\_Set\_WDT(CardNo, Enable, Interval)

Sets the watch dog status(Only for PCI-RTV24)

# @ Description

AngeloRTV\_Set\_WDT:

Enables or disables the watch dog timer in the Angelo series cards, and set the interval of timer. When users have enabled the watch dog timer and selected a 16 seconds interval, a system reset signal will be triggered if this function is not called after 16 seconds.

# @ Syntax

```txt
C/C++ (Windows/CE.NET)
I16 AngeloRTV_Set_WDT (U16 CardNo, U16 Enable, U16 Interval)
```

Visual Basic (Windows/CE.NET)

```txt
AngeloRTV_Set_WDT (ByVal PortNo As Integer, ByVal Enable As Integer, ByVal Interval As Integer) As Integer
```

Delphi (Windows)

```txt
AngeloRTV_Set_WDT(CardNo:Smallint;enable:Smallint;interval:Smallint):Smallint;
```

# @ Argument

CardNo:

Card number is the zero index in Angelo series card. For example, if there are two Pci-RTV-24 Angelo cards (card 0, card 1) in the system, “CardNo” of card 0 is 0, and 1 for card 1.

Enable:

Enables or disables the watch dog timer. 0 for disable, 1 for enable.

Interval:

Indicates the watch dog timer interval.

 1: 8 seconds
 2: 16 seconds
 3: 32 seconds

# @ Return Code

 0 : ERROR\_NoError
 -7: ERROR\_Not\_Initialized – Make sure the port has been initialized by “AngeloRTV\_Initial”.
 -9 : ERROR\_Invalid\_PortNo – Please input the correct “PortNo” parameter.

# @ Example

&lt;VC/BCB &gt;
```c
AngeloRTV_Set_WDT
I16 Result;
U16 CardNo = 0;
U16 Enable = 1;
U16 Interval = 1;
Result =
AngeloRTV_Set_WDT(CardNo, Enable, Interval);
```
&lt; Visual Basic &gt;

AngeloRTV\_Set\_WDT
```vba
Dim Result As Integer
Dim CardNo As Integer
Dim Enable As Integer
Dim Interval As Integer
CardNo = 0
Enable = 1
Interval = 1
Result =
AngeloRTV_Set_WDT(CardNo, Enable, Interval)
```
&lt;Delphi &gt;

AngeloRTV\_Set\_WDT
```verilog
Var
Result : SmallInt;
CardNo: SmallInt;
Enable: SmallInt;
Interval: SmallInt;
CardNo := 0;
Enable := 1;
Interval := 1;
Result :=
AngeloRTV_Set_WDT(CardNo, Enable, Interval);
```

# 5.9 Software Trigger

# @ Name

AngeloRTV\_Trigger\_Config (PortNo,Interval)

Sets software trigger configuration(Only for PCI-RTV24, cPCI-RTV-24, cPCI-RTV44)

AngeloRTV\_Trigger\_Start (CardNo, Multiplex)

Generates single or multiple trigger output simultaneously(Only for PCI-RTV24, cPCI-RTV-24, cPCI-RTV44)

# @ Description

AngeloRTV\_Trigger\_Config:

Configures the pulse output interval.

AngeloRTV\_Trigger\_Start:

Generates a one shot pulse output for single or multiple ports.

# @ Syntax

```csv
C/C++ (Windows/CE.NET)
I16 AngeloRTV_Trigger_Config(U16 PortNo,U16 Interval);
I16 AngeloRTV_Trigger_Start(U16 CardNo,U16 Multiplex);
Visual Basic (Windows/CE.NET)
AngeloRTV_Trigger_Config (ByVal PortNo As Integer, ByVal Interval As Integer) As Integer
AngeloRTV_Trigger_Start (ByVal CardNo As Integer, ByVal Multiplex As Integer) As Integer
Delphi (Windows)
AngeloRTV_Trigger_Config (PortNo:Smallint; Interval:Smallint):Smallint;
AngeloRTV_Trigger_Start (CardNo:Smallint; Multiplex:Smallint):Smallint;
```

# @ Argument

CardNo:

Card number is the zero index in Angelo series card. For example, if there are two Pci-RTV-24 Angelo cards (card 0, card 1) in the system, “CardNo” of card 0 is 0, and 1 for card 1.

PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two PCI-RTV-24 Angelo cards (card 0, card 1) in the system, and each PCI-RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

# Interval:

Indicates the trigger output interval, the valid range is from 0 to 253, the definition is as following

 0: 16ms
 32: 12ms
 128: 8ms
 253: 60µs

# Multiplex:

Indicates the trigger output ports in Angelo series cards.

 Bit 0: Port 0 on each card. 0 for disable, 1 for enable.
 Bit 1: Port 1 on each card. 0 for disable, 1 for enable.
 Bit 2: Port 2 on each card. 0 for disable, 1 for enable.
 Bit 3: Port 3 on each card. 0 for disable, 1 for enable.

For example:

 Multiplex = 1, only port 0 in each Angelo series card generates a trigger output.
 Multiplex = 2, only port 1 in each Angelo series card generates a trigger output.
 Multiplex = 15, four ports in each Angelo series card generates a trigger output.

# @ Return Code

 0: ERROR\_NoError
 -7: ERROR\_Not\_Initialized – Make sure the port has been initialized by “AngeloRTV\_Initial”.
 -9: ERROR\_Invalid\_PortNo – Please input the correct “PortNo” parameter.

# @ Example

&lt;VC/BCB &gt;

AngeloRTV\_Trigger\_Config

AngeloRTV\_Trigger\_Start

```txt
I16 Result;
U16 CardNo = 0;
U16 PortNo = 0;
U16 Multiplex = 1;
U16 Interval = 32;
Result =
AngeloRTV_Trigger_Config(PortNo, Interval);
Result = AngeloRTV_Trigger_Start(CardNo,
Multiplex);
```
&lt; Visual Basic &gt;
AngeloRTV\_Trigger\_Config

AngeloRTV\_Trigger\_Start
```txt
Dim Result As Integer
Dim CardNo As Integer
Dim PortNo As Integer
Dim Multiplex As Integer
Dim Interval As Integer
CardNo = 0
PortNo = 0
Multiplex = 1
Interval = 32
Result = AngeloRTV_Trigger_Config
(PortNo, Interval)
Result = AngeloRTV_Trigger_Start (CardNo, Multiplex)
```
&lt;Delphi &gt;
AngeloRTV\_Trigger\_Config

AngeloRTV\_Trigger\_Start
```verilog
Var
Result : SmallInt;
CardNo: SmallInt;
PortNo: SmallInt;
Multiplex: SmallInt;
Interval: SmallInt;
CardNo := 0;
PortNo := 0;
Multiplex := 1;
Interval := 32;
Result := AngeloRTV_Trigger_Config
(PortNo, Interval);
Result := AngeloRTV_Trigger_Start (CardNo, Multiplex);
```

# 5.10 Frame Buffer

# @ Name

AngeloRTV\_Copy\_frame (PortNo, Dest\_Address, Size\_Byte)

Copies the frame date to the user allocated destination memory (bytes).

AngeloRTV\_Get\_frame(PortNo, Start\_Address,Width, Height, Size\_Byte)

Gets the frame memory start address and size of frame (bytes).

AngeloRTV\_Save\_File(PortNo, FileName, FileFormat, nQuality)

Save the video frame into an image file.

# @ Description

AngeloRTV\_Copy\_frame:

Copies frame data to memory or an array that the user has allocated. Before using this function, remember to allocate enough memory address space or array elements.

AngeloRTV\_Save\_File:

Saves the current video frame into an image file (TIF, BMP, or JPEG). nQuality is only used JPEGs.

AngeloRTV\_Get\_frame:

Retrieves the memory start address from the frame data, width, height, and size in bytes of the image. For example a FULL NTSC RGB24 video frame will occupy 900K Byte (640\*480\*3) memory address space.

<table><tr><td>Format</td><td>DWORD(32Bit)</td><td colspan="4">Pixel Data</td></tr><tr><td></td><td></td><td>Byte 3 Bit [31:24]</td><td>Byte 2 Bit[23:16]</td><td>Byte 1 Bit[15:8]</td><td>Byte 0 Bit[7:0]</td></tr><tr><td>RGB32</td><td>Dw0</td><td>Appha</td><td>R</td><td>G</td><td>B</td></tr><tr><td>RGB24</td><td>Dw0</td><td>B1</td><td>R0</td><td>G0</td><td>B0</td></tr><tr><td></td><td>Dw1</td><td>G2</td><td>B2</td><td>R1</td><td>G1</td></tr><tr><td></td><td>Dw2</td><td>R3</td><td>G3</td><td>B3</td><td>R2</td></tr><tr><td>RGB16</td><td>Dw0</td><td>{R0[31:27], G0[26:21], B0[20:16]}</td><td>{R0[15:11], G0[10:5], B0[4:0]}</td><td></td><td></td></tr></table>

Table 5-3: Pixel Data

<table><tr><td>Format</td><td>DWORD(32Bit)</td><td colspan="4">Pixel Data</td></tr><tr><td>RGB15</td><td>Dw0</td><td>{0,R0[30:26], G0[25:21], B0[20:16]}</td><td>{0,R0[14:10], G0[9:5], B0[4:0]}</td><td></td><td></td></tr><tr><td>Gray Scale(Y8)</td><td>Dw0</td><td>Y3</td><td>Y2</td><td>Y1</td><td>Y0</td></tr></table>

Table 5-3: Pixel Data

# @ Syntax

C/C++ (Windows/CE.NET)
```txt
I16 AngeloRTV_Copy_Frame(U16 PortNo,U8
    *Dest_Address,U32 Size_Byte);
I16 AngeloRTV_Get_Frame(U16 PortNo,U32*
    Start_Address, U32* Width, U32* Height, U32*
    Size_Byte);
16 AngeloRTV_Save_File(U16 PortNo, char*
    FileName,U8 FileFormat,U32 nQuality);
```
Visual Basic (Windows/CE.NET)

```txt
AngeloRTV_Copy_Frame (ByVal PortNo As Integer, Dest_Address As Byte, ByVal Size_byte As Long) As Integer
AngeloRTV_Get_Frame (ByVal PortNo As Integer, ByRef Start_Address As Long, ByRef Width as Long, ByRef Height As Long, ByRef Size_byte As Long) As Integer
AngeloRTV_Save_File (ByVal PortNo As Integer, ByVal FileName As String, ByVal FileFormat As Byte, ByVal nQuality As Long) As Integer
```
Delphi (Windows)

```txt
AngeloRTV_Copy_Frame(PortNo:Smallint;var
    Dest_Address:Byte;Size_byte:Longint):Smallint;
AngeloRTV_Get_Frame(PortNo:Smallint;var
    Start_Address:Pointer; var Width:Longint,
    var Height:Longint,var
    Size_byte:Longint):Smallint;
AngeloRTV_Save_File(PortNo:Smallint;FileName:String;FileFormat:Byte;nQuality
    :LongIng):Smallint;
```

# @ Argument

PortNo:

Port number is the zero index of the Angelo series card. For example, if there are two PCI-RTV-24 Angelo cards (card 0, card 1) in the system, and each PCI-RTV-24 has four ports, the first port of card 0 is “0”, and the first port of card 1 is “4.”

Dest\_Address:

User allocated destination memory address or array.

Start\_Address:

Memory start address of the video frame.

Width:

Image width.

Height:

Image height.

Size\_Byte:

Memory size in bytes.

FileName:

File name to save to. Remember to add the file extension name.

FileFormat:

File format to save to.

 0: TIF

 1: BMP

 2: JPEG

nQuality:

This parameter in used only for the JPEG file format.

# @ Return Code

 0: ERROR\_NoError
 -7: ERROR\_Not\_Initialized – Make sure the port has been initialized by “AngeloRTV\_Initial”.
 -9: ERROR\_Invalid\_PortNo – Please input a correct “PortNo” parameter.

# @ Example

&lt;VC/BCB &gt;

AngeloRTV\_Copy\_Frame

I16 Result;

U16 PortNo = 0;

```c
U32 Size_Byte = 640*480*3;
U8* Dest_Address = NULL;
Dest_Address = (U8*)malloc(Size_Byte);
Result = AngeloRTV_Copy_Frame(PortNo,
    Dest_Address, Size_Byte);
```
AngeloRTV\_Get\_Frame

```txt
I16 Result;
U16 PortNo = 0;
U32 Size_Byte, Width, Height;
U32 StrAddr;
Result = AngeloRTV_Get_Frame(PortNo, &StrAddr, &Width, &Height, &Size_Byte);
```
AngeloRTV\_Save\_File

```txt
I16 Result;
U16 PortNo = 0;
U8 File_Format = 2;
U32 nQuality = 25;
Result = AngeloRTV_Save_File(PortNo, "Image.jpg", File_Format, nQuality);
```
&lt; Visual Basic &gt;

AngeloRTV\_Copy\_Frame
```txt
Dim Result As Integer
Dim PortNo As Integer
Dim Size_Byte As Long
Dest_Address( ) As Byte
PortNo = 0
Size_Byte =640*480*3
ReDim Dest_Address(0 To Size_Byte - 1) As Byte
Result = AngeloRTV_Copy_Frame (PortNo,
    Dest_Address(0), Size_Byte);
```
AngeloRTV\_Get\_Frame

```txt
Dim Result As Integer
Dim PortNo As Integer
Dim Size_Byte As Long
Dim StrAddr As Long
Dim Width as Long, Height As Long
PortNo = 0
Result = AngeloRTV_Get_Frame(ByVal PortNo,
    Str_Add, Width, Height, Size_Byte)
```
AngeloRTV\_Save\_File

```txt
Dim Result As Integer
Dim File_Format as Byte
Dim nQuality as Long
```

```txt
PortNo = 0
File_Format = 2
NQuality = 25
Result = AngeloRTV_Save_File (PortNo, "Image.jpg", File_Format, NQuality)
```
&lt;Delphi &gt;

AngeloRTV\_Copy\_Frame
```txt
Var
Result : SmallInt;
PortNo: SmallInt;
Size_Byte :Longint;
Dest_Add : array of Byte;
PortNo := 0;
Size_Byte := 640*480*3;
SetLength(Dest_Add, Size_Byte);
Result := AngeloRTV_Copy_Frame (PortNo,
    Dest_Add[0], Size_Byte);
```
AngeloRTV\_Get\_Frame

```txt
Var
Result : SmallInt;
PortNo: SmallInt;
Size_Byte : LongIng;
Width :LongIng;
Height :LongIng;
Str_Add :Pointer;
PortNo:=0;
Result :=AngeloRTV_Get_Frame(PortNo, Str Add, Width, Height, Size_Byte);
```
AngeloRTV\_Save\_File

```txt
Var
Result : SmallInt;
PortNo: SmallInt;
File_Format : Byte;
NQuality :LongInt;
PortNo:=0;
File_Format:=2;
Nquality := 25;
Result := AngeloRTV_Save_File (PortNo, 'Image.jpg', File_Format, Nquality)
```

# 5.11 Angel RTV LabVIEW Function Library

# AngeloRTV\_Init.vi

This VI initializes the port of RTV card. Set video format and color format for the port of RTV card. Call this VI before AngeloRTV\_Snap.vi.

# Video Format

 0: Full NTSC (640\*480)
 1: Full PAL (768\*576)
 2: CIF NTSC (320\*240)
 3: CIF PAL (384\*288)
 4: QCIF NTSC (160\*120)
 5: QCIF PAL (192\*144)

# Color Format

 0: RGB16
 1: GRAY
 2: RGB15
 3: RGB24
 4: RGB32
 5: RGB8
 6: RAW8X
 7: YUY2 4:2:2
 8: BtYUV 4:1:1

# AngeloRTV\_Snap.vi

Obtain an image and output the image data for picture control.

# AngeloRTV\_Close.vi

Release resources of all ports.

# AngeloRTV\_Software\_Reset.vi

Reset the port to its initial state.

# AngeloRTV\_Hardware\_Initial.vi

This VI initializes the port of RTV card. Each application program must call this function before any other function. If the initialization succeeds, it returns a value 0.

# AngeloRTV\_Hardware\_Close.vi

Release resources of all ports.

# AngeloRTV\_Int\_Enable.vi

This VI links the event and the interrupt automatically.

# AngeloRTV\_Wait\_Int.vi

Wait for interrupt events. You can get a complete image data from the image buffer after this VI returns correctly.

# AngeloRTV\_Set\_Video\_Format.vi

Set the Video format for the port of RTV card. Valid color formats are: NTSC, EIA, PAL, CCIR.

# AngeloRTV\_Get\_Video\_Format.vi

Retrieve the video format of the port.

# AngeloRTV\_Set\_Color\_Format.vi

Set the color format for the port of RTV card. Valid color format are: gray scale, RGB, YUV.

Color Format:

<table><tr><td>▷ RGB16</td><td>= 0</td></tr><tr><td>▷ GRAY</td><td>= 1</td></tr><tr><td>▷ RGB15</td><td>= 2</td></tr><tr><td>▷ RGB24</td><td>= 3</td></tr><tr><td>▷ RGB32</td><td>= 4</td></tr><tr><td>▷ RGB8</td><td>= 5</td></tr></table>

# AngeloRTV\_Get\_Color\_Format.vi

Retrieve the color format of the port

# AngeloRTV\_Set\_Image\_Config.vi

Adjust hue, contrast, saturation and brightness for the port of RTV card.

# ConfigIndex:

 0 for BRIGHTNESS
 1 for HUE
 2 for SATURATION (U)
 3 for SATURATION (V)
 4 for CONTRAST (LUMA)
 5 for luma notch filter (for monochrome video, the notch filter should not be used)
 6 for Gamma Correction Removal

<table><tr><td></td><td>Range</td><td>Default Value</td></tr><tr><td>BRIGHTNESS</td><td>0 to 255</td><td>128</td></tr><tr><td>HUE</td><td>0 to 255</td><td>0</td></tr><tr><td>CHROMA (U)</td><td>0 to 255</td><td>127</td></tr><tr><td>CHROMA (V)</td><td>0 to 255</td><td>127</td></tr><tr><td>LUMA</td><td>0 to 255</td><td>112</td></tr><tr><td>LUMA notch filter</td><td colspan="2">0(Enable) or 1(Disable)</td></tr></table>

# AngeloRTV\_Get\_Image\_Config.vi

Retrieve current hue, contrast, saturation and brightness of the port.

# AngeloRTV\_Set\_Image\_Geometric.vi

This VI is used for image cropping and scaling.

# X\_Scale

This parameter is the scaling factor applied to the RTV sampled line to obtain pixels according to the resolution.

# X\_Active

This parameter is the length of the active video line.

# X\_Offset

This parameter is the number of scaled pixels to skip before the start of the active video line.

# Y\_Scale

This parameter is the scaling factor applied to the RTV sampled data lines in the vertical direction. It must be the following values: 1.0, 0.5, 0.25.

# Y\_Active

This parameter is the height (in lines) of the active video image.

# Y\_Offset

This parameter is the number of lines to skip before the first line of the active video image.

# AngeloRTV\_Select\_Channel.vi

RTV card is capable of channel extension. This VI is used to multiplex video signals for ports. In most cases, this VI is not required because the default setting is one port dedicated to one channel.

Note: Do not call this VI if there is no channel extension board in the system.

# AngeloRTV\_Capture\_Config.vi

Set the starting field of image, only for Full size image (Video format = 0 or 1)

# Start\_Filed

Indicate the first field of image.

 0: First field is odd, so the image will be odd field + even field.
 1: First field is even, so the image will be even field + odd field.
 2: First field depends on the current field, so the image will be even field + odd field or odd field + even field.
 3: Single field frame, used for moving object inspection.

# AngeloRTV\_Capture\_Start.vi

Start to grab video images. If the "CaptureNumber" is 0xFFFFFFFF, the frame grabbing will not stop until the "AngeloRTV\_Capture\_Stop.vi" is called.

# AngeloRTV\_Capture\_Stop.vi

Stop grabbing video images.

# AngeloRTV\_Trigger\_Start.vi

Generate a one shot pulse output for single or multiple ports.

# Multiplex

Indicate the trigger output ports on the RTV card.

 Bit 0: Port 0 on each card. 0 for disable, 1 for enable.
 Bit 1: Port 1 on each card. 0 for disable, 1 for enable.
 Bit 2: Port 2 on each card. 0 for disable, 1 for enable.
 Bit 3: Port 3 on each card. 0 for disable, 1 for enable.

# AngeloRTV\_Trigger\_Config.vi

Configure the pulse output interval.

# Interval

Indicates the trigger output interval. The valid range is from 0 to 253. The definition is as follows:

 0: 16 ms
 32: 12 ms
 128: 8 ms
 253: 60μs

# AngeloRTV\_Sync\_Grab.vi

Use this VI to obtain an image frame. Retrieve the memory start address from the frame data, width, height, and size in bytes of the image.

# AngeloRTV\_Get\_Frame.vi

Retrieve the memory start address from the frame data, width, height, and size in bytes of the image.

# AngeloRTV\_Copy\_Frame.vi

Copy frame data to memory or an array that the user allocates. Before using this VI, remember to allocate enough memory space or array elements.

# AngeloRTV\_Set\_GPIO\_Sts.vi

There is one digital output channel in each port of RTV card. Use this VI to set digital output status.

1.

# AngeloRTV\_Get\_GPIO\_Sts.vi

There is one digital input channel in each port of RTV card. Use this VI to get the digital input status.

# AngeloRTV\_Write\_EEPROM.vi

Write data into EEPROM. Data in EEPROM will not be lost when power off.

# Offset

This parameter is valid between 0 and 127

# Value

Value in byte. This parameter is valid between 0 and 255.

# AngeloRTV\_Read\_EEPROM.vi

Read data from EEPROM. Data in EEPROM will not be lost when power off.

# Offset:

This parameter is valid between 0 and 127

# Value:

Value in byte. This parameter is valid between 0 and 255.

# AngeloRTV\_Read\_Serial.vi

This VI can read a 48-bit unique ID and store in 2 long integers.

# HighByte

HighByte stores the upper 16-bit of Serial No.

# LowByte

LowByte stores the lower 32-bit of Serial No.

# AngeloRTV\_Save\_File.vi

Save the current video frame into an image file (TIF, BMP, or JPEG). Quality is used only for JPEGs.

# FileFormat

 0: TIF
 1: BMP
 2: JPEG

# 6 Programming Guide

# 6.1 DirectShow Programming Guide

# Introduction

A complete documentation on DirectShow application programming can be found at:

http://msdn.microsoft.com/library/default.asp?url=/library/enus/directx9\_c/directX/htm/introductiontodirectshow.asp.

If a DirectX 9.0 is installed, this documentation is also available from DirectX SDK Help.

The main goal of writing a DirectShow Application is to build a filter graph by connecting several filters together to perform a given task such as previewing video/audio, capturing video/audio and multiplexing them to write into a file. Each filter performs a single operation and pass data from its output pin to the input pin of the next filter in the graph.

To build a capture graph using a program, the first thing is to obtain the interface pointer of the capture filter. The ADLink Bt878 Video Capture filter can be obtained through system device enumerator. After holding an interface pointer to the capture filter object, use method IGraphBuilder::AddSourceFilter to add the source filter object to the filter graph. Use IFilterGraph::AddFilter to add other downstream filters to the filter graph. After filters are added, call IFilterGraph::ConnectDirect or IGraph-Builder::Connect methods to connect output pins from upstream filters to the input pins of the downstream filters. Calling methods IMediaControl::Run, IMediaControl::Pause or IMediaControl::Stop will change filter state to running, paused or stopped.

The filters that are needed for capturing video streams are listed in next section, with detailed information for each filter and its pins. Example filter graphs for previewing/capturing video streams are also illustrated in this chapter and gives examples of two ways of controlling device driver.

# Descriptions of Filters

This section lists filters needed to build a filter graph for capturing video stream and previewing video stream.

# Source Filter

# ADLink Bt878 Video Capture

ADLink Bt878 Video Capture Filter belongs to the category of WDM Streaming Capture Devices. It is actually a kernel-mode KsProxy plug-in. An application can treat it simply as a filter. Use System Device Enumerator to add this filter to a filter graph.

<table><tr><td>Filter Name</td><td>ADLink Bt878 Video Capture</td></tr><tr><td>Filter CLSID</td><td>Not applicable.</td></tr><tr><td>Filter Category Name</td><td>WDM Streaming Capture Devices</td></tr><tr><td>Filter Category</td><td>AM_KSCATEGORY_CAPTURE</td></tr><tr><td>Video Capture Pin Supported Media Types</td><td>MEDIATYPE_Video Subtypes:► MEDIASUBTYPE_YUY2► MEDIASUBTYPE_YVU9► MEDIASUBTYPE_UYVY► MEDIASUBTYPE_YV12► MEDIASUBTYPE_I420► MEDIASUBTYPE_Y41P► MEDIASUBTYPE_RGB24► MEDIASUBTYPE_RBG32► MEDIASUBTYPE_RBG565► MEDIASUBTYPE_RBG555</td></tr><tr><td>Video Preview Pin Supported Media Types</td><td>MEDIATYPE_Video Subtypes:► MEDIASUBTYPE_YUY2► MEDIASUBTYPE_YVU9► MEDIASUBTYPE_UYVY► MEDIASUBTYPE_YV12► MEDIASUBTYPE_I420► MEDIASUBTYPE_Y41P► MEDIASUBTYPE_RGB24► MEDIASUBTYPE_RBG32► MEDIASUBTYPE_RBG 565► MEDIASUBTYPE_RBG555</td></tr><tr><td>Merit</td><td>MERIT_DO_NOT_USE</td></tr></table>

# CrossBar Filter

If the device is a capture board, a CrossBar filter is needed for switching video source. In hardware design, crossbar can switch channel input of same port.

<table><tr><td>Filter Name</td><td>ADLink Bt878 CrossBar</td></tr><tr><td>Filter Category Name</td><td>WDM_Streaming Crossbar Devices</td></tr></table>

# Example Graphs

The Microsoft DirectX SDK provides a very useful debugging utility called GraphEdit, which can be used to simulate graph building. From the Graph menu of the GraphEdit application, click Insert Filters… and choose the desired filters. Filters are organized by categories. Click Insert Filter button to add the filters to a graph. Then connect two filters’ pins by dragging mouse from one filter’s output pin to another filter’s input pin. An arrow will be drawn if these two pins agree on the connection.

After inserting ADLink Bt878 Video Capture filter and ADLink Bt878 Crossbar filter, right click on the rectangle and click Filter Properties…. The filter properties dialogue will appear. Use the property pages to set video settings before connecting video pins to other filters. The property pages are shown below:

# ADLink Bt878 Video Capture filter:

Video Decoder:

![ADLINK Bt878 Video Capture Properties\nVideo Decoder | Video Proc Amp | Capture | Preview | VBI | Analog Video In |\nVideo Standard: NTSC_M\nSignal Detected: 1\nLines detected: 525\n□ VCR Input\n□ Output Enable\nOK    Cancel    Apply    Help](.rtvseries-50-1r001-1010-203/39e7cf954f0e3b8cbcf4934aaca0b1bbf273eee764c947c787ecf84fe4cb54f2.jpg)

Video Proc Amp:
![ADLINK Bt878 Video Capture Properties\nVideo Decoder | Video Proc Amp | Capture | Preview | VBI | Analog Video In |\nBrightness ———— 750\nContrast ———— 100\nHue ———— 0\nSaturation ———— 100 ✓\nSharpness ———— 50 ✓\nGamma ———— 1 ✓\nWhite Balance ———— 0\nBacklight Comp ———— 1\nColorEnable ✓ Default Auto\nOK Cancel Apply Help](.rtvseries-50-1r001-1010-203/ec7a0b2639a76658c41771fe40fb12020dd8a338de3e5e47e1f582f660e82f6c.jpg)

ADLink Bt878 Crossbar filter:
![ADLINK Bt878 Crossbar Properties\n2: Video Composite In\n3: Video Composite In\n0: Video Decoder Out\n1: Audio Decoder Out\nCrossbar\n0: Video Composite In\n1: Video Composite In\nInput\n1: Video Composite In\nCurrent Input:\n1: Video Composite In\nRelated Pin:\n0: Video Composite In\nLink Related Streams\nOutput\n0: Video Decoder Out\nRelated Pin:\n1: Audio Decoder Out\nOK	Close	Apply	Help](.rtvseries-50-1r001-1010-203/38c21393769cd3cd1812ba11b97cdb82e5979f1bd04ad049e943f4abbbb6e803.jpg)

Select video input before or during video previewing.

# Example Graph

![Preview.GRF - GraphEdit\nFile Edit View Graph Favorites Options Help\nAnalog Video In\nADLINK Bt878 Video Capture\nCapture\nPreview\nVBI\nInput\nVideo Renderer\n0: Video Composite In\n1: Video Composite In\n2: Video Composite In\n3: Video Composite In\n0: Video Decoder Out\nADLINK Bt878 Crossbar\n1: Audio Decoder Out\nReady\nNUM](.rtvseries-50-1r001-1010-203/8efaa143f7a34c9d4f21be4f7ef33a69019109e034d92902c2b8d761b3ef49a2.jpg)

# Controlling Driver

The ADLink Bt878 Video Capture Filter provides property pages and exposes COM interfaces to control video. So an application can have two ways to control video configurations: using the property pages and using the COM interfaces.

# Use Property Pages

There are two embedded property pages in the driver. To show these property pages, use Windows API: OleCreateProperty-Frame.

Documentation about Displaying a Filter’s Property Page can be found on Microsoft MSDN homepage.

Below is the example code for adding property pages:
```c
// pFilter points to the capture filter
ISpecifyPropertyPages *pSpecify;
HRESULT hr;
hr = pFilter-
>QueryInterface(IID_ISpecifyPropertyPages,
(void **) &pSpecify);
if (SUCCEEDED(hr))
{
    FILTER_INFO FilterInfo;
    pFilter->QueryFilterInfo(&FilterInfo);
    FilterInfo.pGraph->Release();
    CAUUID caGUID;
    pSpecify->GetPages(&caGUID);
    pSpecify->Release();
    OleCreatePropertyFrame(
    NULL, // Parent window
    0,    // x (Reserved)
    0,    // y (Reserved)
    FilterInfo.achName, // Caption for the dialog box
    1,    // Number of filters
    (IUnknown **) &m_pFilter, // Pointer to the filter
    caGUID.cElems, // Number of property pages
    caGUID.pElems, // Pointer to property page CLSIDs
    0,    // Locale identifier
    0,    // Reserved
    NULL // Reserved
);
CoTaskMemFree(caGUID.pElems);
}
```

# Use COM interfaces

Use the methods of IAMVideoProvAmp interface of standard DirectShow Interface to get or set the qualities of an incoming video signal.

# ADLink Bt878 Crossbar

The ADLink Bt878 Crossbar filter implements an IAMCrossbar interface. It routes signals from an analog or digital source to a video capture filter.

# Proprietary Interface

# GPIO Access

The GPIO provides a method to read board information, select input channel, and control digital inputs/digital outputs.

# Sample:

```lisp
#define INSTANCE_DATA_OF_PROPERTY_PTR(x)
((PKSPROPERTY((x))) + 1)
```

```c
#define INSTANCE_DATA_OF_PROPERTY_SIZE(x)
( sizeof((x)) - sizeof(KSPROPERTY) )
```

```c
void GPIOWrite(IBaseFilter* pFilter, DWORD value)
/*
Purpose:
    Set the electronic level of the gpio pin.
Parameters:
    pFilter: Interface of BT878 filter
    value: 1 for high level, and 0 for low level
*/
{
    IKsPropertySet *pKs = NULL;
    DWORD TypeSupport = 0;
    KSPROPERTY_CUSTOMBT848_GPIO_S rc;
    HRESULT hr;
    ULONG ret=0;
    DWORD bit = 6; // Offset of GPIO pin
    if (pFilter == NULL)
    return;
    value = value ? 0 : 1; // its phase is inverse
```

```c
if (pFilter-
>QueryInterface(IID_IKsPropertySet, (void
**) &pKs) == S_OK)
{
    hr = pKs-
>QuerySupported(PROPSETID_CUSTOMBT848,
KSPPROPERTY_CUSTOMBT848_GPIO,
&TypeSupport);
if(TypeSupport & KSPPROPERTY_SUPPORT_GET)
{
    ZeroMemory(&rc, sizeof(rc));

    rc.dwOperation=BT848_CUSTPROP_GPIO_SETGPDAT
    ABITS;
    rc.dwFromBit = bit;
    rc.dwToBit = bit;
    rc.dwValue = value;
    rc.dwOffset =0;
    hr = pKs->Get(
    PROPSETID_CUSTOMBT848,
    KSPPROPERTY_CUSTOMBT848_GPIO,
    INSTANCE_DATA_OF_PROPERTY_PTR(&rc),
    INSTANCE_DATA_OF_PROPERTY_SIZE(rc),
    &rc,
    sizeof(rc),
    &ret);
}

pKs->Release();
}

DWORD GPIORead(IBaseFilter* pFilter)
/*
Purpose:
    Get the electronic level of the gpio pin.
Parameters:
    pFilter: Interface of BT878 filter
*/
{
    IKsPropertySet *pKs = NULL;
    DWORD TypeSupport = 0;
    KSPPROPERTY_CUSTOMBT848_GPIO_S rc;
    HRESULT hr;
    ULONG ret=0;
```

```c
DWORD ReturnValue=0;
DWORD bit = 6;// Offset of GPIO pin
    if (pFilter == NULL)
    return 0;
    if (pFilter->
>QueryInterface(IID_IKsPropertySet, (void
**)&pKs) == S_OK)
    {
    hr = pKs-
>QuerySupported(PROPSETID_CUSTOMBT848,
KSPROPERTY_CUSTOMBT848_GPIO,
&TypeSupport);
    if(TypeSupport &
KSPROPERTY_SUPPORT_GET)
    {
    ZeroMemory(&rc,sizeof(rc));
    rc.dwOperation =
    BT848_CUSTPROP_GPIO_GETGPDATABITS;
    rc.dwFromBit = bit;
    rc.dwToBit = bit;
    rc.dwOffset =0;
    hr = pKs->Get(
    PROPSETID_CUSTOMBT848,
    SPROPERTY_CUSTOMBT848_GPIO,
    INSTANCE_DATA_OF_PROPERTY_PTR(&rc),
    INSTANCE_DATA_OF_PROPERTY_SIZE(rc),
    &rc,
    sizeof(rc),
    &ret);
    ReturnValue = rc.dwValue;
    }
pKs->Release();
}
return ReturnValue;
}
```

# EEPROM Access

ADLink Bt878 Video Capture provides a method for accessing I2C register. The interface can store a few data, for example, board identification.

# Sample:

```c
#define INSTANCE_DATA_OF_PROPERTY_PTR(x)
    ( (PKSPROPERTY((x)) ) + 1 )
#define INSTANCE_DATA_OF_PROPERTY_SIZE(x)
    ( sizeof((x)) - sizeof(KSPROPERTY) )
BYTE EEPROMRead(IBaseFilter *pFilter, BYTE offset)
/*
Purpose:
    Read.the value stored in EEPROM
Parameters:
    pFilter: Interface of BT878 filter
    offset: the offset (0~127) based on starting address of EEPROM
*/
{
    IKsPropertySet *pKs = NULL;
    DWORD TypeSupport = 0;
    KSPROPERTY_CUSTOMBT848_I2C_S I2C;
    BYTE uAddress;
    HRESULT hr;
    ULONG ret=0;

    if(pFilter == NULL)
    return 0;

    if((hr=pFilter->QueryInterface(IID_IKsPropertySet, (void **) &pKs)) == S_OK)
    {
    hr = pKs->QuerySupported(PROPSETID_CUSTOMBT848,
    KSPROPERTY_CUSTOMBT848_I2C,
    &TypeSupport);
    if(TypeSupport & KSPROPERTY_SUPPORT_GET)
```

```c
{
    uAddress = 0xa0; // address for the EEPROM device
    // Set frequency first
    ZeroMemory(&I2C, sizeof(I2C));
    I2C.bDontWaitACK = true;
    I2C.dwOperation =
    BT848_CUSTPROP_I2C_SETFREQ;
    I2C.dwFreq = 100000;
    hr = pKs->Get(
    PROPSETID_CUSTOMBT848,
    KSPPROPERTY_CUSTOMBT848_I2C,
    INSTANCE_DATA_OF_PROPERTY_PTR(&I2C),
    INSTANCE_DATA_OF_PROPERTY_SIZE(I2C),
    &I2C,
    sizeof(I2C),
    &ret);
    // Read value then

    I2C.dwOperation=BT848_CUSTPROP_I2C_R3;
    I2C.ucAddress= uAddress;
    I2C.ucInBuf[0] = offset;
    I2C.dwOutLen = 0;
    I2C.dwInLen = 1;
    I2C.bDontWaitACK = TRUE;
    hr = pKs->Get(
    PROPSETID_CUSTOMBT848,
    KSPPROPERTY_CUSTOMBT848_I2C,
    INSTANCE_DATA_OF_PROPERTY_PTR(&I2C),
    INSTANCE_DATA_OF_PROPERTY_SIZE(I2C),
    &I2C,
    sizeof(I2C),
    &ret);
    }
    pKs->Release();
}
return I2C.ucInBuf[1];
}
```

```c
void EEPROMWrite(IBaseFilter *pFilter, BYTE offset, BYTE value)
/*
Purpose:
    Write.the value to EEPROM
Parameters:
    pFilter: Interface of BT878 filter
    offset: the offset (0~127) based on starting address of EEPROM
    value: the data to EEPROM
*/
{
    IKsPropertySet *pKs = NULL;
    DWORD TypeSupport = 0;
    KSPROPERTY_CUSTOMBT848_I2C_S I2C;
    BYTE uAddress;
    HRESULT hr;
    ULONG ret=0;

    if(pFilter == NULL)
    return;

    if((hr=pFilter->QueryInterface(IID_IKsPropertySet, (void **) &pKs)) == S_OK)
    {
    hr = pKs->QuerySupported(PROPSETID_CUSTOMBT848,
    KSPROPERTY_CUSTOMBT848_I2C,
    &TypeSupport);
    if(TypeSupport & KSPROPERTY_SUPPORT_GET)
    {
    uAddress = 0xa0; // address for the EEPROM device
    // Set frequency first
    ZeroMemory(&I2C,sizeof(I2C));
    I2C.bDontWaitACK = true;
    I2C.dwOperation =
    BT848_CUSTPROP_I2C_SETFREQ;
    I2C.dwFreq = 100000;
```

```txt
hr = pKs->Get(
    PROPSETID_CUSTOMBT848,
    KSPROPERTY_CUSTOMBT848_I2C,
    INSTANCE_DATA_OF_PROPERTY_PTR(&I2C),
    INSTANCE_DATA_OF_PROPERTY_SIZE(I2C),
    &I2C,
    sizeof(I2C),
    &ret);
    // Write value then

    I2C.dwOperation=BT848_CUSTPROP_I2C_WR;
    I2C.ucAddress=uAddress;
    I2C.ucOutBuf[0] = offset;
    I2C.ucOutBuf[1] = value;
    I2C.dwOutLen = 2;
    I2C.dwInLen = 0;
    I2C.bDontWaitACK = TRUE;
    hr = pKs->Get(
    PROPSETID_CUSTOMBT848,
    KSPROPERTY_CUSTOMBT848_I2C,
    INSTANCE_DATA_OF_PROPERTY_PTR(&I2C),
    INSTANCE_DATA_OF_PROPERTY_SIZE(I2C),
    &I2C,
    sizeof(I2C),
    &ret);
    }
    pKs->Release();
}
```

# Build Environment Settings

# Include Files

All applications need include the file shown in the following table.

<table><tr><td>Include File</td><td>Description</td></tr><tr><td>DShow.h</td><td>The header file is required for all C++ applications.</td></tr><tr><td>Custprop.h</td><td>The header file is required for all C++ applications.</td></tr><tr><td>Bt848guid.h</td><td>The header file is required for all C++ applications which need access BT878 proprietary interfaces, for instance, EEPROM and GPIO.</td></tr><tr><td>Bt878.cs</td><td>The class definition is required for all C# applications.</td></tr></table>

# Library File

All applications need the library file shown in the following table.

<table><tr><td>Library File</td><td>Description</td></tr><tr><td>Strmiids.lib</td><td>Exports class identifiers (CLSIDs) and interface identifiers (IIDs). All C++ applications require this library.</td></tr><tr><td>Quartz.lib</td><td>Exports the AMGetErrorText function. If you do not call this function, this library is not required.</td></tr><tr><td>DirectShowLib-2005.dll</td><td>The class library is required for all Microsoft .Net applications.</td></tr></table>

# Microsoft Visual C++ Users

VC++ users need to setup the builder environment prior to start to build your program. There are few steps you need to follow as below:

1. Open the solution file (baseclasses.sln) or the project file (baseclasses.dsw) under %DXSDK%\Samples\C++\DirectShow\BaseClasses and build it.

In above, %DXSDK% is the path of DirectX SDK.

2. Add the paths to the include directory in the settings of your project:

%DXSDK%\include

%DXSDK%\Samples\C++\DirectShow\BaseClasses

3. Add the paths to the additional library directory in the settings of your project:

%DXSDK%\Lib

%DXSDK%\Samples\C++\DirectShow\BaseClasses\Release

# .Net Programming Users

Microsoft DirectShow only provides C++ programming. As for .net users, they need convert DirectShow COM objects to .net class. Fortunately, the work had been done as a sourceforge project. Download the source codes and samples from

http://sourceforge.net/projects/directshownet/. It is a good start to program your DirectShow codes by .net languages. We also provided samples dedicated to RTV cards in the installation directory.

# 6.2 LabVIEW Programming Guide

# ADLINK\_Vision Controls/Functions Palettes

To use RTV-LVIEW VIs, you have to switch the Controls/Functions palettes to the ADLINK\_Vision palette view first. In Lab-VIEW 7.0, select Tools>>Options to display the Options dialog box. Select Controls/Functions Palettes from the top pull-down menu in the Options dialog box, and select ADLINK\_Vision from the Palette View pull-down menu.

![Options\nControls/Functions Palettes\nPalette View\nADLINK_Vision\nFormat\nStandard\nNavigation Buttons\nLabel Selected Icons\nPalette Loading\nLoad palettes in background\nLoad palettes when needed\nLoad palettes during launch\nUse Window Titles in Functions palette\nAllow search in temporary palette\nTo customize a palette view, exit this dialog box and select\nTools»Advanced»Edit Palette Views\nOK	Cancel	Help](.rtvseries-50-1r001-1010-203/cfa7792643ee5c82aedeebdf4de09bf5e1f96ba0b5873b595545335554565b2d.jpg)

Click OK button. Then ADLINK Vision icon is shown in the Functions palette.

![Fun...\nSearch\n120\nabc\n112\n34\nVIEW](.rtvseries-50-1r001-1010-203/a5d1ed8a11f9f7592ba591cbad398d8fe5349e4032029680ac28c74b42f8710b.jpg)

Click ADLINK Vision icon to display the ADLINK\_Vision palette view. Then click the AngeloRTV icon, you can find RTV-LVIEW VIs.

![ADLINK ...\nSearch\nANGELD](.rtvseries-50-1r001-1010-203/33ea584bcc849423a26076ebb785f98b7244fa1fc8e3355f6dadb157c05b2f5d.jpg)

![AngeloRTV\nSearch\nINIT\nSNAP\nCLOSE\nINITIAL\nSTART CAPTURE\nSET EVENT\nSET FORMAT\nSET COLOR\nSET IMAGE\nCLOSE\nSTOP CAPTURE\nGET STATUS\nGET FORMAT\nGET COLOR\nGET IMAGE\nSELECT CHANNEL\nCONFIG CAPTURE\nSync\nGET FRAME\nCOPY FRAME\nSAVE FILE\nRESET\nX/Y SCALE\nSET GPIO.STS\nGET GPIO.STS\nWRITE EEPROM\nREAD EEPROM\nREAD SERIAL\nTRIGGER START\nTRIGGER CONFIG](.rtvseries-50-1r001-1010-203/91306cdd33744d3aeb248ae6b2404981fb23bba5c6755dfc26b80fc33e071957.jpg)

In LabVIEW 6, click the Options button on the Functions palette toolbar to display the Function Browser Options dialog box.

![Functions\n123\nTf\nabc\na B\nR 1 2\n0 3 4\nt o Δt\nΣ\n∫\nlog\nlog\nlog\nlog\nlog](.rtvseries-50-1r001-1010-203/2027a5ff76c52b5b77bca8752977bdb70b33f71846f22a259349a0a0f943fad0.jpg)

Select ADLINK\_Vision from the Palette Set pull-down menu and click OK button.

![Function Browser Options\nPalette Set\nADLINK_Vision\nFormat\nStandard\nOK	Edit Palettes...	Cancel](.rtvseries-50-1r001-1010-203/64664bfd2bb0ec6367670a0693495132ae2abef1f095d93e68cb210e34e10627.jpg)

Then you can see the ADLINK\_Vision Functions Palette as below.

![Functions\n123\nT F\nabc\n8 1 2\n0 3 4\na b\nv\nt t\nΣ\n1:1\nV\nVISION](.rtvseries-50-1r001-1010-203/8b9ce92169d9f1cf03b18cc7b86e436a82b3aeb2cd3469c025036d03fadcc2e3.jpg)

# How-to Program with RTV-LVIEW

Here we provide a simplest sample showing how to capture a frame with RTV-LVIEW VI. For more complicated samples with RTV-LVIEW, you can reference those located in the

C:\Program Files\ADLINK\RTV-LVIEW\Samples folder.

1. Open a blank VI and switch to the block diagram. Drag and drop AngeloRTV\_Init.vi, AngeloRTV\_Snap.vi, and AngeloRTV\_Close.vi on the block diagram.

![Untitled 1 Block Diagram\nFile Edit Operate Tools Browse Window Help\nList Application Font\nFunctions\nSearch\nACON: Vision\nAutoCAD Vision\nAngelRTV\nAngelRTV\nstart\nACON: Vision\nUntitled 1 Block Diagram\nUntitled 1 Front Panel\n2.27 PM](.rtvseries-50-1r001-1010-203/003256531e5fcdae2bb40221d571b58f22000f1af6696d36cf9a605a15b07e15.jpg)

![Untitled 1 Block Diagram *\nFile Edit Operate Tools Browse Window Help\n12pt Application Font\nINIT SNAP CLOSE](.rtvseries-50-1r001-1010-203/fac2180842f3f955375a515762b717922686bba476e75ab3b41b22c0387122dd.jpg)

2. Create Constant or Control to each input and connect these VIs. In order to show the captured frame on the front panel, we also drag and drop another VI provided by LabVIEW, named Draw Flattened Pixmap.vi.

![The block diagram features a linear sequence of operations with some inputs:\n\n**Labeled Blocks:**\n*   Four terminal blocks on the far left, stacked vertically and labeled '0', '3', '3', and '0'.\n*   A block labeled 'INIT' (with a cup icon).\n*   A block labeled 'SNAP' (with a camera icon).\n*   A small block labeled '0' (a numeric constant).\n*   A block with a hand icon pointing at a screen (no text label).\n*   A block labeled 'picture' (with an image icon).\n*   A block labeled 'CLOSE' (with an arrow icon).\n\n**Connections:**\n*   The four terminal blocks ('0', '3', '3', '0') connect to the four inputs of the 'INIT' block.\n*   The 'INIT' block connects to the 'SNAP' block.\n*   The 'SNAP' block connects to the hand-icon block.\n*   The '0' block connects to the hand-icon block.\n*   The hand-icon block connects to the 'picture' block.\n*   The 'picture' block connects to the 'CLOSE' block.](.rtvseries-50-1r001-1010-203/63336a50c5f976c156f09d8d9aba4847cdc6f410e10dc9e2a9fdf781a7898f1d.jpg)

3. Push the upper left Run button and you can see a captured frame on the front panel.

![Untitled 1 Front Panel *\nFile Edit Operate Tools Browse Window Help\n12pt Application Font\npicture\nPCIe-RTV24 / PCI-RTV24\n4-CH PCI Express® / PCI Real-time Video Capture Cards for Stand\nIntroduction\nGeneral\nThe PCIe RTV24/PCI RTV24 application based on digital video surveillance applications. They are the real device to PCi is used in the PCi system. The PCIe RTV24 PCI Express® of new home graphics can be used in real time. It is not standard computer colors (RGB, RGB, etc.) or any other type of device. The supported resolution is programmable and circular parts are resolved. Before captured images are conditional in the PCI 100% accessible format.\nAdvanced sensing in region of space a preview. The PCIe RTV24 features both in PCB, via phone, or socket.\nSystem integrators also benefit from a mapping to the screen content.\nAnalog Amplification\nFrame Size: 10x8 mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10mm x 10m\nFeatures\nPCI Express® all complexes (PCIe RTV24), up to 135 fps\nFree video digits operating to preview\nPCIe RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV24\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI-RTV26\nPCI Express® all complexes (PCIe RTV24), up to 135 fps\nFree video digits operating to preview](.rtvseries-50-1r001-1010-203/a4d2da75c9afce1e096eed4a562696b9a8b5284fed412625cfa5979eb2359adb.jpg)

# Get Help of RTV-LVIEW

You can display the Context Help window by selecting Help>>Show Context Help. LabVIEW will show the information of the RTV-LVIEW VI when you move the cursor over it.

![Context Help\nPortNo — SNAP — image data\nError_In — Error_Out\nAngeloRTV_Snap.vi\nGets an image and creates the data necessary for\nthe image to be displayed in a picture control.](.rtvseries-50-1r001-1010-203/a8a37db9af510b8b3116fc13fabf322e57750541ded3d20cc7105e57a94dae11.jpg)

# 6.3 Linux Programming Guide

# Introduction

Video4 Linux or V4L is intended to provide a standard video capture application programming interface on Linux. V4L is in its second version. V4L2 driver include a compatibility mode for V4L1 application that is V4L application can mix the two modes of V4L1 and V4L2.

A complete documentation on V4L application programming can be found at:

http:// www.linuxtv.org/downloads/video4linux/API/V4L2\_API/

The document gives a very detailed description of all APIs. Familiar with it will great help you in writing your video capturing application.

# A simple sample

In this chapter, we provide a simple sample as how to program RTV cards.

# Open device

The first step is to open a RTV device with open (). The first parameter in it is device name which can be listed under directory /dev with a prefix name ‘video’ and a number appending to it. There will be same number of such files as how many devices your system has.

```c
static char dev_name[] = "/dev/video0"; // Open the first device
int open_device (void)
{
    int fd;
    fd = open (dev_name, O_RDWR | O_NONBLOCK, 0);
    if (-1 == fd) {
    fprintf(stderr, "Cannot open '%s':
    %d, %s\n", dev_name, errno,
    strerror(errno));
    return -1; // Failed
    }
    return fd; // Success
}
```

# Close device

Close the device with close () if you no longer use this device.

Close ( fd);

# IO control

IO control is a technology communication with driver. V4L sets up many standard IO controls which control video parameters to or get information from driver. Here we give you an example of simple settings.

```c
void init_device (void)
{
    struct v4l2_capability cap;
    struct v4l2_cropcap cropcap;
    struct v4l2_crop crop;
    struct v4l2_format fmt
    v4l2_std_id std = V4L2_STD_NTSC_M;

    if (-1 == ioctl (fd, VIDIOC_QUERYCAP, &cap))
    {
    if (EINVAL == errno) {
    fprintf (stderr, "%s is no V4L2 device\n", dev_name);
    exit (EXIT_FAILURE);
    } else {
    exit (EXIT_FAILURE);
    }
    }
    if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
    fprintf (stderr, "%s is no video capture device\n", dev_name);
    exit (EXIT_FAILURE);
    }
    if (!(cap.capabilities & V4L2_CAP_STREAMING)) {
    fprintf (stderr, "%s does not support streaming i/o\n", dev_name);
    exit (EXIT_FAILURE);
    }
    /* Select video input, video standard and tune here. */
    if (-1 == ioctl (fd, VIDIOC_S_STD, &std)) {
```

```c
exit (EXIT_FAILURE);
}
/* Change to the default channel */
int channel = 0;
if (-1 == ioctl (fd, VIDIOC_S_INPUT, &channel)) {
    exit (EXIT_FAILURE);
}
memset (&cropcap, 0, sizeof (cropcap));
cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

if (0 == ioctl (fd, VIDIOC_CROPCAP, &cropcap)) {
    crop.type =
    V4L2_BUF_TYPE_VIDEO_CAPTURE;
    crop.c = cropcap.defrect; /* reset to default */
    if (-1 == ioctl (fd, VIDIOC_S_CROP, &crop)) {
    switch (errno) {
    case EINVAL:
    /* Cropping not supported */
    break;
    default:
    /* Errors ignored. */
    break;
    }
    }
} else {
    /* Errors ignored. */
}

memset (&fmt, 0, sizeof (fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 240;
fmt.fmt.pix CoverFormat = V4L2_PIX_FMT_BGR24;
fmt.fmt.pix.field = V4L2_FIELD_ALTERNATE; // per field (odd and even)
if (-1 == ioctl (fd, VIDIOC_S_FMT, &fmt))
    exit (EXIT_FAILURE);
}
```

# Memory map

Memory map system call, mmap (), allows the mapping of device memory directly into a user processor’s address space. From device viewpoint, Direct Memory Access (DMA) operations provide peripherals with direct access to system memory without CPU processing. This can save large of time and loading that application or driver doesn’t need to move data from devices to system memory. Here we give and example showing how to set 4 buffer queues which store video data in turn.

```c
/* global variables */
struct buffer {
    void *start;
    size_t length;
};
struct buffer *buffers = NULL;
static unsigned int n_buffers = 0;

void init_mmap(void)
{
    struct v4l2_requestbuffers req;
    memset (&req, 0, sizeof (reg));
    req.count = 4;
    req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    req.memory = V4L2_MEMORY_MMAP;
    if (-1 == ioctl (fd, VIDIOC_REQBUFS, &req))
    {
    if (EINVAL == errno) {
    fprintf (stderr, "%s does not support " "memory mapping\n", dev_name);
    exit (EXIT_FAILURE);
    } else {
    exit (EXIT_FAILURE);
    }
    }
    if (req.count < 2) {
    fprintf (stderr, "Insufficient buffer memory on %s\n", dev_name);
    exit (EXIT_FAILURE);
    }
    buffers = calloc (req.count, sizeof (*buffers));
```

```c
if (!buffers) {
    fprintf (stderr, "Out of memory\n");
    exit (EXIT_FAILURE);
}

for (n_buffers = 0; n_buffers < req.count;
    ++n_buffers) {
    struct v4l2_buffer buf;
    memset (&buf, o, sizeof (buf));
    buf.type =
    V4L2_BUF_TYPE_VIDEO_CAPTURE;
    buf.memory = V4L2_MEMORY_MMAP;
    buf.index = n_buffers;
    if (-1 == ioctl (fd, VIDIOC_QUERYBUF, &buf))
    exit (EXIT_FAILURE);
    buffers[n_buffers].length =
    buf.length;
    buffers[n_buffers].start =
    mmap (NULL /* start anywhere */
    buf.length,
    PROT_READ | PROT_WRITE /* required */
    MAP_SHARED /* recommended */
    fd, buf.m.offset);
    if (MAP_FAILED == buffers[n_buffers].start)
    exit (EXIT_FAILURE);
}
```

Start capturing
```c
void start_capturing (void)
{
    unsigned int i;
    enum v4l2_buf_type type;
    for (i = 0; i < n_buffers; ++i) {
    struct v4l2_buffer buf;
    memset (&buf, 0, sizeof (buf));
    buf.type =
    V4L2_BUF_TYPE_VIDEO_CAPTURE;
    buf.memory = V4L2_MEMORY_MMAP;
    buf.index = i;
    if (-1 == ioctl (fd, VIDIOC_QBUF, &buf))
    exit (EXIT_FAILURE);
    }
    type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    if (-1 == ioctl (fd, VIDIOC_STREAMON, &type))
    exit (EXIT_FAILURE);
}
```
Stop capturing

```c
Void stop_capturing (void)
{
    enum v412_buf_type type;
    type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    if (-1 == ioctl(fd, VIDIOC_STREAMOFF, &type));
}
```

# Read frame

Read frame image when an image was ready and prepare next frame.

```c
c
Int read_frame (void)
{
    struct v4l2_buffer buf;
    memset (&buf, 0, sizeof (buf));
    buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    buf.memory = V4L2_MEMORY_MMAP;

    /* read frame */
    if (-1 == ioctl (fd, VIDIOC_DQBUF, &buf)) {
    switch (errno) {
    case EAGAIN:
    return 0;
    case EIO:
    /* Could ignore EIO, see spec. */
    /* fall through */
    default:
    exit (EXIT_FAILURE);
    }
    }

    /* prepare next frame */
    if (-1 == ioctl (fd, VIDIOC_QBUF, &buf))
    exit (EXIT_FAILURE);
    return 0;
}
```

# Proprietary properties

Except standard APIs, we also provide a proprietary IO control which can read and write external general purpose IO pin.

```c
/* configure the direction (in or out) of each
    gpio bit prior to reading or writing gpio.
    */
int config_gpio (void)
{
    unsigned int value = 0xC3FEFF;
    if (-1 == ioctl (fd,
    BT878_S_GPIO_OUT_ENABLE, &value))
    return -1;
    return 0;
}
int read_gpio (void)
{
    unsigned int value;
    if (-1 == ioctl (fd, BT878_G_GPIO_VALUE,
    &value))
    return -1;
    value &= 0x100; // bit 8 is used to store the
    input value
    if(value)
    return 1;
    else
    return 0;
}
int write_gpio (int value)
{
    unsigned int gpio;
    if (-1 == ioctl (fd, BT878_G_GPIO_VALUE,
    &gpio))
    return -1;
    gpio |= 0x40; // bit 6 is used to set the
    output
    if(value)
    gpio -= 0x40;
    if (-1 == ioctl (fd, BT878_S_GPIO_VALUE,
    &gpio))
    return -1;
    return 0;
}
```

# 7 Appendix

# 7.1 Glossary

# Brightness:

Attribute of a visual sensation according to which an area appears to exhibit more or less light

# CCIR:

An acronym to designate a scanning system used in Europe. The CCIR system is made of two interlaced fields of 312.5 lines, for a total of 625 lines. In each field, only 287.5 lines are visible, for a total of 575 visible lines. A line lasts 64 ms, of which approximately 52 ms are conveying visible pixels.

# Composite Video:

Composite video (CVS/CVBS) signal carries video picture information for color, brightness and synchronizing signals for both horizontal and vertical scans.

# CIF:

CIF has 352(H) x 288(V) luminance pixels, and 176(H) x 144(V) chrominance pixels. QCIF is a similar picture format with onequarter the size of CIF.

# EIA:

An acronym to designate a scanning system used in America and Japan. The EIA system is made of two interlaced fields of 262.5 lines, for a total of 525 lines. In each field, only 242.5 lines are visible, for a total of 485 visible lines (typical value). A line lasts 63.56 ms, of which approximately 52 ms are conveying visible pixels.

# Field:

For interlaced video the total picture is divided into two fields, one even and one odd, each containing one half of the total vertical information. Each field takes one sixtieth of a second (one fiftieth for PAL) to complete. Two fields make a complete frame of video.

# Frame:

One frame (two fields) of video contains the full vertical interlaced information content of the picture. For NTSC this consists of 525 lines and PAL a frame is consisted of 625 lines.

# Gamma:

Cathode ray tubes (CRTs) do not have a linear relationship between brightness and the input voltage applied. To compensate for this non-linearity, a pre distortion or gamma correction is applied, generally at the camera source. A value of gamma equal to 2.2 is typical, but can very for different CRT phosphors.

# Hue:

Attribution of visual sensation according to which area appears to be similar to one, or proportions of two, of the perceived colors red, yellow, green, and blue.

# NTSC:

Acronym to designate a color television broadcast standard used in America and Japan. The (M) NTSC system uses 525 lines per frame (2 interlaced fields), a 29.97 frame per second update rate, and a YIQ or RGB color space. In each field, only 242.5 lines are visible, for a total of 485 visible lines (typical value). A line lasts 63.56 ms, of which approximately 52 ms are conveying visible pixels.

# PAL:

Acronym to designate a color television broadcast standard used in Europe. The (B, G, H, I) PAL (or Phase Alternation Line) uses 625 lines per frame (2 interlaced fields), a 25 frame per second update rate, and the RGB color space. In each field, only 287.5 lines are visible, for a total of 575 visible lines. A line lasts 64 ms, of which approximately 52 ms are conveying visible pixels.

# Saturation:

A characteristic describing color amplitude or intensity. A color of a given hue may consist of low or high saturation value, which relates to the vividness of color.

# 7.2 Standards Compliance

![The image displays a black and white logo consisting of the capital letters 'F' and 'C'. The letters are rendered in a thick, bold, sans-serif typeface. The 'F' is positioned on the left side, and the 'C' is on the right side, set against a white background.](.rtvseries-50-1r001-1010-203/3f1d14e1beb101224ed3026834f87c916bd13bb8db10486989629deec1eb42b1.jpg)

# Notice for USA

Compliance Information Statement

(Declaration of Conformity Procedure)

DoC FCC Part 15

This equipment has been tested and found to comply with the limits for a Class A digital device, pursuant to Part 15 of the FCC Rules.

These limits are designed to provide reasonable protection against harmful interference in a residential installation or when the equipment is operated in a commercial environment.

This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation.

If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:

 Reorient or relocate the receiving antenna.
 Increase the separation between the equipment and receiver.
 Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.
 Consult the dealer or an experienced radio/TV technician for help.

#

# Notice for Europe

This product is in conformity with the

Council Directive 89/336/EEC

amended by 92/31/EEC and 93/68/EEC

This equipment has been tested and found to comply with EN55022/CISPR22 and EN55024/CISPR24. To meet EC requirements, shielded cables must be used to connect a peripheral to the card. This product has been tested in a typical class B compliant host system. It is assumed that this product will also achieve compliance in any class A compliant unit.