Stream Grabber 파라미터#
이 항목에서는 스트림 그래버와 관련된 매개변수에 대해 설명합니다.
일반 매개변수#
접근 모드#
The AccessMode 이 매개변수는 현재 애플리케이션이 해당 장치에 접근하는 방식을 나타냅니다:
Control: 이 앱은 기기에 대한 제어 권한을 가지고 있습니다. 다른 앱들은 여전히 모니터 해당 기기에 대해 제어권을 인수하거나 기기에 대한 독점적인 접근 권한을 요청할 수 있습니다.Exclusive: 이 앱은 기기에 대한 독점적인 접근 권한을 가지고 있습니다. 다른 어떤 앱도 제어하거나 모니터링하다 해당 기기.Monitor: 이 애플리케이션에는 모니터링, 즉, 해당 장치에 대한 읽기 전용 액세스 권한.NotInitialized: 장치에 대한 액세스가 초기화되지 않았습니다.
이 파라미터는 읽기 전용입니다.
자동 패킷 크기#
다음 명령을 사용하여 AutoPacketSize 이더넷을 통해 전송되는 데이터 패킷의 크기를 최적화하기 위한 매개변수.
매개변수가 다음과 같이 설정되면 true, 카메라가 가능한 최대 패킷 크기를 찾기 위해 패킷 크기를 자동으로 협상합니다.
현재 패킷 크기를 확인하려면 다음의 값을 가져옵니다. GevSCPSPacketSize 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.
대용량 패킷을 사용하면 이미지 전송 시 발생하는 오버헤드를 줄일 수 있습니다. 최대 패킷 크기는 네트워크 하드웨어와 그 구성에 따라 달라집니다.
최대 버퍼 크기#
다음 명령을 사용하여 MaxBufferSize 이미지 캡처에 사용되는 버퍼의 최대 크기(바이트 단위)를 지정하는 매개변수.
그랩 애플리케이션은 그랩이 시작되기 전에 이 매개변수를 설정해야 합니다.
버퍼의 최대 개수#
다음 명령을 사용하여 MaxNumBuffer 이미지 캡처에 동시에 사용할 수 있는 버퍼의 최대 개수를 지정하는 매개변수입니다.
최대 전송 크기#
다음 명령을 사용하여 MaxTransferSize USB 데이터 전송의 최대 크기를 바이트 단위로 지정하는 매개변수입니다. 기본값은 대부분의 응용 프로그램에 적합합니다. CPU 부하를 줄이려면 이 값을 늘리십시오.
응용 프로그램이 이미지 스트림을 수신하지 못하는 경우, USB 호스트 어댑터 드라이버의 값을 낮춰야 할 수도 있습니다. 최대 값은 운영 체제에 따라 다릅니다.
대기 중인 URB의 최대 개수#
다음 명령을 사용하여 NumMaxQueuedUrbs 동시에 큐에 추가될 USB 요청 블록(URB)의 최대 개수를 지정하는 매개변수입니다.
이 값을 높이면 안정성이 향상되고 지터가 줄어들 수 있지만, 호스트 컴퓨터에서 더 많은 리소스가 필요합니다.
시스템 메모리 부족과 관련된 오류 메시지(예: “Failed to probe and lock buffer=0xe2010130” 또는 “Failed to submit transfer status=0xe2100001”)가 표시될 경우, 이 값을 줄이면 도움이 될 수 있습니다.
수신 스레드 우선순위 재정의#
다음 명령을 사용하여 ReceiveThreadPriorityOverride 들어오는 스트림 패킷을 수신하는 스레드에 사용자 정의 우선순위를 할당할 수 있도록 하는 매개변수입니다. 다음 조건에서만 사용할 수 있습니다. 소켓 드라이버 함수가 사용됩니다.
우선순위를 지정하려면 다음을 사용하십시오. ReceiveThreadPriority 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.
수신 스레드 우선순위#
다음 명령을 사용하여 ReceiveThreadPriority 수신 스레드의 우선순위를 설정하는 매개변수입니다. 다음 조건에서만 사용할 수 있습니다. 소켓 드라이버 함수가 사용됩니다.
우선순위를 지정하려면, ReceiveThreadPriorityOverride 파라미터를 다음으로 설정해야 합니다. true.
소켓 버퍼 크기#
다음 명령을 사용하여 SocketBufferSize 소켓 버퍼 크기를 킬로바이트 단위로 설정하는 매개변수입니다. 다음 조건에서만 사용할 수 있습니다. 소켓 드라이버 함수가 사용됩니다.
Status#
The Status 이 매개변수는 스트림 그래버의 현재 상태를 나타냅니다:
Closed: 스트림 그래버가 닫혔습니다.Locked: 스트림 그래버가 잠겨 있습니다.NotInitialized: 스트림 그래버가 초기화되지 않았습니다.Open: 스트림 그래버가 열려 있습니다.
이 파라미터는 읽기 전용입니다.
전송 루프 스레드 우선순위#
다음 명령을 사용하여 TransferLoopThreadPriority 스트림 인터페이스에서 들어오는 USB 요청을 처리하는 스레드의 우선순위를 지정하는 매개변수입니다.
Pylon에는 USB 전송 계층에 속하는 두 개의 스레드가 있는데, 하나는 이미지 URB(USB 요청 블록)용이고 다른 하나는 이벤트 URB용입니다. 전송 계층은 URB를 xHCI 드라이버에 큐에 넣은 다음, 버스를 폴링하여 전달된 URB가 있는지 확인합니다.
다음 옵션을 통해 두 스레드의 우선순위를 제어할 수 있습니다. TransferLoopThreadPriority 파라미터에 HTML 로그 파일(*.html)의 경로와 이름을 지정할 수 있습니다.
Windows 에서는 기본적으로 해당 매개변수가 다음 값으로 설정되어 있습니다:
- 25 호스트 애플리케이션이 관리자 권한 으로 실행되는 경우.
- 호스트 애플리케이션이 관리자 권한 없이 실행되는 경우 15 이하입니다.
Linux 와 macOS에서는 기본 매개변수 값과 매개변수 값의 범위가 다를 수 있습니다.
전송 루프의 우선순위는 항상 그랩 엔진 스레드의 우선순위보다 높아야 합니다 (InternalGrabEngineThreadPriority 매개변수) 및 그랩 루프 스레드의 우선순위 (GrabLoopThreadPriority 파라미터가 감소합니다.
자세한 내용은 ‘ pylon API ’ 설명서의 ‘고성능을 위한 애플리케이션 설정’ 섹션을 참조하십시오.
GigE Vision 드라이버 유형#
다음 명령을 사용하여 Type 호스트 애플리케이션의 GigE Vision 드라이버 유형을 설정하는 매개변수:
WindowsFilterDriver: 호스트 애플리케이션은 파일론 GigE Vision 필터 드라이버.WindowsPerformanceDriver(Pylon 버전 7.1에서 더 이상 사용되지 않음): 호스트 애플리케이션은 파일론 GigE Vision 성능 드라이버.SocketDriver: 호스트 애플리케이션은 파일론 GigE Vision 소켓 드라이버.RDMADriver: 호스트 애플리케이션은 파일론 RDMA 드라이버.NoDriverAvailable: 적합한 드라이버가 설치되어 있지 않습니다. 드라이버 유형을 설정할 수 없습니다.
드라이버 유형에 대한 자세한 내용은 ‘드라이버’를 참조하십시오.
유형: 소켓 드라이버 사용 가능#
The TypeIsSocketDriverAvailable 이 매개변수는 다음을 나타냅니다. 파일론 GigE Vision 소켓 드라이버 현재 이용 가능(1)하거나 이용 불가능(0)합니다.
유형: Windows 필터 드라이버 제공#
The TypeIsWindowsFilterDriverAvailable 이 매개변수는 다음을 나타냅니다. 파일론 GigE Vision 필터 드라이버 현재 이용 가능(1)하거나 이용 불가능(0)합니다.
유형: Windows 인텔 성능 드라이버 출시#
The TypeIsWindowsIntelPerformanceDriverAvailable 이 매개변수는 다음을 나타냅니다. 파일론 GigE Vision 성능 드라이버 현재 이용 가능(1)하거나 이용 불가능(0)합니다.
패킷 재전송 메커니즘 매개변수#
패킷 재전송 메커니즘(GigE Vision 전용)은 누락된 데이터 패킷을 감지하여 재전송함으로써 네트워크 성능을 최적화합니다.
파일론 GigE Vision 필터 및 소켓 드라이버는 정교하고 안정적인 패킷 재전송 메커니즘을 갖추고 있습니다.
이를 통해 세밀한 조정이 가능하며, 최대 요청 횟수에 도달할 때까지 연속적으로 여러 번의 재전송 요청을 보낼 수 있습니다.
드라이버가 패킷(예: 리더, 페이로드 또는 트레일러 패킷)이 누락된 것을 감지하면, 지정된 시간 동안 대기합니다. 지정된 시간 내에 패킷이 도착하지 않으면, 드라이버는 손실된 패킷을 복구하기 위해 하나 또는 여러 개의 재전송 요청을 보낼 수 있습니다.
연속된 페이로드 패킷 범위가 누락된 경우, 드라이버는 누락된 패킷 범위에 대해 하나의 “일괄 재전송 요청”을 자동으로 전송합니다. 또한, 드라이버는 손실된 것으로 간주된 재전송 요청에 대해서도 자동으로 재전송 요청을 전송할 수 있습니다.
재전송 허용#
다음 명령을 사용하여 EnableResend 현재 선택된 항목에 대한 패킷 재전송 메커니즘을 활성화하거나 비활성화하는 매개변수 GigE Vision 드라이버 유형.
패킷 타임아웃#
다음 명령을 사용하여 PacketTimeout 필터 드라이버가 재전송 요청을 시작하기 전에 다음 예상 패킷을 얼마나 오래(밀리초 단위) 기다릴지 지정하는 매개변수입니다.
해당 매개변수가 패킷 간 지연 시간보다 더 긴 시간 간격으로 설정되어 있는지 확인하십시오.
프레임 유지#
다음 명령을 사용하여 FrameRetention 프레임의 모든 패킷을 수신하는 데 소요되는 최대 시간을 밀리초 단위로 지정하는 매개변수입니다. 타이머는 첫 번째 패킷이 수신되면 시작됩니다. 지정된 시간 내에 전송이 완료되지 않으면 해당 프레임은 “실패” 상태로 전달됩니다.
재전송 요청의 최대 개수#
다음 명령을 사용하여 MaximumNumberResendRequests 누락된 패킷당 재전송 요청의 최대 횟수를 지정하는 매개변수.
방화벽 통과 간격#
다음 명령을 사용하여 FirewallTraversalInterval 방화벽이 GigE Vision 패킷을 차단하지 못하도록 하는 매개변수.
이 매개변수는 스트림 그래버와 이벤트 그래버 모두에서 사용할 수 있으며, 즉 GigE Vision 스트리밍 프로토콜(GVSP) 패킷과 메시지 채널 소스 포트(MCSP) 패킷을 처리하는 데 사용됩니다. 두 유형의 패킷에 대해 각각 별도로 구성해야 합니다. 자세한 내용은 아래 코드 예제를 참조하십시오.
이 기능이 활성화되면, 그래버는 방화벽 차단을 방지하기 위해 트래픽 통신을 시뮬레이션하는 특정 패킷을 전송합니다.
기본적으로, 특정 스트리밍 세션이 진행되는 동안 GVSP 패킷은 10초마다, MCSP 패킷은 30초마다 전송됩니다.
방화벽에 맞게 최적화하려면 매개변수를 밀리초 단위로 설정할 수 있습니다.
When the FirewallTraversalInterval 매개변수가 0으로 설정된 경우, 방화벽 우회 기능은 비활성화된 것으로 간주됩니다.
스트림 대상 매개변수#
다음 매개변수(GigE Vision 전용)를 사용하면 스트림 그래버가 캡처한 데이터를 어디로 전송할지 설정할 수 있습니다.
스트림 그래버는 스트림 데이터를 특정 장치 하나 또는 네트워크 내의 여러 장치로 전송할 수 있습니다.
변속기 유형#
다음 명령을 사용하여 TransmissionType 네트워크 내에서 스트림 데이터가 전송되는 방식을 정의하는 매개변수입니다. 이 매개변수는 다음 값으로 설정할 수 있습니다:
-
Unicast(기본값): 스트림 데이터는 다음으로 전송됩니다. 단일 로컬 네트워크에 있는 장치로, 대개 카메라의 GigE 네트워크 어댑터입니다(참조: 수신 주소). 다른 기기에서는 스트림 데이터를 수신할 수 없습니다. -
LimitedBroadcast: 스트림 데이터는 다음으로 전송됩니다. 모두 스트림 데이터 수신에 관심이 없는 기기라도 로컬 네트워크(255.255.255.255) 내의 모든 기기에 전송됩니다. 대규모 로컬 네트워크에서는 이로 인해 많은 양의 네트워크 대역폭이 소모됩니다. 이 전송 유형을 사용하려면 다음을 설정해야 합니다. 애플리케이션 제어 및 모니터링. -
SubnetDirectedBroadcasting: 스트림 데이터는 다음으로 전송됩니다. 모두 동일한 서브넷 스트림 데이터를 수신하는 데 관심이 없더라도 카메라로 간주됩니다. 서브넷 규모가 작을 경우, 이를 통해 네트워크 대역폭을 절약할 수 있습니다. 서브넷 외부의 기기는 스트림 데이터를 수신할 수 없기 때문에, 이러한 전송 방식은 예를 들어 보안 목적 등에서 유용하게 활용될 수 있습니다.서브넷 지정 브로드캐스팅의 경우, 스트림 그래버는 서브넷 브로드캐스트 주소를 사용합니다. 서브넷 브로드캐스트 주소는 카메라의 IP 주소와 카메라의 서브넷 마스크의 비트 보충값을 비트 단위 OR 연산하여 구합니다( 목적지 주소 참조). 이 전송 유형을 사용하려면 제어 및 모니터링 애플리케이션을 설정해야 합니다.
정보
- 카메라의 IP 주소와 서브넷 마스크를 설정하려면 pylon IP Configurator 를 사용하십시오.
- IP 주소, 서브넷 마스크 및 서브넷 브로드캐스트 주소에 대한 자세한 내용은 ‘온라인 IP 서브넷 계산기’ 웹사이트를 방문하십시오.
-
Multicast: 스트림 데이터는 다음으로 전송됩니다. 선택됨 로컬 네트워크 내의 장치들. 이렇게 하면 데이터를 수신하고자 하는 장치들에게만 데이터가 전송되므로 네트워크 대역폭을 절약할 수 있습니다. 또한, 데이터를 전송할 대상을 정확히 지정할 수도 있습니다.멀티캐스트를 사용하려면, 스트림 수신 주소 멀티캐스트 그룹 주소(224.0.0.0 ~ 239.255.255.255)로 설정해야 합니다. 또한, 다음을 설정해야 합니다. 애플리케이션 제어 및 모니터링. 그러면 pylon API 가 다른 기기들이 참여할 수 있는 멀티캐스트 그룹을 자동으로 생성하고 관리합니다. -
UseCameraConfig: 스트림 전송 구성은 카메라에서 읽어옵니다. 이 옵션은 다음을 설정하려는 경우에만 사용하십시오. 모니터링 애플리케이션.
애플리케이션 제어 및 모니터링#
제한된 브로드캐스트, 서브넷 지정 브로드캐스트 또는 멀티캐스트를 사용할 때는 대개 하나의 카메라에서 여러 수신처로 영상 데이터 스트림을 전송하고자 합니다.
이를 위해서는 제어용 애플리케이션을 정확히 하나, 그리고 모니터링용 애플리케이션을 하나 이상 설정해야 합니다.
- 제어 애플리케이션은 이미지 획득을 시작하고 중지합니다. 또한 카메라 설정을 변경할 수도 있습니다.
- 모니터링 애플리케이션은 스트림 데이터를 수신합니다. 모니터링 애플리케이션은 카메라를 읽기 전용 모드로 엽니다. 즉, 이미지 획득을 시작하거나 중지할 수 없으며, 카메라 설정을 변경할 수도 없습니다.
테스트를 위해, pylon Viewer 의 인스턴스 하나를 제어용 애플리케이션으로, pylon Viewer 의 다른 인스턴스를 모니터링용 애플리케이션으로 사용할 수 있습니다.
pylon Viewer 의 서로 다른 인스턴스를 제어 및 모니터링 애플리케이션으로 사용하려면:
- pylon Viewer 를 실행하고 GigE 장치를 엽니다.
- pylon Viewer 의 인스턴스를 하나 더 시작합니다. 이 인스턴스는 모니터링 애플리케이션 역할을 합니다:
- Windows: ‘ pylon Viewer ’을 실행합니다. ‘ pylon Viewer ’의 ‘Devices’ 창에서 1단계에서 연 GigE 장치를 마우스 오른쪽 버튼으로 클릭한 다음, ‘Open Device …’ > ‘Monitor Mode’를 클릭합니다.
- Linux: 명령줄에서 다음을 입력하세요:
/opt/pylon5/bin/PylonViewerApp -m - macOS: 명령줄에서 다음을 입력하세요:
./Applications/pylon Viewer.app/Contents/MacOS/pylon Viewer -m
정보
애플리케이션 제어 및 모니터링 설정에 대한 자세한 내용은 ‘ pylon API ’ 설명서의 ‘GigE 멀티캐스트/브로드캐스트’ 섹션을 참조하십시오.
수신 주소#
The DestinationAddr 이 매개변수는 스트림 그래버가 모든 스트림 데이터를 전송하는 IP 주소를 나타냅니다.
매개변수의 값과 접근 모드는 다음 요소에 따라 달라집니다. TransmissionType 매개변수 값:
| 전송 유형 매개변수 값 | DestinationAddr 매개변수 값 | 대상 주소 액세스 모드 |
|---|---|---|
Unicast | 카메라의 GigE 네트워크 어댑터 IP 주소 | 읽기 전용 |
LimitedBroadcast | 255.255.255.255 | 읽기 전용 |
SubnetDirectedBroadcasting | (카메라의 IP 주소) OR NOT (카메라의 서브넷 마스크) | 읽기 전용 |
Multicast | 기본값: 239.0.0.1 허용 범위: 224.0.0.0 ~ 239.255.255.255a | 읽기/쓰기 |
-
이 범위 내의 일부 주소는 예약되어 있습니다. 확실하지 않은 경우, 239.255.0.0과 239.255.255.255 사이의 주소를 사용하십시오. 이 범위는 RFC 2365에 따라 로컬 관리 주소 공간으로 할당되어 있습니다.
목적지 포트#
The DestinationPort 이 매개변수는 스트림 그래버가 모든 스트림 데이터를 전송할 포트를 나타냅니다.
매개변수가 0으로 설정되면, pylon은 사용되지 않는 포트를 자동으로 선택합니다.
자세한 내용은 ‘ pylon API ’ 설명서의 ‘목적지 포트 선택’ 섹션을 참조하십시오.
통계 매개변수#
pylon API 는 카메라가 올바르게 설정되었는지, 하드웨어 구성 요소가 적절한지, 그리고 시스템이 원활하게 작동하는지 확인할 수 있는 통계 매개변수를 제공합니다.
카메라가 시작될 때 모든 통계 매개변수는 0으로 설정됩니다. 이미지를 지속적으로 캡처하는 동안, 매개변수는 지속적으로 업데이트되어 누락된 이미지나 불완전하게 캡처된 버퍼 등에 대한 정보를 제공합니다.
버퍼 언더런 횟수#
The Statistic_Buffer_Underrun_Count 이 매개변수는 큐에 버퍼가 없어 손실된 프레임의 수를 집계합니다.
이미지가 수신될 때마다 해당 매개변수 값이 증가하지만, 드라이버 입력 대기열에 대기 중인 사용 가능한 버퍼가 없기 때문에 프레임이 손실됩니다.
버퍼 오류 횟수#
The Statistic_Failed_Buffer_Count 이 매개변수는 "failed" 상태로 반환된 버퍼, 즉 완전히 확보되지 않은 버퍼의 개수를 집계합니다.
버퍼가 완전히 가져오지 못한 경우의 오류 코드는 GigE 카메라에서는 0xE1000014이고, USB 3.0 카메라에서는 0xE2000212입니다.
패킷 오류 횟수#
The Statistic_Failed_Packet_Count 이 매개변수는 스트림 그래버가 성공적으로 수신했으나 카메라 측에서 “실패”로 보고된 패킷의 수를 집계합니다.
패킷이 “실패”로 보고되는 가장 흔한 이유는 카메라가 패킷 재전송 요청을 처리할 수 없기 때문입니다. 예를 들어, 요청된 데이터가 카메라 메모리 내의 새로운 이미지 데이터로 이미 덮어쓰여진 경우 이러한 현상이 발생합니다.
'실패한 패킷 수'에는 모든 재전송 요청이 실패하여 손실된 것으로 간주되는 패킷은 포함되지 않습니다. 이 경우 '실패한 버퍼 수'는 증가하지만, '실패한 패킷 수'는 증가하지 않습니다.
마지막 블록 ID#
The Statistic_Last_Block_Id 이 매개변수는 마지막으로 가져온 블록 ID를 나타냅니다.
마지막 버퍼 오류 상태#
The Statistic_Last_Failed_Buffer_Status 이 매개변수는 마지막으로 오류가 발생한 버퍼의 상태 코드를 나타냅니다.
마지막 버퍼 오류 상태 메시지#
The Statistic_Last_Failed_Buffer_Status_Text 이 매개변수는 읽기 또는 쓰기 작업의 마지막 오류 상태를 나타냅니다.
누락된 프레임 수#
The Statistic_Missed_Frame_Count 이 매개변수는 카메라의 내부 프레임 버퍼가 이미 가득 차 있어 획득되었으나 건너뛴 프레임의 수를 계산합니다.
많은 바슬러(Basler) 카메라에는 여러 개의 전체 프레임을 저장할 수 있는 프레임 버퍼가 탑재되어 있습니다. ‘Missed Frame Count’ 값이 높다는 것은 호스트 컨트롤러가 카메라의 대역폭을 지원하지 못한다는 것을 의미하며, 즉 호스트 컨트롤러가 촬영된 이미지를 제때 가져오지 못하고 있음을 나타냅니다. 이로 인해 카메라는 내부 프레임 버퍼에 이미지를 버퍼링하게 됩니다. 내부 프레임 버퍼가 가득 차면 카메라는 새로 촬영된 센서 데이터를 건너뛰기 시작합니다.
패킷 재전송 횟수#
The Statistic_Resend_Packet_Count 이 매개변수는 재전송 요청에 의해 요청된 패킷의 수를 집계합니다.
정보
필터 드라이버를 사용 중인데 드라이버가 프레임의 “리더”(즉, 프레임의 시작을 나타내는 패킷)를 수신하지 못한 경우, 드라이버는 해당 프레임 전체를 무시합니다. 이 경우 재전송 요청이 전송되지 않으며 통계 매개변수도 증가하지 않습니다. 즉, “리더” 패킷이 손실되면 아무런 알림 없이 프레임 전체가 손실됩니다. Basler는 프레임 손실을 감지하기 위해 프레임 Counter 청크를 확인할 것을 권장합니다.
재전송 요청 횟수#
The Statistic_Resend_Request_Count 이 매개변수는 전송된 패킷 재전송 요청의 횟수를 집계합니다.
드라이버 유형과 스트림 그래버 설정에 따라, 스트림 그래버는 누락된 패킷 하나에 대해 여러 번의 요청을 보낼 수도 있고, 여러 패킷에 대해 한 번의 요청을 보낼 수도 있습니다. 따라서 ‘재전송 요청 횟수’와 ‘재전송 패킷 수’는 대부분 서로 다를 것입니다.
재동기화 횟수#
The Statistic_Resynchronization_Count 이 매개변수는 스트림 재동기화 횟수를 집계합니다.
스트리밍 과정에서 호스트의 동기화가 어긋나면, 호스트는 재동기화를 시작하고 카메라의 내부 버퍼가 비워집니다.
호스트가 특정 ID 순서의 스트림 패킷을 요청했으나, 장치가 다른 순서의 패킷을 전송할 경우 호스트의 동기화가 어긋날 수 있습니다. 이는 카메라와 호스트 간의 연결에 문제가 있을 때 발생할 수 있습니다. 호스트의 동기화가 어긋나면 대량의 이미지 손실이 발생합니다.
호스트 재동기화는 USB 3.0 및 USB3 Vision 사양에서 가장 심각한 오류 사례로 간주됩니다.
총 버퍼 개수#
GigE 카메라에서는, Statistic_Total_Buffer_Count 이 매개변수는 “성공” 또는 “실패” 상태로 반환된 버퍼의 수, 즉 성공적으로 가져온 버퍼와 완전히 가져오지 못한 버퍼를 모두 합산한 개수를 계산합니다. USB 카메라와 같은 다른 카메라의 경우, 처리된 버퍼의 수가 집계됩니다.
버퍼가 완전히 가져오지 못한 경우의 오류 코드는 GigE 카메라에서는 0xE1000014이고, USB 3.0 카메라에서는 0xE2000212입니다.
총 패킷 수#
The Statistic_Total_Packet_Count 이 매개변수는 “실패”로 보고된 패킷을 포함하여 수신된 모든 패킷을 집계합니다. 즉, 패킷 오류 횟수.
샘플 코드#
// ** General Parameters **
// Access Mode
AccessModeEnums accessMode = camera.GetStreamGrabberParams().AccessMode.GetValue();
// Auto Packet Size
camera.GetStreamGrabberParams().AutoPacketSize.SetValue(true);
// Maximum Buffer Size
camera.GetStreamGrabberParams().MaxBufferSize.SetValue(131072);
// Maximum Number of Buffers
camera.GetStreamGrabberParams().MaxNumBuffer.SetValue(16);
// Maximum Transfer Size
camera.GetStreamGrabberParams().MaxTransferSize.SetValue(1048568);
// Num Max Queued Urbs
camera.GetStreamGrabberParams().NumMaxQueuedUrbs.SetValue(64);
// Receive Thread Priority Override
camera.GetStreamGrabberParams().ReceiveThreadPriorityOverride.SetValue(true);
// Receive Thread Priority
camera.GetStreamGrabberParams().ReceiveThreadPriority.SetValue(15);
// Socket Buffer Size (socket driver only)
camera.GetStreamGrabberParams().SocketBufferSize.SetValue(2048);
// Status
StatusEnums streamGrabberStatus = camera.GetStreamGrabberParams().Status.GetValue();
// Transfer Loop Thread Priority
camera.GetStreamGrabberParams().TransferLoopThreadPriority.SetValue(15);
// Type of GigE Vision Filter Driver
camera.GetStreamGrabberParams().Type.SetValue(Type_WindowsIntelPerformanceDriver);
// Type: Socket Driver Available
int64_t i = camera.GetStreamGrabberParams().TypeIsWindowsIntelPerformanceDriverAvailable.GetValue();
// Type: Windows Filter Driver Available
int64_t i = camera.GetStreamGrabberParams().TypeIsWindowsFilterDriverAvailable.GetValue();
// Type: Windows Intel Performance Driver Available
int64_t i = camera.GetStreamGrabberParams().TypeIsSocketDriverAvailable.GetValue();
// ** Packet Resend Mechanism Parameters **
// Enable Resends
camera.GetStreamGrabberParams().EnableResend.SetValue(true);
// Packet Timeout
camera.GetStreamGrabberParams().PacketTimeout.SetValue(40);
// Frame Retention
camera.GetStreamGrabberParams().FrameRetention.SetValue(200);
// Maximum Number of Resend Requests
camera.GetStreamGrabberParams().MaximumNumberResendRequests.SetValue(25);
// Firewall Traversal Interval
camera.GetStreamGrabberParams().FirewallTraversalInterval.SetValue(10000);
camera.GetEventGrabberParams().FirewallTraversalInterval.SetValue(30000);
// ** Stream Destination Parameters **
// Transmission Type
camera.GetStreamGrabberParams().TransmissionType.SetValue(TransmissionType_Unicast);
// Destination Address
GenICam::gcstring destinationAddr = camera.GetStreamGrabberParams().DestinationAddr.GetValue();
// Destination Port
camera.GetStreamGrabberParams().DestinationPort.SetValue(0);
// ** Statistics Parameters **
// Buffer Underrun Count
int64_t bufferUnderrunCount = camera.GetStreamGrabberParams().Statistic_Buffer_Underrun_Count.GetValue();
// Failed Buffer Count
int64_t failedBufferCount = camera.GetStreamGrabberParams().Statistic_Failed_Buffer_Count.GetValue();
// Failed Packet Count
int64_t failedPacketCount = camera.GetStreamGrabberParams().Statistic_Failed_Packet_Count.GetValue();
// Last Block ID
int64_t lastBlockId = camera.GetStreamGrabberParams().Statistic_Last_Block_Id.GetValue();
// Last Failed Buffer Status
int64_t lastFailedBufferStatus = camera.GetStreamGrabberParams().Statistic_Last_Failed_Buffer_Status.GetValue();
// Last Failed Buffer Status Text
GenICam::gcstring lastFailedBufferStatusText = camera.GetStreamGrabberParams().Statistic_Last_Failed_Buffer_Status_Text.GetValue();
// Missed Frame Count
int64_t missedFrameCount = camera.GetStreamGrabberParams().Statistic_Missed_Frame_Count.GetValue();
// Resend Request Count
int64_t resendRequestCount = camera.GetStreamGrabberParams().Statistic_Resend_Request_Count.GetValue();
// Resend Packet Count
int64_t resendPacketCount = camera.GetStreamGrabberParams().Statistic_Resend_Packet_Count.GetValue();
// Resynchronization Count
int64_t resynchronizationCount = camera.GetStreamGrabberParams().Statistic_Resynchronization_Count.GetValue();
// Total Buffer Count
int64_t totalBufferCount = camera.GetStreamGrabberParams().Statistic_Total_Buffer_Count.GetValue();
// Total Packet Count
int64_t totalPacketCount = camera.GetStreamGrabberParams().Statistic_Total_Packet_Count.GetValue();
// ** General Parameters **
// Access Mode
string accessMode = camera.Parameters[PLStream.AccessMode].GetValue();
// Auto Packet Size
camera.Parameters[PLStream.AutoPacketSize].SetValue(true);
// Maximum Buffer Size
camera.Parameters[PLStream.MaxBufferSize].SetValue(131072);
// Maximum Number of Buffers
camera.Parameters[PLStream.MaxNumBuffer].SetValue(16);
// Maximum Transfer Size
camera.Parameters[PLStream.MaxTransferSize].SetValue(1048568);
// Num Max Queued Urbs
camera.Parameters[PLStream.NumMaxQueuedUrbs].SetValue(64);
// Receive Thread Priority Override
camera.Parameters[PLStream.ReceiveThreadPriorityOverride].SetValue(true);
// Receive Thread Priority
camera.Parameters[PLStream.ReceiveThreadPriority].SetValue(15);
// Socket Buffer Size (socket driver only)
camera.Parameters[PLStream.SocketBufferSize].SetValue(2048);
// Status
string streamGrabberStatus = camera.Parameters[PLStream.Status].GetValue();
// Transfer Loop Thread Priority
camera.Parameters[PLStream.TransferLoopThreadPriority].SetValue(15);
// Type of GigE Vision Filter Driver
camera.Parameters[PLStream.Type].SetValue(PLStream.Type.WindowsIntelPerformanceDriver);
// Type: Socket Driver Available
Int64 performanceDriverAvailable = camera.Parameters[PLStream.TypeIsWindowsIntelPerformanceDriverAvailable].GetValue();
// Type: Windows Filter Driver Available
Int64 filterDriverAvailable = camera.Parameters[PLStream.TypeIsWindowsFilterDriverAvailable].GetValue();
// Type: Windows Intel Performance Driver Available
Int64 socketDriverAvailable = camera.Parameters[PLStream.TypeIsSocketDriverAvailable].GetValue();
// ** Packet Resend Mechanism Parameters **
// Enable Resends
camera.Parameters[PLStream.EnableResend].SetValue(true);
// Packet Timeout
camera.Parameters[PLStream.PacketTimeout].SetValue(40);
// Frame Retention
camera.Parameters[PLStream.FrameRetention].SetValue(200);
// Maximum Number of Resend Requests
camera.Parameters[PLStream.MaximumNumberResendRequests].SetValue(25);
// Firewall Traversal Interval
camera.Parameters[PLStream.FirewallTraversalInterval].SetValue(10000);
camera.Parameters[PLEventGrabber.FirewallTraversalInterval].SetValue(30000);
// ** Stream Destination Parameters **
// Transmission Type
camera.Parameters[PLStream.TransmissionType].SetValue(PLStream.TransmissionType.Unicast);
// Destination Address
string destinationAddr = camera.Parameters[PLStream.DestinationAddr].GetValue();
// Destination Port
camera.Parameters[PLStream.DestinationPort].SetValue(0);
// ** Statistics Parameters **
// Buffer Underrun Count
Int64 bufferUnderrunCount = camera.Parameters[PLStream.Statistic_Buffer_Underrun_Count].GetValue();
// Failed Buffer Count
Int64 failedBufferCount = camera.Parameters[PLStream.Statistic_Total_Buffer_Count].GetValue();
// Failed Packet Count
Int64 failedPacketCount = camera.Parameters[PLStream.Statistic_Failed_Packet_Count].GetValue();
// Last Block ID
Int64 lastBlockId = camera.Parameters[PLStream.Statistic_Last_Block_Id].GetValue();
// Last Failed Buffer Status
Int64 lastFailedBufferStatus = camera.Parameters[PLStream.Statistic_Last_Failed_Buffer_Status].GetValue();
// Last Failed Buffer Status Text
string lastFailedBufferStatusText = camera.Parameters[PLStream.Statistic_Last_Failed_Buffer_Status_Text].GetValue();
// Missed Frame Count
Int64 missedFrameCount = camera.Parameters[PLStream.Statistic_Missed_Frame_Count].GetValue();
// Resend Packet Count
Int64 resendPacketCount = camera.Parameters[PLStream.Statistic_Resend_Packet_Count].GetValue();
// Resend Request Count
Int64 resendRequestCount = camera.Parameters[PLStream.Statistic_Resend_Request_Count].GetValue();
// Resynchronization Count
Int64 resynchronizationCount = camera.Parameters[PLStream.Statistic_Resynchronization_Count].GetValue();
// Total Buffer Count
Int64 totalBufferCount = camera.Parameters[PLStream.Statistic_Total_Buffer_Count].GetValue();
// Total Packet Count
Int64 totalPacketCount = camera.Parameters[PLStream.Statistic_Total_Packet_Count].GetValue();
이 예제 코드는 C++ 및 C# 언어에서만 사용할 수 있습니다.
pylon Viewer를 사용하여 파라미터를 손쉽게 설정할 수도 있습니다.