> -- prospero78 писал(а):
> Стесняюсь спросить.Ваня, а это вообще что и зачем?
Это камера к микроскопу идет. С нее надо снимать изображение и на лету обрабатывать. Данные мне удалось получить в Блэкбокс. Но к сожалению пока работает не стабильно. Сборщик мусора убивает Блэкбокс почему-то. Пока разбираюсь.

В библиотеке главная структура в которую принимается кадр с камеры выглядит так.
## Код:
```
Frame* = RECORD [untagged]
      buffer*:  ANYPTR; (* в оригинале был тип void* *)
      bufferSize*: INTEGER;
      context*: ARRAY [untagged] 4 OF ANYPTR;  (* в оригинале    void*  context[4];  *)
      receiveStatus*: FrameStatus;
      receiveFlags*: FrameFlags;
      imageSize*: INTEGER;
      ancillarySize*: INTEGER;
      pixelFormat*: VmbPixelFormat;
      width*: INTEGER;
      height*: INTEGER;
      offsetX*: INTEGER;
      offsetY*: INTEGER;
      frameID*: LONGINT;
      timestamp*: LONGINT;
   END;
   PtrFrame* = POINTER TO Frame;
```


Проскольку размер кадра может быть разный, то приходится буфер динамически выделять.
## Код:
```
TYPE buf: POINTER [untagged] TO ARRAY OF SHORTCHAR;
...
NEW(buf, nPayloadSize);
frame.buffer := SYSTEM.VAL(ANYPTR, buf);
```


Стоит сборщику запустится, после того как изображение было взято, как Блэкбокс падает разными способами.
Статический массив не получается использовать, так как библиотека проверяет тип данных и отказывается другие структуры принимать.