LabVIEW를 사용하여 바이너리 파일 쓰기 및 읽기

업데이트 됨 Mar 29, 2021

해당 제품

소프트웨어

  • LabVIEW

문의사항

LabVIEW를 사용하여 바이너리 파일을 읽고 쓰고 싶습니다. 또한 이진 파일에 2 차원 배열과 같은 데이터 구조를 쓰고 읽을 수 있도록 절차가 어떻게 작동하는지 이해하고 싶습니다.
네트워크 폴더에 쓰기 위해 이진 파일에 쓰기 vi를 사용하여 LabVIEW에서 전송 데이터 패킷 크기가 무엇인지 알고 싶습니다.

해결책

LabVIEW 프로그램은 프로그래밍≫파일 I/O 함수 팔레트에 있는 이진 파일에 쓰기 및 이진 파일에서 읽기 VI를 사용하여 이진 파일에 접근할 수 있습니다. NI 예제 탐색기 (도움말»예제 찾기...)에는 이러한 함수를 사용하는 방법을 보여주는 Fundamentals»File Input and Output»Read Binary File.vi 및 Write Binary File.vi에 몇 가지 예제가 있습니다.

Windows 및 IPv 프로토콜은 LabVIEW에서 전송되는 데이터 전송 패킷 크기를 결정합니다. 보다 구체적으로 기본 제공 Windows SMB 프로토콜은 최대 패킷 크기가 64KB인 데이터를 전송하는 데 사용됩니다.

추가 정보

바이너리 파일에 액세스하는 것은 다른 파일에 액세스하는 것과 동일한 코드 구조를 따릅니다. 특히 사용자는 파일을 열고 필요에 따라 읽기 및 쓰기 기능을 호출한 다음 파일을 닫습니다. 아래 이미지는 32 비트 부호 있는 정수를 바이너리 파일에 쓰는 간단한 경우를 보여줍니다.
바이너리 파일을 읽을 때 사용자는 데이터가 파일에 기록되었을 때의 형식을 알고 있어야 합니다. 이진 파일을 작성할 때 나중에 올바르게 다시 읽을 수 있도록 데이터가 저장되는 형식을 주의 깊게 기록하십시오. 바이너리 파일의 구조를 선택하는 것은 사용자의 몫이며 바이너리 파일에 대해 보편적으로 허용되는 형식이(ASCII와 달리) 없으므로 다른 응용 프로그램이나 운영 체제가 파일에서 의미 있는 데이터를 읽지 못할 수 있습니다.

이진 파일에 정수를 쓸 때 정수의 비트는 파일의 비트에 매핑됩니다. 예를 들어 I32가 바이너리 파일에 기록되면 32 비트 공간이 필요합니다.
I32 2D 배열을 이진 파일에 쓰는 것은 배열의 행과 열 수가 다를 수 있으므로 더 복잡합니다. 이 2D 배열 데이터를 단순화하기 위해 종종 이러한 차원을 설명하는 헤더와 함께 저장됩니다. 바이너리 파일에서 2D 배열을 읽으려면 LabVIEW는 8 바이트 헤더가 필요합니다. 이 헤더를 만드는 방법은 두 가지입니다.
  • 수동: 배열 크기 기능을 사용하여 이러한 값을 결정할 수 있습니다. FALSE 상수는 Prepend Array 또는 String Size에 연결되어야 합니까? 이진 파일에 쓰기 기능의 터미널.
  • 자동: 헤더를 자동으로 생성하기 위해 TRUE 상수를 Prepend Array 또는 String Size? 에 연결할 수 있습니다. 이진 파일에 쓰기 기능의 터미널(필수는 아님).
일반적으로, 헤더가 데스크에 저장되는 데이터의 종류에 따라 헤더가 달라 지므로 Write to Binary File 기능이 데이터 헤더를 자동으로 생성하도록 하는 것이 좋습니다. 그러나 사용자가 헤더 구조를 명시 적으로 알고 디스크에 쓰거나 읽어야 하는 경우가 있을 수 있습니다. 이 경우 온라인 참조를 사용하여 다양한 데이터 유형에 필요한 헤더를 결정할 수 있습니다.

아래 이미지는 2D 배열을 바이너리 파일에 쓰고 자동으로 헤더를 만드는 간단한 경우를 보여줍니다.

2진 파일을 읽으려면 예상 데이터 유형을 데이터 유형 입력에 연결하십시오. 예를 들어, 파일에 32 비트 정수의 2D 배열이 포함된 경우 32 비트 정수의 2D 배열을 데이터 유형 입력에 연결합니다. 그런 다음 LabVIEW는 더미 데이터 유형에 대한 적절한 헤더가 파일에 저장되어 있다고 가정하고 이를 사용하여 이진 정보를 추출합니다. 아래 이미지는 바이너리 파일에서 2D 데이터를 읽는 간단한 사례를 보여줍니다.