2013-11-15 2 views
0

BULKIO를 사용하여 2MB보다 큰 패킷을 보내려고합니다. /etc/omniORB.cfg에서 giopMaxMsgSize를 8388608로 수정했지만, 여전히 "BULKIO_dataFloat_Out_i에 의한 pushPacket 호출에 실패했습니다"라는 오류 메시지가 표시됩니다. 이 디버깅하는 방법에 대한 제안?BULKIO 큰 패킷 오류

답변

1

omniORB 로깅 수준을 조정하십시오 (REDHAWK 설명서, Appendix H, section 3 참조). 그것은 끔찍한 디버그 정보를 생성 할 수 있지만 문제의 범위를 좁히는 데 도움이 될 수 있습니다.

두 개의 C++ 구성 요소를 사용하여이 작업을 시도했지만 언급 한 omniORB.cfg 속성을 조정하여 큰 (> 2MB) BULKIO float 패킷을 보낼 수있었습니다. C++도 사용하고 있었습니까? 레드 호크 1.9.0?

+0

C++ 및 1.84 사용. 조만간 1.9로 옮길 계획입니다. – erf0099

0

일반적으로이 유형의 오류는 총 데이터 양이 giopMaxMsgSize (전체 바이트 수)를 초과 할 때 발생합니다. 우리가 8388608/4 = 2097152 float 값을 계산하면, float에 4 바이트가 있습니다. 따라서 벡터는 2097152 개의 실제 샘플 또는 1048576 개의 복잡한 샘플을 초과 할 수 없습니다.

이것을 체크하는 한가지 방법은 push를 호출하기 전에 출력 벡터의 크기를 기록하는 것입니다.