From 11:00 PM CDT Friday, Nov 8 - 2:30 PM CDT Saturday, Nov 9, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



Visual Basic 6.0에서 DAQ 프로그래밍할 때, "Variable Not Defined"라는 에러 발생.



하드웨어: Multifunction DAQ (MIO)

문제점:
Visual Basic 6.0에서 NI-DAQmx 프로그래밍중, 계속 "Variable Not Defined"라는 에러가 발생합니다. NI-DAQmx C reference Help에서 functions와 arguments를 모두 확인하였습니다. 무엇이 문제입니까?

솔루션:
NI-DAQmx C API Visual Basic 6.0 Help를 보면, 거의 모든(most of) Visual Basic 6.0 API fuctions와 arguments들이 C API와 동일하다고 언급되어 있습니다. 그리고 Help 파일에서는 "C API와 Visaul Basic 6.0 API의 주요 차이점이 있다면, 그것은 function Parameters의 데이터 타입입니다."라고 언급되어 있습니다. 실제로 NI-DAQmx C reference에서 정의된 몇 개의(several) function arguments들은 Visual Basic 6.0의 그것과 동일하지 않습니다. 만약 NI-DAQmx C feference Help에서 정의된대로 Visual Basic 6.0 코드를 작성하면, 위에서 언급한 해당 argument들에서 에러가 발생할 것입니다. Visual Basic 6.0에서는 여러분들이 사용하는 arguments가 정의되지 않아서 에러를 발생한다고 할 것입니다.

어떤 arguments들이 NI-DAQmx C Reference Help에서 정의된 것과 다른지 알아보기 위해서는, 일단 정의된 대로 프로그래밍을 하신후 에러가 발생하면 Visual Basic 6.0의 Object Browser(객체찾아보기)에서 해당 arguments를 확인하는 작업을 하셔야 합니다.

예를 들어보겠습니다. DAQmxCreateAIVoltageChan이라는 함수를 NI-DAQmx C Reference Help에서 찾아보면 "Units" arguments에 해당하는 데이터 타입으로 DAQmx_Val_VoltsDAQmx_Val_FromCustomScale을 정의하고 있습니다. (아래 그림 참고)


[+] Enlarge Picture


정의된대로 하면 C 코드에서는 잘 돌아가는 반면, Visual Basic 6.0에서는 "Variable Not Defined"라는 에러를 발생합니다. 이제 Object Browser(객체찾아보기)에서 NIDAQmxCAPI라는 라이브러리를 찾아보면 Visual Basic 6.0에서는 DAQmx_Val_VoltageUnits1_Volts라는 argument를 선택하셔야 한다는 것을 확인할 수 있을 것입니다.(아래 그림 참고) 해당 argument는 NI-DAQmx C Reference Help에 정의되어 있지 않습니다. 그러나 NIDAQmxCAPI 라이브러리에는 포함되어 있습니다.


[+] Enlarge Picture



관련 링크:
KnowledgeBase 39BF3M1E: NI-DAQmx Support in Visual Basic 6.0
Product-Specific Support: Measurement Studio for Visual Basic Support

첨부:


Figure 1.JPG - Figure 1.JPG
Figure 2.JPG - Figure 2.JPG



리포트 날짜: 07/24/2006
마지막 업데이트: 05/06/2007
문서 번호: 3ZND4K9X