Stream Grabber Parameters#
이 토픽에서는 Stream Grabber와 관련된 Parameter에 대해 설명합니다.
General Parameters#
Access Mode#
이 AccessMode Parameter는 현재 응용 프로그램이 디바이스에 액세스하는 모드를 나타냅니다.
Control: 응용 프로그램이 디바이스에 대한 제어 권한을 가지고 있습니다. 다른 응용 프로그램은 계속해서 디바이스를 모니터링 할 수 있으며, 제어 권한을 넘겨받거나 디바이스에 대한 독점적 액세스 권한을 얻도록 요청할 수 있습니다.Exclusive: 응용 프로그램이 디바이스에 대한 독점적 액세스 권한을 가지고 있습니다. 다른 응용 프로그램은 디바이스를 제어하거나 모니터링 할 수 없습니다.Monitor: 응용 프로그램이 디바이스에 대해 모니터링액세스, 즉 읽기 전용 액세스 권한을 가지고 있습니다.NotInitialized: 디바이스에 대한 액세스가 초기화되지 않았습니다.
이 파라미터는 읽기 전용입니다.
Auto Packet Size#
다음을 사용하십시오. AutoPacketSize Parameter를 사용하여 이더넷을 통해 전송되는 데이터 패킷의 크기를 최적화합니다.
Parameter가 다음으로 설정되면 true, 카메라는 가능한 가장 큰 패킷 크기를 찾기 위해 패킷 크기를 자동으로 협상합니다.
현재 패킷 크기를 검색하려면 다음의 값을 가져옵니다. GevSCPSPacketSize 파라미터.
큰 패킷을 사용하면 이미지 전송 시 오버헤드가 줄어듭니다. 최대 패킷 크기는 네트워크 하드웨어 및 그 구성에 따라 다릅니다.
Maximum Buffer Size#
다음을 사용하십시오. MaxBufferSize Parameter를 사용하여 이미지 캡처에 사용되는 버퍼의 최대 크기(바이트 단위)를 지정합니다.
캡처 응용 프로그램은 캡처를 시작하기 전에 이 Parameter를 설정해야 합니다.
Maximum Number of Buffers#
다음을 사용하십시오. MaxNumBuffer Parameter를 사용하여 이미지 캡처에 동시에 사용할 수 있는 최대 버퍼 수를 지정합니다.
Maximum Transfer Size#
다음을 사용하십시오. MaxTransferSize Parameter를 사용하여 최대 USB 데이터 전송 크기(바이트)를 지정합니다. 기본값은 대부분의 응용 프로그램에 적합합니다. CPU 부하를 낮추려면 값을 늘리십시오.
응용 프로그램이 이미지 스트림을 수신하지 못하는 경우 USB 호스트 어댑터 드라이버에서 값을 줄여야 할 수 있습니다. 최대값은 운영 체제에 따라 다릅니다.
Num Max Queued URBs#
다음을 사용하십시오. NumMaxQueuedUrbs Parameter를 사용하여 동시에 대기열에 넣을 수 있는 최대 USB 요청 블록(URB) 수를 지정합니다.
이 값을 늘리면 안정성이 향상되고 지터가 줄어들 수 있지만, 호스트 컴퓨터에서 더 많은 리소스가 필요합니다.
시스템 Memory 부족과 관련된 오류 메시지(예: "Failed to probe and lock buffer=0xe2010130" 또는 "Failed to submit transfer status=0xe2100001")가 발생하는 경우 이 값을 줄이면 도움이 될 수 있습니다.
Receive Thread Priority Override#
다음을 사용하십시오. ReceiveThreadPriorityOverride 수신 스트림 패킷을 처리하는 스레드에 사용자 지정 priority를 할당할 수 있는 parameter입니다. 다음의 경우에만 사용할 수 있습니다. socket driver 가 사용됩니다.
priority를 할당하려면 다음을 사용하십시오. ReceiveThreadPriority 파라미터.
Receive Thread Priority#
다음을 사용하십시오. ReceiveThreadPriority parameter를 사용하여 수신 스레드의 스레드 priority를 설정합니다. 다음의 경우에만 사용할 수 있습니다. socket driver 가 사용됩니다.
priority를 할당하려면 다음을 수행하십시오. ReceiveThreadPriorityOverride 파라미터를 다음으로 설정해야 합니다. true.
Socket Buffer Size#
다음을 사용하십시오. SocketBufferSize parameter를 사용하여 socket buffer 크기를 킬로바이트 단위로 설정합니다. 다음의 경우에만 사용할 수 있습니다. socket driver 가 사용됩니다.
Status#
이 Status parameter는 스트림 그래버의 현재 상태를 나타냅니다.
Closed: 스트림 그래버가 닫혀 있습니다.Locked: 스트림 그래버가 잠겨 있습니다.NotInitialized: 스트림 그래버가 초기화되지 않았습니다.Open: 스트림 그래버가 열려 있습니다.
이 파라미터는 읽기 전용입니다.
Transfer Loop Thread Priority#
다음을 사용하십시오. TransferLoopThreadPriority parameter를 사용하여 스트림 인터페이스의 USB 요청을 처리하는 스레드의 priority를 지정합니다.
pylon에는 USB 전송 계층에 속하는 두 개의 스레드, 즉 이미지 URB(USB request block)용 스레드 하나와 이벤트 URB용 스레드 하나가 있습니다. 전송 계층은 URB를 xHCI driver에 대기시키고 전달된 URB에 대해 버스를 폴링합니다.
다음 항목을 통해 두 스레드의 priority를 제어할 수 있습니다. TransferLoopThreadPriority 파라미터.
Windows에서는 기본적으로 parameter가 다음 값으로 설정됩니다.
- 호스트 응용 프로그램이 관리자 권한 으로 실행되는 경우 25
- 호스트 응용 프로그램이 관리자 권한 없이 실행되는 경우 15 이하
Linux 및 macOS에서는 기본 parameter 값과 parameter 값 범위가 다를 수 있습니다.
전송 루프 priority는 항상 그래브 엔진 스레드 priority(,InternalGrabEngineThreadPriority parameter) 및 그래브 루프 스레드 priority(GrabLoopThreadPriority parameter)보다 높아야 합니다.
자세한 내용은 pylon API Documentation의 Application Settings for High Performance 섹션을 참조하십시오.
Type of GigE Vision Driver#
다음을 사용하십시오. Type parameter를 사용하여 호스트 응용 프로그램의 GigE Vision driver 유형을 설정합니다.
WindowsFilterDriver: 호스트 응용 프로그램이 다음을 사용합니다. pylon GigE Vision Filter Driver.WindowsPerformanceDriver(pylon 버전 7.1에서 지원 중단됨): 호스트 응용 프로그램은 다음을 사용합니다. pylon GigE Vision Performance Driver.SocketDriver: 호스트 응용 프로그램이 다음을 사용합니다. pylon GigE Vision Socket Driver.RDMADriver: 호스트 응용 프로그램이 다음을 사용합니다. pylon RDMA Driver.NoDriverAvailable: 적합한 드라이버가 설치되어 있지 않습니다. 드라이버 유형을 설정할 수 없습니다.
드라이버 유형에 대한 자세한 내용은 Drivers를 참조하십시오.
Type: Socket Driver Available#
이 TypeIsSocketDriverAvailable 파라미터는 다음이 현재 사용 가능한지(1) 사용할 수 없는지(0) 나타냅니다. pylon GigE Vision Socket Driver 현재 사용 가능한지(1) 사용할 수 없는지(0) 나타냅니다.
Type: Windows Filter Driver Available#
이 TypeIsWindowsFilterDriverAvailable 파라미터는 다음이 현재 사용 가능한지(1) 사용할 수 없는지(0) 나타냅니다. pylon GigE Vision Filter Driver 현재 사용 가능한지(1) 사용할 수 없는지(0) 나타냅니다.
Type: Windows Intel Performance Driver Available#
이 TypeIsWindowsIntelPerformanceDriverAvailable 파라미터는 다음이 현재 사용 가능한지(1) 사용할 수 없는지(0) 나타냅니다. pylon GigE Vision Performance Driver 현재 사용 가능한지(1) 사용할 수 없는지(0) 나타냅니다.
Packet Resend Mechanism Parameters#
패킷 재전송 메커니즘(GigE Vision 전용)은 누락된 데이터 패킷을 감지하고 재전송하여 네트워크 성능을 최적화합니다.
pylon GigE Vision Filter 및 Socket Driver는 고급의 강력한 패킷 재전송 메커니즘을 제공합니다.
이를 통해 세밀한 조정이 가능하며, 최대 요청 횟수에 도달할 때까지 연속으로 여러 번 재전송 요청을 보낼 수 있습니다.
드라이버가 패킷(예: 리더, 페이로드 또는 트레일러 패킷)이 누락된 것을 감지하면 지정된 시간 동안 대기합니다. 지정된 시간 내에 패킷이 도착하지 않으면 드라이버는 손실된 패킷을 검색하기 위해 하나 이상의 재전송 요청을 보낼 수 있습니다.
연속된 범위의 페이로드 패킷이 누락된 경우 드라이버는 누락된 패킷 범위에 대한 단일 "일괄 재전송 요청(batch resend request)"을 자동으로 보냅니다. 또한 드라이버는 손실된 것으로 간주된 재전송 요청에 대해 자동으로 재전송 요청을 보낼 수 있습니다.
Enable Resends#
다음을 사용하십시오. EnableResend 파라미터는 현재 선택된 항목에 대한 패킷 재전송 메커니즘을 활성화 또는 비활성화합니다. GigE Vision 드라이버 유형.
Packet Timeout#
다음을 사용하십시오. PacketTimeout 파라미터는 재전송 요청을 시작하기 전에 필터 드라이버가 다음에 예상되는 패킷을 기다리는 시간(밀리초)을 지정합니다.
파라미터가 inter-packet delay보다 더 긴 시간 간격으로 설정되어 있는지 확인하십시오.
Frame Retention#
다음을 사용하십시오. FrameRetention 파라미터는 프레임의 모든 패킷을 수신하는 데 소요되는 최대 시간(밀리초)을 지정합니다. 타이머는 첫 번째 패킷이 수신될 때 시작됩니다. 지정된 시간 내에 전송이 완료되지 않으면 해당 프레임은 "Failed" 상태로 전달됩니다.
Maximum Number of Resend Requests#
다음을 사용하십시오. MaximumNumberResendRequests 파라미터는 누락된 패킷당 최대 재전송 요청 횟수를 지정합니다.
Firewall Traversal Interval#
다음을 사용하십시오. FirewallTraversalInterval 파라미터는 방화벽이 GigE Vision 패킷을 차단하는 것을 방지합니다.
이 파라미터는 스트림 그래버와 이벤트 그래버 모두에서 사용할 수 있습니다. 즉, GigE Vision Streaming Protocol(GVSP) 패킷과 Message Channel Source Port(MCSP) 패킷을 처리하는 데 사용됩니다. 두 가지 패킷 유형에 대해 개별적으로 구성해야 합니다. 자세한 내용은 아래의 코드 샘플을 참조하십시오.
활성화된 경우, 그래버는 방화벽 차단을 방지하는 트래픽 통신을 시뮬레이션하기 위해 특정 패킷을 보냅니다.
기본적으로 지정된 스트리밍 세션 동안 GVSP 패킷은 10초마다, MCSP 패킷은 30초마다 패킷이 전송됩니다.
방화벽에 맞게 최적화하도록 밀리초 단위로 파라미터를 설정할 수 있습니다.
언제 FirewallTraversalInterval parameter가 0으로 설정되면 Firewall Traversal 기능이 비활성화된 것으로 간주됩니다.
Stream Destination Parameters#
다음 파라미터(GigE Vision 전용)를 사용하여 스트림 그래버가 캡처된 데이터를 전송할 위치를 구성할 수 있습니다.
스트림 그래버는 스트림 데이터를 특정 단일 장치나 네트워크 내의 여러 장치로 보낼 수 있습니다.
Transmission Type#
다음을 사용하십시오. TransmissionType parameter를 통해 네트워크 내에서 스트림 데이터가 전송되는 방식을 정의할 수 있습니다. 파라미터를 다음 값으로 설정할 수 있습니다:
-
Unicast(기본값): 스트림 데이터가 단일 로컬 네트워크의 장치, 대개 카메라의 GigE 네트워크 어댑터로 전송됩니다(참조: destination address). 다른 장치는 스트림 데이터를 수신할 수 없습니다. -
LimitedBroadcast: 스트림 데이터가 모든 로컬 네트워크의 장치들(255.255.255.255)로 전송되며, 심지어 스트림 데이터 수신에 관심이 없는 장치에도 전송됩니다. 대규모 로컬 네트워크에서는 이로 인해 많은 양의 네트워크 대역폭이 소비됩니다. 이 전송 유형을 사용하려면 다음을 설정해야 합니다. controlling and monitoring applications. -
SubnetDirectedBroadcasting: 스트림 데이터가 모든 스트림 데이터 수신에 관심이 없더라도 카메라와 동일한 subnet 에 있는 장치로 전송됩니다. 서브넷이 작을 경우 네트워크 대역폭을 절약할 수 있습니다. 서브넷 외부에 있는 장치는 스트림 데이터를 수신할 수 없으므로, 이 전송 방식은 보안 목적 등에 유용할 수 있습니다.서브넷 다이렉티드 브로드캐스팅의 경우, 스트림 그래버는 서브넷 브로드캐스트 주소를 사용합니다. 서브넷 브로드캐스트 주소는 카메라의 IP 주소와 카메라 서브넷 마스크의 비트 보수 간에 비트 단위 OR 연산을 수행하여 얻어집니다(destination address 참조). 이 전송 유형을 사용하려면 controlling and monitoring applications을(를) 설정해야 합니다.
정보
- 카메라의 IP 주소와 서브넷 마스크를 설정하려면 pylon IP Configurator을(를) 사용하십시오.
- IP 주소, 서브넷 마스크, 서브넷 브로드캐스트 주소에 대한 자세한 내용은 Online IP Subnet Calculator 웹사이트를 참조하십시오.
-
Multicast: 스트림 데이터가 selected 로컬 네트워크의 장치. 데이터 수신에 관심이 있는 장치로만 데이터가 전송되므로 네트워크 대역폭이 절약됩니다. 또한 데이터를 전송할 장치를 정확하게 지정할 수 있습니다.멀티캐스트를 사용하려면, stream destination address 멀티캐스트 그룹 주소(224.0.0.0~239.255.255.255)로 설정해야 합니다. 또한 다음을 설정해야 합니다. controlling and monitoring applications. 그러면 pylon API가 다른 장치가 참여할 수 있는 멀티캐스트 그룹의 생성 및 관리를 자동으로 처리합니다. -
UseCameraConfig: 카메라에서 스트림 전송 구성을 읽어옵니다. 다음을 설정하려는 경우에만 이 옵션을 사용하십시오. 모니터링 애플리케이션.
Controlling and Monitoring Applications#
제한된 브로드캐스트, 서브넷 다이렉티드 브로드캐스트 또는 멀티캐스트를 사용할 때는 일반적으로 하나의 카메라에서 여러 대상로 이미지 데이터 스트림을 전송하려고 합니다.
이를 달성하려면 정확히 하나의 제어(controlling) 애플리케이션과 하나 이상의 모니터링 애플리케이션을 설정해야 합니다.
- 제어(controlling) 애플리케이션은 이미지 취득을 시작하고 중지합니다. 또한 카메라 구성을 변경할 수 있습니다.
- 모니터링 애플리케이션은 스트림 데이터를 수신합니다. 모니터링 애플리케이션은 읽기 전용 모드로 카메라를 엽니다. 즉, 이미지 취득을 시작 및 중지하거나 카메라 구성을 변경할 수 없습니다.
테스트 목적으로 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 Documentation의 GigE Multicast/Broadcast 섹션을 참조하십시오.
Destination Address#
이 DestinationAddr 파라미터는 스트림 그래버가 모든 스트림 데이터를 전송하는 IP 주소를 나타냅니다.
파라미터의 값과 액세스 모드는 다음 사항에 따라 달라집니다. TransmissionType 파라미터 값:
| TransmissionType Parameter Value | DestinationAddr Parameter Value | DestinationAddr Access Mode |
|---|---|---|
Unicast | 카메라의 GigE 네트워크 어댑터 IP 주소 | Read-only |
LimitedBroadcast | 255.255.255.255 | Read-only |
SubnetDirectedBroadcasting | (카메라의 IP 주소) OR NOT (카메라의 서브넷 마스크) | Read-only |
Multicast | Default: 239.0.0.1 Allowed range: 224.0.0.0 to 239.255.255.255a | Read/Write |
-
이 대역의 일부 주소는 예약되어 있습니다. 확실하지 않은 경우 239.255.0.0에서 239.255.255.255 사이의 주소를 사용하십시오. 이 대역은 RFC 2365에 따라 로컬 관리 주소 공간으로 지정되어 있습니다.
Destination Port#
이 DestinationPort 파라미터는 스트림 그래버가 모든 스트림 데이터를 전송할 포트를 나타냅니다.
파라미터가 0으로 설정된 경우 pylon은 사용되지 않는 포트를 자동으로 선택합니다.
자세한 내용은 pylon API Documentation의 Selecting a Destination Port 섹션을 참조하십시오.
Statistics Parameters#
pylon API는 카메라가 올바르게 설정되었는지, 하드웨어 구성 요소가 적절한지, 시스템이 원활하게 작동하는지 확인할 수 있는 통계 파라미터를 제공합니다.
카메라 시작 시 모든 통계 파라미터는 0으로 설정됩니다. 이미지를 계속해서 그랩하는 동안 파라미터가 지속적으로 업데이트되어, 예를 들어 손실된 이미지나 불완전하게 그랩된 버퍼에 대한 정보를 제공합니다.
Buffer Underrun Count#
이 Statistic_Buffer_Underrun_Count 파라미터는 큐에 버퍼가 없어 손실된 프레임 수를 카운트합니다.
이 파라미터 값은 이미지가 수신되었으나 드라이버 입력 큐에 대기 중인 빈 버퍼가 없어 프레임이 손실될 때마다 증가합니다.
Failed Buffer Count#
이 Statistic_Failed_Buffer_Count 파라미터는 "failed" 상태로 반환된 버퍼의 수, 즉 불완전하게 그랩된 버퍼의 수를 카운트합니다.
불완전하게 그랩된 버퍼의 에러 코드는 GigE 카메라의 경우 0xE1000014이고 USB 3.0 카메라는 0xE2000212입니다.
Failed Packet Count#
이 Statistic_Failed_Packet_Count 파라미터는 스트림 그래버에서 성공적으로 수신되었지만 카메라에서 "failed"로 보고된 패킷을 카운트합니다.
패킷이 "failed"로 보고되는 가장 일반적인 이유는 카메라가 패킷 재전송(resend) 요청을 처리할 수 없었기 때문입니다. 이는 예를 들어 요청된 데이터가 카메라 메모리 내부의 새로운 이미지 데이터에 의해 이미 덮어쓰여진 경우에 발생합니다.
Failed Packet Count는 모든 재전송 요청이 실패하여 손실된 것으로 간주되는 패킷을 카운트하지 않습니다. 이 경우 Failed Buffer Count는 증가하지만 Failed Packet Count는 증가하지 않습니다.
Last Block ID#
이 Statistic_Last_Block_Id 파라미터는 마지막으로 그랩된 블록 ID를 나타냅니다.
Last Failed Buffer Status#
이 Statistic_Last_Failed_Buffer_Status parameter는 마지막으로 실패한 버퍼의 상태 코드를 나타냅니다.
Last Failed Buffer Status Text#
이 Statistic_Last_Failed_Buffer_Status_Text 파라미터는 읽기 또는 쓰기 작업의 마지막 에러 상태를 나타냅니다.
Missed Frame Count#
이 Statistic_Missed_Frame_Count 파라미터는 카메라의 내부 프레임 버퍼가 이미 가득 차서 획득되었으나 건너뛴 프레임 수를 카운트합니다.
많은 Basler 카메라에는 여러 개의 완전한 프레임을 저장할 수 있는 프레임 버퍼가 장착되어 있습니다. 높은 Missed Frame Count는 호스트 컨트롤러가 카메라이 대역폭을 지원하지 않음을, 즉 호스트 컨트롤러가 획득한 이미지를 제때 가져오지 못하고 있음을 나타냅니다. 이로 인해 카메라는 내부 프레임 버퍼에 이미지를 버퍼링합니다. 내부 프레임 버퍼가 가득 차면 카메라는 새로 획득한 센서 데이터를 건너뛰기 시작합니다.
Resend Packet Count#
이 Statistic_Resend_Packet_Count 파라미터는 재전송 요청으로 요청된 패킷의 수를 카운트합니다.
정보
Filter Driver를 사용 중이고 드라이버가 프레임의 "leader", 즉 프레임의 시작을 나타내는 패킷을 수신하지 못한 경우 전체 프레임을 무시합니다. 재전송 요청이 전송되지 않으며 통계 파라미터도 증가하지 않습니다. 즉, "leader" 패킷이 손실되면 알림 없이 전체 프레임이 손실됩니다. Basler는 손실된 프레임을 감지하기 위해 Frame Counter chunk를 확인할 것을 권장합니다.
Resend Request Count#
이 Statistic_Resend_Request_Count 파라미터는 전송된 패킷 재전송 요청의 수를 카운트합니다.
driver type 및 스트림 그래버 설정에 따라, 스트림 그래버는 누락된 패킷 하나에 대해 여러 번의 요청을 보낼 수도 있고 여러 패킷에 대해 하나의 요청을 보낼 수도 있습니다. 따라서 Resend Request Count와 Resend Packet Count는 서로 다를 가능성이 높습니다.
Resynchronization Count#
이 Statistic_Resynchronization_Count 파라미터는 스트림 재동기화 횟수를 카운트합니다.
스트리밍 프로세스 중에 호스트 동기화가 해제되면 재동기화를 시작하고 카메라의 내부 버퍼가 플러시됩니다.
특정 ID 시퀀스의 스트림 패킷을 요청했지만 디바이스가 다른 시퀀스의 패킷을 전송하는 경우 호스트가 동기화를 상실할 수 있습니다. 이는 카메라와 호스트 간의 연결에 문제가 있을 때 발생할 수 있습니다. 호스트 동기화 상실은 대규모 이미지 손실을 초래합니다.
호스트 재동기화는 USB 3.0 및 USB3 Vision 사양에서 가장 심각한 오류 케이스 중 하나로 간주됩니다.
Total Buffer Count#
GigE 카메라에서 Statistic_Total_Buffer_Count 파라미터는 "성공" 또는 "실패" 상태(즉, 성공적으로 또는 불완전하게 그랩된 모든 버퍼)로 반환된 버퍼의 수를 카운트합니다. USB 카메라 등의 다른 카메라에서는 처리된 버퍼의 수가 카운트됩니다.
불완전하게 그랩된 버퍼의 에러 코드는 GigE 카메라의 경우 0xE1000014이고 USB 3.0 카메라는 0xE2000212입니다.
Total Packet Count#
이 Statistic_Total_Packet_Count 파라미터는 "실패"로 보고된 패킷을 포함하여 수신된 모든 패킷을 카운트합니다. Failed 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를 사용하여 파라미터를 손쉽게 설정할 수 있습니다.