이미지 데이터 전송

DMA 엔진은 라인 스캔 및 영역 스캔 이미지 수집과 다른 규칙에 따라 PCI Express 버스를 통해 처리된 이미지 데이터를 할당된 GenTL 버퍼로 전송합니다.

영역 스캔 이미징에서 GenTL 버퍼는 다음 규칙에 따라 채워집니다.
● | 스캔의 첫 번째 수집된 라인 데이터는 기본적으로 새 버퍼의 시작 부분에 저장됩니다. StripeArrangement를 StripeArrangement로 설정하여 세로 이미지 반전을 사용하면 프레임의 첫 번째 수집된 라인 데이터가 새 버퍼의 마지막 전체 라인 위치에 저장됩니다. |
● | 호스트 메모리로의 이미지 전송이 완료되면 부분적으로 채워질 수 있는 버퍼가 처리를 위해 응용 프로그램에서 사용 가능하게 됩니다. |
● | 버퍼가 너무 작아서 완전한 프레임을 포함 할 수 없는 경우, 나머지 데이터는 버려집니다. |

라인 스캔 이미징에서 GenTL 버퍼는 다음 규칙에 따라 채워집니다.
● | 스캔의 첫 번째 수집된 라인 데이터는 기본적으로 새 버퍼의 시작 부분에 저장됩니다. StripeArrangement를 Geometry_1X_1YE로 설정하여 세로 이미지 반전을 사용하면 스캔의 첫 번째 수집된 라인 데이터가 새 버퍼의 마지막 전체 라인 위치에 저장됩니다. |
● | 버퍼는 정수 개의 이미지 라인 데이터를 포함합니다. |
● | 버퍼의 나머지 공간이 이미지 라인 데이터를 저장하기에 충분하지 않을 때, 획득은 새로운 버퍼로 계속되고, 채워진 버퍼는 처리를 위해 애플리케이션에 이용 가능해집니다. |
● | 스캔의 마지막 라인 데이터가 수집되면, 부분적으로 채워질 수 있는 마지막 버퍼가 처리를 위해 애플리케이션에서 사용 가능하게 됩니다. |

DMA 엔진은 라인 패딩 또는 스트라이프 패딩을 추가하여 버퍼에서 데이터를 다르게 구성할 수 있는 기능을 제공합니다.
노트 Coaxlink 드라이버 6.2 이전에 DMA 엔진은 2D 구조와 관계없이 전체 이미지 데이터를 단일 1D 엔티티로 전송했습니다. 처리된 이미지 데이터 라인이 대상 버퍼로 연결됩니다.
이미지 버퍼 패딩 모델
라인 패딩
LineWidth 및 LinePitch 기능은 라인 패딩을 제어합니다.
LinePitch > LineWidth를 사용하면 라인 패딩을 사용할 수 있습니다: DMA 엔진은 각 이미지 라인의 끝에 패딩의 LinePitch - LineWidth 바이트를 남겨 둡니다.
LinePitch는 0로 설정하여 라인 다음에 패딩을 사용 불가능하게 할 수 있습니다.
스트라이프 패딩
스트라이프는 인접한 라인의 그룹입니다. 높이 1의 스트라이프가 라인입니다.
StripeHeight 및 StripePitch 기능은 스트라이프 패딩을 제어합니다.
StripePitch > StripeHeight를 사용하면 스트라이프 패딩을 사용할 수 있습니다: DMA 엔진은 각 스트라이트 라인의 끝에 패딩의 StripePitch - StripeHeight 라인을 남겨 둡니다.
StripePitch는0로 설정하여 라인 다음에 패딩 사용을 불가능하게 할 수 있습니다.

