Программное обеспечение и интеграция

Стабильный захват: буферы, тайм-ауты и переподключение

Цикл может возвращать верные кадры и всё же терять буферы или использовать старые после подключения. Проверьте срок жизни и события реального SDK. Приложение содержит нейтральный псевдокод, не исполняемые вызовыDeyi.

Отправить образцы на техническую оценку
Стабильный захват: буферы, тайм-ауты и переподключение
Техническая схема; не фотография и не подтверждение проведённого испытания.

Задача и исходные условия

Цикл может возвращать верные кадры и всё же терять буферы или использовать старые после подключения. Проверьте срок жизни и события реального SDK. Приложение содержит нейтральный псевдокод, не исполняемые вызовыDeyi.

Подготовка испытания

Условные 2000 × 1500 Mono8 дают 3 MB на кадр; 8 буферов занимают 24 MB без копий и метаданных. Задайте идентификатор прибора и новое поколение захвата после подключения.

Прочтите захват и сроки SDK до цикла. Уточните выделение, владение результатом, возврат драйверу и годность удержанных ссылок. Проверьте уведомление удаления и поток вызова. Если блокирование запрещено, координируйте остановку вне callback. Используйте стабильную документированную идентичность, не первое найденное устройство. Запишите размер, формат, полезную нагрузку, триггер и транспорт. Концептуальные названия не обещают API Deyi.

Порядок работы

  1. Настройте размер и формат до выделения буферов по размеру, сообщаемому SDK.
  2. Ограничьте ожидание, разделяя отсутствие запуска, ошибку передачи и отключение.
  3. Копируйте или удерживайте кадр по документированным правилам владения до освобождения результата.
  4. При отключении остановите обработку, верните буферы и удалите старые результаты.
  5. Подключайте только ожидаемый прибор, проверяйте настройки и начинайте новое поколение.
VENDOR-NEUTRAL PSEUDOCODE — conceptual operations, not SDK API names
connect(expected_device_identity)
verify_configuration_and_payload()
generation = new_generation()
while connected:
    result = none
    owned_image = none
    try:
        result = acquire_with_deadline()
        if result.is_valid:
            owned_image = copy_or_retain_under_documented_rules(result)
            process(owned_image, generation)
        else:
            record_acquisition_fault(result, generation)
    finally:
        release_owned_image_if_present(owned_image)
        release_grab_result_if_present(result)
on_coordinator_receives_device_removed:
    invalidate_current_generation()
    stop_and_join_workers()
    return_all_buffers()
    discard_old_generation_results()
    reconnect_expected_device_and_verify_configuration()
    generation = new_generation()

Получайте с конечным сроком, проверяйте результат до данных. Отсутствие триггера, сбой передачи и удаление требуют разных путей. Назначьте поколение и кадр/событие до обработки. Копируйте или удерживайте по правилам SDK. Освобождайте при исключениях тоже. Ограничьте очередь, задайте переполнение. Рост памяти не противодавление, старый кадр не заменяет отсутствующий.

Пример протокола испытания

Это условный пример, а не результаты измерений Deyi. Замените значения собственными утверждёнными протоколами испытаний.

Пример протокола испытания
Поле протоколаПринятое значение
Ёмкость очереди8
Несжатые данные изображения3 MB
Ёмкость хранилища24 MB
Число образцов1000

Преднамеренно замедлите обработчик, сохранив настроенную частоту съёмки. Записывайте поколение захвата, номер кадра, глубину очереди, активные буферы и причину тайм-аута. Расчёт 24 МБ не включает копии; срок удержания ссылки должен разрешаться SDK. Блок finally показывает освобождение и при исключении обработки. После повторного подключения подайте запоздалый результат старого поколения и подтвердите невозможность его публикации как текущей проверки.

При удалении остановите новые задания поколения, завершите работников до освобождения используемого. Отмените или закончите операции по контракту, верните буферы, отбросьте старое. Подключите ожидаемое устройство и проверьте настройки, не defaults. Прочтите нагрузку до выделения, создайте поколение после готовности. Поздние уведомления и результаты отвергаются по поколению даже при похожих номерах. Бюджет включает копии, очереди и алгоритм.

Две схемы процесса

Стабильный захват: буферы, тайм-ауты и переподключение — 1

Захват передаёт владение обработке, возврат возможен после завершения доступа.

  1. Захват
  2. Удержать или копировать
  3. Обработать
  4. Освободить
Техническая схема; не фотография и не подтверждение проведённого испытания.
Открыть схему в полном размере

Стабильный захват: буферы, тайм-ауты и переподключение — 2

Тайм-аут, отключение и завершение требуют разных переходов.

  1. Тайм-аут
  2. Отключение
  3. Завершение
Техническая схема; не фотография и не подтверждение проведённого испытания.
Открыть схему в полном размере

Поиск неисправностей

  • Рост памяти требует проверки неосвобождённых результатов и бесконечных очередей.
  • Порча кадров может означать доступ после возврата буфера.
  • Старые кадры после подключения требуют проверки очередей и поколений.

Приёмка и передача

Проверьте 1000 условных кадров, отключение, восстановление, завершение и медленного потребителя. Память ограничена, поколения не смешиваются, ошибки явные. 24 MB не является всей памятью.

Назначьте критерии приёмки до испытания и сохраните исходные данные. Примеры не подтверждают возможности поставляемой модели.

Принимайте длительный захват, прерывание и медленного потребителя. Записывайте буферы, очередь, память, поколения и причины. Контролируемо удалите/верните, остановите при ожидании. Подтвердите завершение, отсутствие обращения после освобождения и старых кадров. Проверьте исключение для finally и идентичность перед запуском. Тысяча кадров покрывает функцию, не длительную утечку. Передайте версию, владение, очередь, восстановление и данные; реальный код сверяйте с документацией.

Источники и технические материалы

Источники объясняют методы и ограничения руководства. Примеры проверок служат ориентиром; приёмка в производстве требует данных с ваших собственных образцов.

  1. Programming with pylon CBaslerПроверено
  2. pylon .NET SamplesBaslerПроверено

Инженерная оценка

Поделитесь задачей контроля и подтверждающими данными.

Пришлите изображения образцов, текущую конфигурацию и неудачную проверку. Укажите поле зрения, рабочее расстояние, скорость линии и критерии приёмки.

Отправить образцы на техническую оценку
Контакты

Прямой RFQ-контакт

Обсудите задачу инспекции с инженером.

Отправьте фото образцов, референс-модель, FOV, рабочую дистанцию и скорость линии.

Цель: brief подбора в течение 24ч
Найти дефекты раньше