Управление использованием памяти

Освобождение памяти

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

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

  1. Создайте объект сбора изображений - Этот пример создает объект входа видео для Windows® устройство для сбора изображений. Чтобы запустить этот пример в своей системе, используйте imaqhwinfo функция, чтобы получить конструктор объектов для устройства сбора изображений и заменить этот синтаксис следующим кодом.

    vid = videoinput('winvideo',1);
  2. Сконфигурируйте свойства - Для этого примера сконфигурируйте получение пяти систем координат на триггер и, чтобы показать эффект flushdata, сконфигурируйте несколько триггеров с помощью TriggerRepeat свойство.

    vid.FramesPerTrigger = 5
    vid.TriggerRepeat = 2;
  3. Запустите объект сбора изображений - Вызовите start функция для запуска объекта сбора изображений.

    start(vid)

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

    Чтобы проверить, что объект получил данные, просмотрите значение FramesAvailable свойство. Это свойство сообщает, сколько систем координат в данный момент хранятся в буфере памяти.

    vid.FramesAvailable
    ans =
    
       15
  4. Удалите данные изображений триггера - Вызовите flushdata функция, задающая режим 'triggers'. Это удаляет системы координат, сопоставленные с самым старым триггером.

    flushdata(vid,'triggers');

    Следующий рисунок показывает системы координат, полученные до и после вызова flushdata. Обратите внимание, как flushdata удаляет системы координат, сопоставленные с самым старым триггером.

    Чтобы убедиться, что объект удалил системы координат, просмотрите значение FramesAvailable свойство.

    vid.FramesAvailable
    ans =
    
       10
  5. Очистить весь буфер памяти - Вызов flushdata без указания режима удаляет все системы координат, хранящиеся в памяти.

    flushdata(vid);

    Чтобы убедиться, что объект удалил системы координат, просмотрите значение FramesAvailable свойство.

    vid.FramesAvailable
    ans =
    
       0
  6. Очистка - Всегда удаляйте объекты сбора изображений из памяти, и переменные, которые ссылаются на них, когда они вам больше не нужны.

    delete(vid)
    clear vid