DMA 엔진은 이미지를 수직으로 뒤집을 수 있는 기능을 제공합니다.
뒤집힌 이미지 데이터
수직 이미지 플립은 데이터 스트림 모듈의 StripeArrangement 기능에 의해 제어됩니다.
기본적으로 StripeArrangement는 1X_1Y로 설정됩니다: 수직 이미지 뒤집기가 비활성화됩니다.
StripeArrangement가 1X_1YE로 설정되면 드라이버는 다음 수식을 사용하여 버퍼에서 첫 번째 이미지 라인의 위치를 결정합니다.
BufferBase + (BufferSize + LinePitch - LineWidth) / LinePitch * LinePitch - LinePitch.
그 결과:
● | 버퍼가 너무 작으면, 그것은 (카메라에 의해 주어진) 잃어버린 이미지의 바닥 부분입니다; |
● | 라인은 BufferBase + n * LinePitch에서 시작할 것입니다. |
● | 완전한 라인만 전송됩니다; |
● | 버퍼 크기가 LinePitch 바이트의 배수가 아닌 경우 버퍼 끝에 있는 일부 바이트는 변경되지 않습니다. |
노트 위 공식을 계산할 때 LinePitch가 0와 같으면 LineWidth가 대신 사용됩니다. 마찬가지로 StripeHeight가 0이면 1이 대신 사용됩니다.

DMA 엔진은 1X_2YE 이미지를 언 스크램블하는 기능을 제공합니다.
StripeArrangement가 StripeArrangement로 설정되면, 드라이버는 다음 수식을 사용하여 카메라가 출력하는 두 번째 라인의 목적지(즉, 버퍼의 마지막 이미지 라인의 위치)를 결정합니다.
BufferBase + (BufferSize + LinePitch - LineWidth) / LinePitch * LinePitch - LinePitch
노트 이것은 하나의 완전한 라인을 수신할 만큼 충분히 큰 버퍼의 마지막 라인의 주소입니다.
그 결과:
● | 버퍼가 너무 작으면, 카메라에 의해 출력된 최종 라인(즉, 이미지의 중간 부분)은 손실될 것입니다; 응용 프로그램이 이를 방지하도록 합니다. |
● | 라인은 BufferBase + n * LinePitch에서 시작할 것이고, |
● | 전체 라인만 전송됩니다. (위 공식을 계산할 때 LinePitch가 0와 같으면 LineWidth가 대신 사용됩니다. 마찬가지로 StripeHeight가 0인 경우 1가 대신 사용됩니다.) |
StripeHeight 및 StripeHeight는 StripeHeight보다 큰 값으로 설정할 수 없습니다.

DMA 엔진은 1X_2YM 이미지를 언 스크램블하는 기능을 제공합니다.
노트 다음 그림에서 장치가 보낸 라인 번호와 블록 번호는 흰색이고 호스트가 수신한 라인 번호와 블록 번호는 검정색입니다.

스트림 통계 도구는 카드 출력에서 이미지 데이터 스트림을 모니터링하고 평균 프레임, 라인 및 데이터 속도를 응용 프로그램에 제공합니다.
스트림 통계 샘플링 방법
StatisticsSamplingSelector는 평균 간격을 결정합니다. 다음 중 하나일 수 있습니다:
● | LastSecond 또는 LastTenSeconds: 마지막으로 완료된 시간 슬롯은 1초 또는 10초입니다. |
● | Last2Buffers, Last2Buffers, Last2Buffers, Last2Buffers: 마지막으로 2, 10, 100 또는 1000개의 획득한 버퍼 |
● | LastAcquisition: 마지막 획득 활동 기간. 즉 마지막 DSStartAcquisition() 함수가 지금까지 호출되었기 때문에 획득이 여전히 활성화되어 있지 않으면 마지막 DSStopAcquisition() 함수 호출까지 호출됩니다. |
● | LastAcquisition:LastAcquisition와 LastAcquisition 명령 사이의 시간 간격. |
기본 샘플링 방법은 LastSecond입니다.
통계 데이터
통계 데이터는 다음 기능 중 하나를 얻을 때 효과적으로 계산됩니다.
● | StatisticsFrameRate는 프레임/초 단위로 표시된 평균 프레임 속도를 보고합니다 (영역 스캔). |
● | StatisticsLineRate는 프레임/초 단위로 표시된 평균 프레임 속도를 보고합니다 (라인 스캔). |
● | StatisticsDataRate는 메가 바이트/초로 표시되는 평균 데이터 속도를 보고합니다. |
평균화 간격 동안 채워진 모든 GenTL 버퍼에 대해 도구는 다음을 계산합니다:
● | 채워진 GenTL 버퍼의 수와 해당 프레임 수(영역 스캔) 또는 라인(라인 스캔) |
● | 이미지 데이터의 전송 바이트 수입니다. |
관련 GenICam 기능은 GenTL 데이터 스트림 모듈의 스트림 통계 범주에 모아서 희소합니다.