랩뷰 초급 강의 - LabVIEW의 기다림 함수에 대해 알아보자. LabVIEW는 데이터를 처리하고자 할때 다수의 While문을 사용하여 처리를 하게 됩니다. 많은 사람들이 LabVIEW로 구현을 할 때 While문 안에 기다림 함수를 넣지않아 CPU 과부하를 만드는데요. 이러한 경우 간단한 프로그램을 구현했음에도 불구하고 CPU의 점유율이 100%에 육박하는 현상을 발생시키게 됩니다. 이러한 현상이 발생하는 이유는 LabVIEW의 While문은 내부적으로 CPU에서 각각의 Thread로 처리가 되는데 While문에 기다림 함수가 없으면 CPU가 관련 Thread를 무한루프로 돌리기 때문에 CPU 입장에서는 처리해야 하는 일이 많아지기 때문입니다. 이러한 현상을 해결하기 위해서는 기다림 함수를 사용해야 ..
랩뷰 초급 강의 - 랩뷰(LabVIEW)에서 반복구문의 결과를 얻기 For, While문을 통한 반복문에 대한 설명은 이전 포스팅을 통해서 설명 드렸습니다.반복문에 대한 내용을 확인하실려면 아래의 링크를 참조하세요. 반복문에 대한 글:2014/08/24 - [National Instruments/LabVIEW] - 랩뷰 초급강의 - 반복문(While문과 For문) 반복문에 대한 결과값 처리부분은 LabVIEW에서 2가지로 구분할 수 있습니다.인덱싱 활성화를 통해서 각 반복에서 처리된 결과값을 배열로 전달하기인덱싱 비활성활를 통해서 반복의 마지막 처리되는 부분의 값을 전달하기그러면 인덱싱 활성화와 비활성화는 어떻게 하는걸까요? For 문과 While안의 특정의 값 혹은 라인을 For문과 While문 오른쪽..
윈도우 버전에 따른 Visual C++관련 헤더 설정하기 (error C2065: undeclared identifier 해결 방안) 하위 버전의 윈도우에서 개발된 Visual C++관련 코드를 수정하는 경우가 발생할 때가 가끔은 있습니다. 이런 경우 프로젝트를 업그레이드 하고 컴파일을 누르면 컴파일이 되지 않고, 코드에는 선언이 되어있는 다양한 클래스 혹은 구조체들을 찾지 못해 에러가 발생을 합니다. 이에 대한 예를 알아볼까요? 위의 그림의 경우 PSCROLLBARINFO라는 개체를 인식하지 못하여 발생하는 에러입니다. 하지만 코드에서 PSCROLLBARINFO를 찾아서 들어가 보면 코드나 헤더상에는 반드시 이 개체가 존재합니다. 이러한 문제는 왜 발생하는지 알아보도록 하겠습니다. Microsoft V..
NI 9219를 이용한 로드셀 측정 안녕하세요. 오늘은 NI 9219를 통해서 로드셀에 대한 측정하는 방법을 알아보도록 하겠습니다. 일전에 올린 포스팅을 통해서 로드셀이란 무엇인지? 로드셀과 관련된 이론은 무엇인지? NI 9237을 통해서 로드셀을 측정하는 방법을 알아보았습니다. 9237 혹은 로드셀 이론에 관련된 내용이 궁금하시면 아래의 링크를 참조하세요.링크 : 2014/08/12 - [National Instruments/DAQmx] - [DAQmx] NI 9237을 이용한 로드셀(Road cell) 측정하기 이글은 로드셀에 대한 내용보다 9219 유니버셜 모듈을 통해서 로드셀을 설정하는 방식을 알아보겠습니다. NI 9219는 여러 센서로 부터 신호를 입력받을 수 있는 유니버셜 모듈입니다. 9219..
텍스트 언어 호출 규약(함수를 호출 하는 방법에 대한 약속) 텍스트 언어에서 함수를 호출하는 방식(약속)을 텍스트 언어 호출 규약이라고 합니다. 함수를 호출하고, 어떻게 리턴하며 이에 대한 부분이 어디에 저장되고, 어떻게 지워지는지를 결정하는 규약입니다. 언어 호출 규약은 __cdecl,__stdcall,__fastcall, thiscall, naked 등이 있지만, 자주 사용되는 함수 호출 규약은 __cdecl, __stdcall이 있습니다. 키워드 스택 정리 매개 변수 전달 __cdecl Caller 스택에서 매개 변수를 반대 순서로(오른쪽에서 왼쪽으로) 푸시합니다. __clrcall n/a CLR 식 스택에서 매개 변수를 순서대로 로드합니다(왼쪽에서 오른쪽). __stdcall 호출 수신자 스택에서..
풀업 저항과 풀다운 저항 풀업 저항과 풀다운 저항은 무엇일까요? 풀업 저항/풀다운 저항은 플로팅(Floating) 된 상태로 인해 값이 High, Low일지 잘 알지못하는 상태를 명확히 처리하기 위해서 사용되는 방법입니다. 그럼 플로팅이란 무엇일까요?칩에 어떠한 신호를 줄때, 우리는 5V 혹은 0V 를 입력을 하게 됩니다. 하지만 아무런 신호를 가하지 않았을때나 칩에 연결된 전선이 끊어졌으면 칩에서는 신호를 어떻게 인식을 할까요? 칩은 이런 현상을 High, Low인지 구분을 하지 못하게 됩니다. 이러한 현상을 플로팅 현상이라고 하며 이는 칩을 가진 보드에 치명적인 문제가 될수가 있습니다. 이러한 플로팅 문제를 해결하기 위해서 이 두방법을 많이 사용합니다. 위의 그림을 살펴봅시다. 아두이노 입장에서 스위..
NI-DAQmx 텍스트 개발 환경에서 사용하기 - C, C++언어 편이 글에서는 NI-DAQmx와 C언어를 통한 개발 방법에 대해서 설명을 드리고자 합니다. DAQmx에서는 일반적으로 Ansi C기반의 예제를 제공합니다. 이 예제들을 통해서 텍스트 개발 환경에서 개발이 가능한데, 이 때 사용할 수 있는 언어는 C,C++입니다. C++환경에서는 DLL을 import하여 동일한 함수를 사용하여 처리를 할 수 있습니다. NI는 DAQ 장비를 사용하기 위해서 DAQmx라는 드라이버를 제공해주고 있습니다. DAQmx는 일반적으로 LabVIEW, C, C++, C#, VB.NET 모두 동일한 API를 사용하여 개발하는 프로세스는 동일합니다. DAQmx를 통한 DAQ 프로그래밍 과정은 아래와 같습니다.Task와 Vi..
DAQmx 텍스트 언어(C, C#, VB.NET, VB) 예제 설치 방법 NI-DAQmx는 National Instruments사의 DAQ 장비를 사용할 수 있게 해주는 NI에서 제공하는 장비 드라이버입니다. DAQmx는 다양한 데이터 전송 속도와 휴대성을 제공하기 위해서 PCI, PCIe, PXI, USB와 같은 다양한 타입의 제품으로 출시되고 있습니다. 이러한 장비들 모두 NI-DAQmx 드라이버를 통해서 장비가 인식이되고, 데이터 수집에 필요한 라이브러리를 사용하게 되는것입니다. 아래의 그림에서 확인 할 수 있듯이 NI-DAQmx는 LabVIEW는 물론, CVI, C/C++, C#, VB.NET 환경에서 데이터 수집 어플리케이션에 대한 수집을 가능하게 해줍니다. DAQmx가 제공하는 기능은 아래와 ..
DAQmx에서 전압 측정시 입력 터미널 설정 방법(RSE, NRSE, 차동)이번 글에서는 DAQmx를 이용하여 아날로그 전압을 측정할 때 사용되는 입력 터미널 설정 방법에 대해서 알아보도록 하겠습니다. 정확한 아날로그 신호를 측정하기 위해서 아날로그 신호를 DAQ 장비로 입력을 받을때 고려해야 하는 점은 접지 방식의 결정과 접지에 대한 입력 모드를 선택하는것이 있습니다. 1) 접지 방식의 결정 입력되는 아날로그 신호가 신호가 접지인가? 플로팅인가에 대한 구분을 하셔야 합니다. 이에 대한 간단한 설명은 아래와 같습니다. 접지 신호 : 신호가 시스템 접지(지면, 빌딩 접지)에 참조 되어 있는 신호 예) 빌딩플로팅 신호 : 신호가 시스템 접지(지면, 빌딩 접지)에 참조 되어 있지 않는 신호 예) 배터리, 열전..
랩뷰 초급강의 - 시프트 레지스터(Shift Register) 이전 초급강의에서는 반복문 구현에 필요한 While과 For문에 대해서 설명을 드렸습니다. 관련 링크 : 2014/08/24 - [National Instruments/LabVIEW] - 랩뷰 초급강의 - 반복문(While문과 For문)2014/08/22 - [National Instruments/LabVIEW] - 랩뷰 초급강의 - 랩뷰( LabVIEW)란 무엇인가? 이번 글에서는 반복문을 사용할 때 "반복문 안에서 처리된 결과를 다음 반복 할 때 사용하기 위한 방법은 무엇이 있는가? ", "반복문이 10번 반복한다고 가정 했을때, 내부 값들의 평균을 구하기 위해서는 어떻게 해야하는가?" 에 대한 라는 궁금증이 생기지 않으신가요? 이때 필요..