Error -1073807298가 VISA Read/Write 후에 발생합니다.

업데이트 됨 Jul 8, 2022

해당 제품

드라이버

  • NI-VISA

문의사항

NI-VISA를 사용하여 계측기에 Read/Write를 하려고합니다이때, 에러가 다음과 같이 발생합니다, 'Error  -1073807298 (Hex 0xBFFF003E) occured at an unidentified location'. 해결 방법이 있습니까?

해결책

1. 코드에 있는 모든 VISA 세션 참조가 Open 그리고 Close 하는 지 확인하십시오. 대부분의 VISA LabVIEW 코드는 다음의 패턴을 따릅니다.

  • VISA 참조 열기
  • 읽기 및 쓰기 수행
  • VISA 참조 닫기
이 코드 구조의 예를 보려면 도움말(Help) >> 예제 찾기(Find Examples..) 로 이동하셔서, LabVIEW의 예제 프로그램 인 Simple Serial.vi 을 확인하십시오.


2. 장치의 I / O 포트 (Modbus I / O, I / O 서버 등)를 간섭하는 프로세스가 없는지 확인하십시오. 이를 Distributed System Manager에서 확인할 수 있습니다.

3. 문제는 VISA Write IRP_MJ_FLUSH_BUFFER 요청으로 인해 장치에서 INVALID DEVICE REQUEST 응답으로 인해 발생할 수 있습니다. Default로, 각 VISA Read/Write 뒤에는 RS-232를 통해 통신 할 때 VISA Flush를 실행합니다. VISA 버퍼 설정을 변경하여 VISA Flush를 실행하지 않도록하여 이 오류를 피할 수 있습니다.

Flush 명령을 실행하지 않기 위해서는 먼저, VISA I / O Buffer 함수를 코드 시작 부분에 호출하고 (VISA Open 후에, Read/Write 이전에), 마스크 크기를 48로 지정하고 (16 + 32, 16은 수신 버퍼 용 마스크, 32 전송 버퍼의 마스크), 그리고 크기를 4k와 Read/Write로 예상되는 최대 데이터 사이의 값으로 지정해야 합니다.

중요 : 크기를 설정 시 Upper limit을 확인하십시오. 데이터를 전송하거나 수신하는 데 충분한 크기가 아니면 컴퓨터가 손상 될 수 있습니다.

추가 정보

Flush 함수를 호출하지 않으면, NI-VISA는 Write를 할 때마다 500ms 단위로 Segment로 분할 할 것 입니다.  NI-VISA가 4k 또는 혹은 그 이상의 값을 크기로 지정하면, Flush 를 호출하지 않습니다.