내쇼날 인스트루먼트 제품으로 7 비트 또는 8 비트 대신 9 비트 직렬 통신을 수행할 수 있습니까?

업데이트 됨 Nov 8, 2023

해당 제품

드라이버

  • NI-VISA
  • NI-Serial

문의사항

내쇼날 인스트루먼트의 시리얼 통신에 9 번째 데이터 비트를 추가할 수 있습니까?

해결책

특정 계측기의 직렬 프로토콜은 보다 일반적인 8 데이터 비트 및 패리티 비트가 아닌 9 비트 데이터 프레임을 사용합니다. 그러나 모든 내쇼날 인스트루먼트 시리얼 제품의 UART는 5 ~ 8 데이터 비트, Even / Odd / Mark / Space / None 패리티 및 1 / 1.5 / 2 정지 비트만을 지원합니다. UART는 9 데이터 비트를 직접 지원하지 않기 때문에 이를 달성할 수 있는 드라이버가 제공되지 않습니다.

9 비트와 통신하는 데 사용할 수 있는 두 가지 다른 해결 방법이 있습니다.

1. 패리티 비트를 9 번째 데이터 비트로 사용하십시오 :

송신:

  1. 포트를 8 데이터 비트로 설정해야합니다.
  2. 전송에 9 번째 비트를 추가하려면 전송되는 모든 바이트에 대해 패리티 비트를 Mark 또는 Space로 명시적으로 설정해야합니다. Mark는 높은 패리티 비트(1)이고 Space는 낮은 패리티 비트(0)입니다.

예를 들어 이진 000100010을 전송해야하는 경우 16 진수 0x88을 전송하고 패리티를 Space로 설정합니다. 대신 이진 000100011을 전송해야한다면 16 진수 0x88을 전송하지만 패리티는 Mark로 설정합니다. 바이너리로 표시될 때 최하위 비트가 직렬 전송으로 먼저 전송되므로 최하위 비트가 가장 왼쪽 비트입니다.

수신:

  1. 포트를 8 데이터 비트로 설정하고 패리티 검사를 활성화하고 Space 또는 Mark로 설정합니다.
  2. 한 번에 한 바이트 씩 읽습니다.
  3. 패리티 오류가 발생하면 9 번째 비트가 설정한 것과 반대입니다.
  4. 적절한 비트를 추가하십시오.

예를 들어 패리티를 Space로 설정한다고 가정해 봅시다. 바이트를 읽고 패리티 오류가 발생하면 9 번째 비트가 Mark이고 이에 따라 적절한 비트를 추가 할 수 있습니다.

한 가지 문제는 LabVIEW 7.0 및 이후 버전에서 NI-VISA가 패리티가 올바르지 않은 데이터 바이트를 수신하면 직렬 데이터를 오류 문자로 바꿉니다. 오류 문자는 기본적으로 0 입니다. LabVIEW 6.1 및 이전 버전은 패리티 에러 시 데이터 바이트를 대체 바이트로 대체하지 않습니다. visaconf.ini 파일을 수정하여 이 동작을 변경할 수 있습니다.

계측기가 주소 지정을 위해 9 번째 데이터 비트를 수신하고 송신 시 9 번째 비트에 데이터를 전송하지 않는다면, 계측기가 예상하는 부분에 패리티를 한 번만 설정하면됩니다.

오류 대체 비트를 사용하지 않도록 visaconf.ini 파일을 수정하는 방법 :

Windows XP 사용자의 경우 visaconf.ini 파일은 <Documents and Settings>\All Users\Application Data\National Instruments\Nivisa 폴더에 있습니다.

Windows Vista 이상 사용자의 경우 visaconf.ini 파일은 C:\ProgramData\National Instruments\NIvisa 폴더에 있습니다.

파일에 다음 행을 추가하고 저장하십시오.

[ASRL-RSRC-ALIAS]
DisableErrorReplacement = 1


LabVIEW 2010을 사용하는 일부 사용자는 컴퓨터를 다시 시작하거나 Measurement and Automation Explorer를 열 때 이 키가 손실될 수 있습니다. 런타임에 키가 항상 visaconf.ini 파일 내에 있는지 확인하려면 다음 코드를 사용하여 프로그래밍 방식으로 키를 추가할 수 있습니다.

위 코드의 파일 경로는 로컬 컴퓨터의 visaconf.ini 파일의 위치와 일치하도록 수정해야합니다.

2. 9 비트 프레임을 처리하는 별도의 마이크로 컨트롤러를 사용하십시오.

또 다른 옵션은 UART가있는 별도의 마이크로 컨트롤러를 사용하여 9 개의 데이터 비트 프레임을 처리하고 계측기와 컴퓨터 사이의 중개자로 배치하는 것입니다. 컴퓨터는 각 9 비트 프레임에 대해 두 개의 8 비트 데이터 프레임을 전송합니다. 하나는 첫 번째 8 비트, 두 번째는 9 번째 비트, UART는 이를 다시 하나의 9 비트 프레임으로 재구성하여 계측기로 전송합니다. 마찬가지로 UART는 계측기에서 9 비트 프레임을 수신하고 두 개의 8 비트 프레임을 컴퓨터에 반환합니다.