문제와 전제 조건
정상 프레임을 반환해도 버퍼 누수나 재연결 뒤 오래된 이미지 재사용이 발생할 수 있습니다. 실제SDK의 수명과 제거 이벤트를 확인합니다. 부록은 제조사 중립 의사코드이며 실행 가능한Deyi API가 아닙니다.
시험 준비
가정한2000×1500Mono8은 한 장3MB,8버퍼는24MB입니다. 메타데이터와 처리 복사본은 제외합니다. 장치 식별자와 재연결마다 새 획득 세대를 정합니다.
루프 설계 전 SDK 획득 및 수명 문서를 읽습니다. 할당자, 결과 소유자, 드라이버 반환 시점과 반환 후 참조 유효성을 확인합니다. 제거 알림과 호출 스레드를 확인하고 콜백 차단이 금지되면 상태 변경과 종료 조정을 밖에서 수행합니다. 재검색 첫 장치가 아니라 문서화된 안정 식별자를 씁니다. 크기, 형식, 페이로드, 트리거와 전송을 승인 설정으로 남깁니다. 아래 개념 이름은 Deyi SDK 인터페이스를 약속하지 않습니다.
작업 절차
- 크기와 형식을 설정한 뒤SDK가 보고한 데이터 크기로 버퍼를 확보합니다.
- 유한 대기 시간을 적용하고 트리거 없음, 전송 오류와 장치 제거를 구분합니다.
- 문서화된 소유권 규칙으로 복사 또는 유지한 뒤 결과를 해제합니다.
- 제거 시 작업자를 멈추고 미반환 버퍼를 돌려주며 이전 세대 결과를 버립니다.
- 예상 장치만 다시 연결하고 설정을 확인한 다음 새 세대로 시작합니다.
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 MB 계산에 복사본이 포함되지 않습니다. 참조를 유지하면 SDK가 허용한 수명이 필요합니다. finally 블록은 처리 예외에서도 해제하는 개념입니다. 재연결 뒤 이전 세대 지연 결과를 넣고 현재 검사 결과가 될 수 없는지 확인하십시오.
제거 시 해당 세대 새 작업을 막고 아직 쓰는 자원 해제 전에 작업자 종료를 조정합니다. SDK 계약대로 미완료 작업을 끝내고 버퍼와 이전 결과를 정리합니다. 예정 장치에 연결하고 기본값을 믿지 말고 설정을 확인합니다. 새 할당 전 페이로드를 읽고 세션 준비 후 새 세대를 만듭니다. 이전 콜백과 큐 결과는 비슷한 번호라도 세대로 거부합니다. 원본 버퍼 계산 외 복사, 큐와 알고리즘 메모리를 실측 예산에 넣습니다.
공정을 설명하는 두 가지 도식
안정된 SDK 획득: 버퍼, 시간 초과와 재연결 — 1
획득에서 처리로 소유권을 넘기고 사용 완료 후 반환합니다.
- 획득
- 유지 또는 복사
- 처리
- 해제
안정된 SDK 획득: 버퍼, 시간 초과와 재연결 — 2
시간 초과, 제거와 정상 종료는 다른 상태 전이가 필요합니다.
- 시간 초과
- 장치 제거
- 정상 종료
문제 원인 분리
- 메모리 증가는 미해제 결과나 무제한 소비 대기열을 확인합니다.
- 이미지 손상은 버퍼 반환 후 참조를 확인합니다.
- 옛 이미지 반복은 대기열과 세대 관리를 확인합니다.
인수 확인과 인계
가정한1000프레임, 제거, 복구, 종료와 느린 소비자를 시험합니다. 메모리 제한, 세대 분리와 명시적 오류를 확인합니다.24MB는 전체 메모리 예산이 아닙니다.
시험 전에 인수 기준을 정하고 원본 증거를 보관하십시오. 예제는 공급 모델의 기능을 보증하지 않습니다.
지속 획득, 중단과 느린 소비자를 인수 시험합니다. 버퍼, 큐, 프로세스 메모리, 세대와 요청 최종 이유를 기록합니다. 통제된 제거 및 복구, 획득 대기 중 종료를 시험합니다. 종료 완료, 해제 메모리 미접근과 이전 영상 미사용을 확인합니다. 처리 예외로 finally 경로를 시험하고 재개 전에 장치 및 설정을 대조합니다. 1000프레임은 기능 범위이며 장기 누수나 신뢰성 보장이 아닙니다. SDK 버전, 소유권, 큐, 복구와 근거를 인계하고 실행 코드는 해당 문서로 검토합니다.
출처와 기술 참고 자료
참고 자료는 이 안내의 방법과 한계를 설명합니다. 예시 확인 절차는 참고용이며, 생산 수락 판정에는 실제 샘플을 통한 근거가 필요합니다.
- Programming with pylon CBasler확인일
- pylon .NET SamplesBasler확인일
부품 및 선정 참고 자료
- 스마트 카메라와 PC 기반 비전 시스템 비교
- GigE 대 USB3 산업용 카메라
- 머신비전 시스템
- machine vision software · 영어 참고 자료
- EAN-13 추적: 라인 수락
- EAN-13 추적: 디코딩과 데이터 규칙
- 가시 액면 높이 검사 흐름 수락과 연계
- 가시 액면 대리값을 위한 AI 지원 처리 흐름 검증
- 검사 기록, 이미지와 부품 식별자 연결해 보관하기
- OCR 라벨: 수락과 PLC 계약
- OCR 라벨: 네이티브 처리와 정확 비교
- 개방 포장 완전성 검사 수락과 연계 절차
- AI 지원 개방 포장 완전성 흐름 구축
- 명확한 상태로 PLC–비전 핸드셰이크 정의하기
- 실링·비드 외관: 라인 수락
- 실링·비드 외관: 워크플로 규칙
- SKU 색상 분류: 수락과 미지 경로
- SKU 색상 분류: 색·상품 규칙
- 표면 결함: 수락과 라인 출력
- 표면 결함: 범위를 제한한 AI 평가
- 트리거부터 PLC 판정까지 지연 부하 시험하기
- 전체 비전 레시피를 버전 관리하고 롤백 검증하기

