문제

이 데이터 스트림을 읽고 구문 분석하고 유용한 유용한 기능을 수행 해야하는 임베디드 시스템에서 실행되는 이진 데이터와 소프트웨어의 UDP 패킷을 뱉어내는 외부 장치가 있습니다. 이진 데이터는 파일에도 기록됩니다. UDP 스트림 또는 파일에서 직접 입력을 쉽게 가져갈 수있는 파서를 작성하고 데이터를 특정 형식으로 구문 분석 한 다음 출력을 파일 (예 : MATLAB DAT 파일) 또는 다른 프로세스로 지시합니다. 그것은 실시간 처리를 수행 할 것입니다. 이것에 도움이되는 리소스가 있습니까? 이것에 대해 가장 좋은 방법은 무엇입니까? C ++ 스트림을 사용하는 것이 합리적이라고 생각하지만 사용자 지정 출력 스트림을 만드는 데 익숙하지 않습니다. 이것은 좋은 접근 방식처럼 보입니까, 아니면 더 좋은 방법이 있습니까?

감사.

도움이 되었습니까?

해결책

이진 데이터의 아름다움은 일반적으로 매우 고정 된 형식이라는 것입니다. 구문 분석 방법은 수신 된 패킷에 매핑하는 구조를 선언 한 다음 유형 캐스트를 사용하여 필드를 구조 요소로 읽는 것입니다.

아름다움은 이것이 구문 분석이 필요하지 않다는 것입니다.

구조 포장 규칙에주의해야하며, Endian- 구조 맵을 정확히 동일한 방식으로 만들려면 엔디 언에주의를 기울여야합니다. C "오프셋"및 "크기"매크로를 사용하면 일부 디버그 정보를 방출하여 구조가 실제로 매핑되는 것으로 생각되는지 확인하는 데 유용합니다.

포장 규칙은 일반적으로 지시문 (예 : #Pragma 's) 또는 명령 줄 옵션으로 변경 될 수 있습니다. 당신이 붙어있는 엔디 안 성. 임베디드 시스템이 사용하는 것과 다른 경우, 모든 필드를 바이트로 선언하거나 "NTOH"매크로와 같은 것을 사용하여 바이트 교환을 수행하십시오.

다른 팁

뉴저지 기계 코드 툴킷 임의의 이진 패턴을 디코딩하기위한 체계입니다. 원래 디코딩 명령 세트를 위해 설계되었지만 메시지 형식을 디코딩하는 데 적합해야합니다. 이진 형식에 대한 설명을 제공하고 해당 형식의 필드에 액세스하기 위해 코드를 합성합니다 (유효한 경우). 따라서 필드가 어디에 있는지 또는 인코딩 된 방법에 대해 생각하기보다는 생성 된 기능 호출을 사용하여 메시지 필드를 참조 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top