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