Камера. Микроконтроллерная реализация.

Управление работой камеры осуществляется обменом с ней управляющими пакетами и получением пакетов с данными. Команды управления отправляются в UDP пакете. Все данные заполняются в порядке от младшего байта к старшему (little-endian), что отличается от предыдущей версии камеры.

Формат управляющего пакета:

Номер поля

Размер поля, байт

Наименование поля

Описание поля

1

4

ID

Идентификатор команды1

2

2

FRAME NUMBER

Номер кадра, к которому относится команда

3

1

COMMAND TYPE

Тип команды2

4

2

COMMAND

VALUE

Значение команды

5

Переменный

DATA

Поле данных3


Идентификатор:
    Команда 0x636f6d6d (ascii - comm), отправляется ПК. Подтверждение 0x61636b6e (ascii ackn), отправляется в ответ на каждую команду. Поля 2 и 3 совпадают с таковыми из команды. Завершение экспозиции 0x6568706f (ascii - expo). Пакет служит для того чтобы проинформировать программу о завершении экспозиции и готовности нового кадра. Ошибка экспозиции 0x746F7574 (ascii tout). Отправляется в том случае, если за время таймаута не был получен кадр. Служит индикатором неисправности матрицы или отсутствием внешнего запуска длительное время. Занят 0x62757379 (ascii busy). Отправляется в случае невозможности выполнить текущую команду в этот момент времени. Например, если камера уже производит съемку, то она не обработает еще один запрос съемки нового кадра. Ошибка в данных 0x65727250 (ascii errD). Отправляется при некорректном значении поля 4. Ошибка доступа 0x6572724D (ascii errM). Команда не доступна в текущем режиме работы Ошибка команды 0x65727243 (ascii errC). Команда не поддерживается. Ошибка сенсора 0x65727253 (ascii errS). Сенсор не отвечает.
Тип команды (часть команд подразумевает как запись, так и чтение параметров. Адрес такой команды отличаются старшим битом: установленный старший бит – чтение, не установлен – запись):
    0x00/0x80 – режим работы (поддержка режимов определена в конфигурации камеры, см. далее):
    0 – бездействие, 1 – одиночная съемка, 2 – мониторинг, 3 – серийная съемка.
    0x01 – запрос съемки нового кадра. 0x02 – запрос отправки кадра.
      FALSE – отправка всего кадра TRUE отправка только фрагментов определенных в поле DATA_ARRAY (формат см. далее).
    0x03/0х83 – экспозиция.
      0 – 500 мс, шаг 1 мс.
    0x04/0х84 – внешний запуск.
      TRUE – внешний FALSE – внутренний
    0x05/0х85 – коэффициент усиления аналогового усилителя
      0 – 256 (относительный диапазон)
    0x06/0х86 – напряжение смещения аналогового сигнала
      0 – 256 (относительный диапазон)
    0x07/0х87 – ширина области (в памяти хранится весь кадр, но можно читать только определенную область, по умолчанию 0 – полная ширина) 0x08/0х88 – высота области (по умолчанию 0 – полная высота) 0x09/0х89 – начало области, по оси X (по умолчанию 0 – начало кадра) 0x0A/0х8А – начало области, по оси Y 0x0B/0х8В – размер фрагмента (по умолчанию максимальный)
      10 – 1448
    0x0C/0х8С – таймаут экспозиции
      0 – 30 сек, шаг 1 сек.
    0x0D – чтение конфигурация камеры 0x0E – сброс камеры в исходное состояние
В DATA_ARREY передается таблицу принятых фрагментов и получается конфигурация камеры.

Таблица принятых фрагментов имеет размер равный количеству фрагментов (бит), элемент с номером N содержит 1 если фрагмент № N получен и 0 если фрагмент № N потерян. При запросе всего кадра можно не отправлять.

НЕ нашли? Не то? Что вы ищете?

Конфигурация камеры:

Размер, байт

Наименование

Значения

Описание

2

X RESOSUTION

640-2048

Горизонтальное разрешение сенсора

2

Y RESOLUTION

480-2048

Вертикальное разрешение сенсора

1

SENSOR TYPE

0-10

Модель сенсора (только для информации, ни на что не влияет)

1

OFFSET

Y/N

Напряжение смещения

1

AMPLIEFER

Y/N

Аналоговый усилитель

1

EXPOSITION MODE

0-5

Количество режимов экспозиции (0 – основной)

1

MONITOR MODE

Y/N

Поддержка режима мониторинг

1

SERIAL MODE

Y/N

Поддержка режима серийная съемка

1

CONFIGURATION COMPLETE

Y/N

Выполнена конфигурация камеры (после последней перезагрузки камера получила хоть одну команду 0х03 – 0х0Е)

1

RESET SOURCE

0 – PWUP

1 – WATCHDOG

2 – SOFTWARE

3 - OTHER

Источник последней перезагрузки камеры

2

FRAME COUNT

0 – 65536

Счетчик принятых кадров с последней перезагрузки

4

TIME COUNT (sec)

0 – 4294967296

Счетчик времени с последней перезагрузки


Пакет с данными:

Номер поля

Размер поля, байт

Наименование поля

Описание поля

1

4

ID

Идентификатор пакета с данными, 0х64617461 (ascii data).

2

2

FRAME NUMBER

Номер кадра, такой же как в команде запроса

3

2

POINTER1

Фрагмент содержит данные с этого адреса (начало фрагмента)

4

2

FRAGMENT NUMBER

Номер фрагмента

5

Размер фрагмента1

FRAME DATA

Кадр



    Размер фрагмента может устанавливаться от 100 до 1448 байт. 16 битное кодирование изображения (если реальная размерность данных меньше, то младшие биты нулевые).

Последовательность обращения к камере.

Устанавливаем режим, выполняем настройку камеры. На каждую команду должен прийти ответный пакет! Посылаем запрос съемки нового кадра, ждем ответ на команду, ждем пакет завершения экспозиции (максимальное время ожидания задается внутренним таймером камеры). Посылаем запрос отправки кадра и принимаем кадр. При необходимости шлем запрос досылки потерянных фрагментов.