EyePoint S
==========

ПО для поиска неисправностей на печатных платах с использованием аналоговых сигнатурных анализаторов EyePoint IVM. Может работать как с одним, так и с двумя устройствами.

Возможности
-----------

* Непрерывное измерение сигнатур с возможностью быстрой перестройки параметров измерителя.
* Сравнение сигнатур в реальном времени с двух каналов.
* Создание плана тестирования – файла с набором эталонных сигнатур, снятых для различных точек с заданными параметрами.
* Тестирование с использованием ранее созданного плана тестирования (с автоматической установкой параметров измерителя).
* Сохранение сигнатур в виде изображений.

## Запуск релиза в Windows

1. Установите [MSVC 2013 redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=40784) (разрядность должна совпадать с разрядностью исполняемого файла **eyepoint_s.exe**).

2. Подключите устройства к ПК и с помощью диспетчера устройств Windows определите номера соответствующих COM-портов. Если Вы не видите в диспетчере устройств COM-порты, убедитесь, что Вы установили драйвер устройства EyePoint IVM (драйверы находятся в папке **driver**).

3. Запустите файл **launch.bat**:

   ```bash
   launch.bat
   ```

   Выберите устройства и нажмите "Далее".

4. Запустите скрипт **launch_command.bat**:

   ```bash
   launch_command.bat
   ```

   Чтобы запустить ПО с новыми устройствами, удалите файл **launch_command.bat** и повторите шаги 2-3.

## Запуск релиза в Linux

1. Перед первым запуском обычно нужно прописать в системе VID и PID устройства для драйвера виртуального COM-порта. В Ubuntu это можно сделать так:

   ```bash
   sudo sh -c 'echo 1CBC 0007 > /sys/bus/usb/drivers/cdc_acm/new_id'
   ```

2. Установите **curl**:

   ```bash
   sudo apt-get update
   sudo apt-get install curl
   ```

3. Для корректной работы ПО с COM-портами пользователь должен находиться в группе *dialout*. Чтобы добавить пользователя в эту группу, выполните команду (здесь предполагается, что имя пользователя *username*):

   ```bash
   sudo adduser username dialout
   ```

   После добавления пользователя в группу нужно перезагрузить ПК.

4. При необходимости предоставьте права на выполнение бинарным файлам **epclauncher/epclauncher** и **eyepoint_s**. Для этого в терминале выполните команды:

   ```bash
   chmod ugo+x epclauncher/epclauncher
   chmod ugo+x eyepoint_s
   ```

5. Запустите файл **launch.sh**:

   ```bash
   bash launch.sh
   ```

   Выберите устройства и нажмите "Далее".

6. Запустите скрипт **launch_command.sh**:

   ```bash
   bash launch_command.sh
   ```

   Чтобы запустить ПО с новыми устройствами, удалите файл **launch_command.sh** и повторите шаги 3-4.

Если при открытии устройств возникают какие-то проблемы, попробуйте запустить ПО с правами root.

Если при запуске ПО возникает ошибка:

```bash
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found
```

выполните команды:

```bash
export QT_DEBUG_PLUGINS=1
sudo apt-get install --reinstall libxcb-xinerama0
```

## Запуск релиза на устройстве EyePoint S2

1. Подключитесь к устройству EyePoint S2 по ssh и для удобства переключитесь на bash:

   ```bash
   bash
   ```

2. Перемонтируйте файловую систему:

   ```bash
   sudo mount -o remount,rw /
   ```

3. При необходимости отключите ПО:

   ```bash
   sudo systemctl stop nodm
   ```

4. С помощью приложения [WinSCP](https://winscp.net/eng/download.php) скопируйте файлы из релиза в папку **/home/eyepoint/Develop/eyepoint-s1**.

5. Предоставьте права на выполнение бинарному файлу **eyepoint_s**:

   ```bash
   chmod ugo+x eyepoint_s
   ```

6. Замените файл **/home/eyepoint/Develop/start.sh** на файл из релиза **/home/eyepoint/Develop/eyepoint-s1/start.sh**.

7. Предоставьте права на выполнение скопированному файлу `start.sh`:

   ```bash
   chmod ugo+x start.sh
   ```

8. При необходимости обновите HTML-сервер на устройстве, заменив папку **home/eyepoint/Develop/html_page** на папку **home/eyepoint/Develop/eyepoint-s1/html_page** из релиза.

   ```bash
   rm -rf /home/eyepoint/Develop/html_page
   mv /home/eyepoint/Develop/eyepoint-s1/html_page /home/eyepoint/Develop/
   chmod ugo+x /home/eyepoint/Develop/html_page/cgi/device_info.py
   ```

   Также надо проверить, что в файле **device_info.py** нет символов '\r' (иначе файл **device_info.py** не будет исполняться верно).

9. При необходимости обновите revealer-сервер на устройстве, заменив папку **home/eyepoint/Develop/revealer_server** на папку **/home/eyepoint/Develop/eyepoint-s1/revealer_server** из релиза.

   ```bash
   rm -rf /home/eyepoint/Develop/revealer_server
   mv /home/eyepoint/Develop/eyepoint-s1/revealer_server /home/eyepoint/Develop/
   ```

10. Перемонтируйте файловую систему:

    ```bash
    sudo mount -o remount,ro /
    ```

11. Проверьте, что обновленное ПО работает:

    ```bash
    sudo systemctl start nodm
    ```

12. Перезагрузите устройство EyePoint S2.

## Дополнительные опции при запуске ПО в Windows и Linux

Есть возможность запустить ПО с дополнительными опциями. Для этого нужно дописать дополнительные опции к строке запуска в файле **launch_command.bat** или **launch_command.sh**.

Дополнительные опции:

- *--debug* - включение режима отладки, в котором выводится дополнительная отладочная информация;
- *--en* - английская версия интерфейса;
- *--hide-cursor* - не отображать курсор в окне приложения;
- *--no-score* - отключение вычисления различия сигнатур тестового и опорного (эталонного) измерителей;
- *--no-sound* - отключение звука;
- *--screenshot-external-media-path* - указание фиксированного пути для сохранения файлов;
- *--window embedded* - запуск интерфейса, адаптированного под сенсорный экран;
- *--window pc* - запуск интерфейса, адаптированного под обычный ПК (режим по умолчанию).

Для сохранения скриншотов и эталонных плат нужно создать папку, которая будет содержать внутри себя ровно одну папку. Верхнюю папку нужно передать в качестве аргумента командной строки *--screenshot-external-media-path*. Например, создаём папку **С:\EyePoint\EyePoint_data**. Параметр задаём так:

```bash
--screenshot-external-media-path="С:\EyePoint"
```
