'LabVIEW'에 해당되는 글 2건

  1. 2011.01.23 LabVIEW와 PAE (1)
  2. 2009.07.07 Simple Tutorial) DLL programming for LabVIEW with Dev C++ (1)

LabVIEW와 PAE

Computer 2011.01.23 10:08
  실험실에서 사용하는 컴터는 Window Vista 32 Home Premium 에디션이다. 메모리가 4GB 꽂혀있지만 3.3GB정도밖에 사용하지 못한다. 64bit으로 바꿀까 했지만 많은 장비들이 물려있어 섯불리 바꾸었다가는 장비가 작동안할 수 있기때문에 그냥 32bit로 사용하고 있다. 그러다 오늘 윈도우7 32비트에서 메모리 4GB 이상 사용하는 방법 에서 메모리를 128GB까지 사용할 수 있는 법을 배워서 적용해보았다. 4GB를 다 사용할 수 있었다.

  하지만 기쁨도 잠시... LabVIEW를 실행시켰더니 daqmx가 로딩이 안된다.. 인터넷을 검색해보니까.. window 부팅시 PAE옵션을 켜면 daqmx가 에러를 내뱉고 실행이 안된다... 다시 첨으로 돌아왔다..

  그래도 다른 컴터에서는 적용가능할테니까... 그때 다시 시도를 해봐야지...
Posted by yonggun
TAG LabVIEW
LabVIEW 8.x에서 Vi를 작성하는 방법에는 3가지가 있다. 첫번째는 전통적인 방법으로 블록을 사용하는 것이고 두번째는 버전8에서 새로이 도입된 Mathscript를 사용하는 것이다. 마지막으로 다른 언어로 dll을 작성한 후 이것을 labview로 불러들이는 것이다. 첫번째 전통적인 방법은 주로 실험 계측장비와 인터페이스를 할 때 많이 쓰이지만 수학 연산을 할 때는 간단한 것조차 상당히 복잡해지는 단점이 있다. 두번째는 수학계산에 상당히 편하다. Matlab과 똑같은 문법을 사용하기때문에 matlab으로 짜여져 있는 많은 소스를 이용할 수있지만 상대적으로 첫번째와 비교하면 좀 더 느리다. 세번째 방법은 C 언어를 알아야하기 때문에 셋중 가장 코딩하는데 시간이 많이 걸리지만 빠른 연산을 필요로 한다면 한번 시도해볼만하다.

이번에는 Dev c++에서 dll을 작성하는 방법을 이야기해보자. 앞의 강좌에서 이야기한 것처럼 Dev C++을 설치한다. 그리고 이제 프로젝트파일을 작성해보자. New Project를 열고 Basic 탭에서 DLL을 선택한다. 그리고 C로 작성할 경우 C Project를 선택한다. 이름을 적고 OK버튼을 누른다.


아래 그림과 같이 프로젝트 파일이 생성된다.


이제 파일이름과 소스를 아래와 같이 입력한다.

swap.c
/* Replace "dll.h" with the name of your header */
#include "swap.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

DLLIMPORT void swap(int *arg1, int *arg2)
{
       int temp;
       temp = *arg1;
       *arg1 = *arg2;
       *arg2 = temp;
   
}


BOOL APIENTRY DllMain (HINSTANCE hInst     /* Library instance handle. */ ,
                       DWORD reason        /* Reason this function is being called. */ ,
                       LPVOID reserved     /* Not used. */ )
{

    /* Returns TRUE on success, FALSE on failure */
    return TRUE;
}

swap.h
#ifndef _SWAP_H_
#define _SWAP_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


DLLIMPORT void swap(int *arg1, int *arg2);


#endif /* _DLL_H_ */

위 소스에서 빨간색으로 강조한 부분에 유의하도록 하고 이제 컴파일을 해보자. Execute 메뉴의 Rebuild All을 선택한다. 문제가 없다면 컴파일이 쉽게 될것이다.


소스가 있는 폴더에 swap.dll 이라는 파일이 생성되었을 것이다. 이제 LabVIEW 부분을 작성할 차례이다. LabVIEW에서 아래와 같이 작성을 해보자.




위에서 가운데 노란색으로 되어 있는 블록은 Function-Connectivity-Libraries&Executables 를 선택하면 된다. 그리고 이 블록을 더블클릭을 하든 아니면 Properties 메뉴를 선택하면 아래와 같은 창이 나타난다.


Labrary name에 우리가 작성했던 dll을 불러온 다음 Function name에서 swap을 선택한다. 다음 Parameters 탭으로 가보자.

return type은 아래와 같이 Void로 하고 새로운 변수 2개, arg1와 arg2, 를 추가한다. 그리고 Pass은 Pointer to Value로 한다.


이제 작성이 다 되었다. labview 패널에서 숫자를 넣고 실행을 해보자. swap이 정상적으로 일어난 것을 볼 수 있을 것이다.

이상으로 간단하게 dev C++을 이용해서 dll을 작성하고 LabVIEW에서 구동하는 법을 알아보았다. 아마 이 두언어를 모두 알고 있다면 좀더 복잡한 연산에도 응용할 수 있을 것이다.




Posted by yonggun
TAG C/C++, DLL, LabVIEW


티스토리 툴바