
# EasyCodeReaderLive_V4L2_Console

This code sample sample shows how to use Open eVision in a live application to read Barcodes, Data Matrix codes or
QR codes. It is mostly aimed at being a demonstration of Open eVision on embedded platforms like smart cameras.

This code sample is available in many different variants. The one you are currently reading is using:

* A console displayer that will output the codes on the command line.
* The V4L2 library (used on Nvidia Jetson platforms).

Please note that the current sample was distributed along with other similar samples providing other connectivity
possibilities. Please consult those other samples if the current one is not appropriate for your use case.

## Dependencies

### Open eVision

This sample depends on Open eVision. Please install it in a version suitable for your platform.

All Open eVision releases are available at this address: https://www.euresys.com/en/Support/Download-area

### GCC


This sample necessitates a GCC building solution able to compile C++ 17.


To install it on a Debian-based operating system use this command:

```
sudo apt install build-essential
```

### CMake

This sample necessitates CMake >= 3.1.0 .

To install it on a Debian-based operating system use this command:

```
sudo apt install cmake
```

### V4L2

This sample necessitates the V4L2 library.
It was tested with version "1.14.2-1" of v4l-utils on a Jetson Linux R32.7.3 OS.

To install that library on a Nvidia Jetson computer use the following command:

```
sudo apt install v4l-utils
```

## Switching type of code reader (Barcodes, Matrixcodes or QRcodes)

This project support multiple type of codes, but only one of them at a given time. By default it will read Barcodes.

If you want to change the type of code that this sample will read modify the `ProcessingHandler.cpp` file and change
the following block of code according to your need:

```
// Choose one processing in BarCode, MatrixCode or QRCode
#define BarCodeProcessing
//#define MatrixCodeProcessing
//#define QRCodeProcessing
```

## Compiling this sample

Use the following commands in order to compile your project:

```bash
mkdir build
cd build
cmake ..
make -j2
```

Alternatively, you could build the sample by using Qt Creator. To do so, open the CMakeLists.txt file in Qt Creator.

## Using this sample

When launched this sample will capture data from the camera and output a code in the command line if one is found.

This sample is intended to be run on low ressources computers without a graphical interface and does not provide video
confirmation. If you want to have a video confirmation you should use one of the Qt samples distributed along with the
current sample instead.

## Known Issues

* We faced an issue with V4L2 on a jetson nano with a raspberry pi camera. The V4L2Qt sample did not show any image
  and "select timeout" was printed on the standard output. The version of the jetson library was "# R32 (release),
  REVISION: 6.1, GCID: 27863751, BOARD: t210ref, EABI: aarch64, DATE: Mon Jul 26 19:20:30 UTC 2021" (output of
  "cat /etc/nv_tegra_release"). The solution to this problem was to update libv412_nvargus.so as indicated in
  [the following post](https://forums.developer.nvidia.com/t/libv4l2-nvargus-so-source-code/168303/19).
