5.1.5. COMI_WFM_Start¶
SYNOPSYS¶
long COMI_WFM_Start (HANDLE hDevice, int ch, float *pDataBuffer, UINT nNumData, UINT nPPS, int nMaxLoops)
DESCRIPTION¶
이 함수는 Waveform Generation 을 시작합니다.
PARAMETER¶
▶ hDevice : 디바이스 핸들값입니다. 이 값은 COMI_LoadDevice() 함수에 의해 얻어진 값이어야 합니다.
▶ ch : Waveform 신호를 출력할 D/A 채널 번호. 이 값은 0 또는 1 이어야 합니다.
▶ pDataBuffer : Waveform 데이터를 담은 버퍼의 주소값(포인터). Waveform Generation 기능을 지원하는 보드는 이 버퍼에 담겨진 데이터를 보드에 내장된 FIFO 메모리에 로드하므로 이 버퍼는 지역변수이어도 상관 없습니다.
▶ nNumData : 버퍼에 담겨진 데이터의 수
▶ nPPS : Waveform Generation 의 주기를 결정합니다. 이 값은 Points/Second 입니다. 예를 들어 100개의 데이터로 한 주기를 구성하였다면 10Hz 의 신호를 만들기 위해서는 nPPS 는 1000이 되어야 합니다.
▶ nMaxLoops : 이 값이 0 보다 크면 생성되는 Wave 신호의 수를 제한합니다. 이 값이 0 이면 COMILX_WFM_Stop() 함수가 수행되기 전까지 계속하여 Wave 신호를 생성합니다.
RETURN VALUE¶
실제로 설정되는 Points/Second 를 반환합니다. 사용자가 지정한 PPS 와 실제로 설정되는 PPS 는 약간의 차이가 있을 수 있습니다. 이 값이 0 보다 작으면 수행도중 에러가 발생하였음을 의미합니다.
Device¶
지원 디바이스: COMI-SD301
EXAMPLE¶
Waveform Generation 사용 예 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "Comidas.h"
#define DEV_ID COMI_SD301
#define CHAN 0
#define AMP 5 // AMPLITUDE
#define FREQ 1000 // FREQUENCY
void main (void)
{
HANDLE hDevice;
float fWaveBuf[2] = {AMP, -AMP};
if(!COMI_LoadDll()){
printf("Comidas.dll load failure");
printf("아무키나 누르면 프로그램이 종료됩니다.. \n");
_getch();
exit(0);
}
hDevice = COMI_LoadDevice (DEV_ID, 0);
if(hDevice == INVALID_HANDLE_VALUE){
printf("Can't load specified device!");
printf("아무키나 누르면 프로그램이 종료됩니다.. \n");
_getch();
COMI_UnloadDll();
exit(0);
}
printf("Waveform Generation 을 시작하려면 아무키나 누르십시오. \n");
printf("아무키나 다시 누르면 프로그램이 종료됩니다. \n");
_getch();
COMI_WFM_Start(hDevice,CHAN,fWaveBuf, 2, 2*FREQ, 0);
while(!_kbhit())
;
COMI_WFM_Stop(hDevice, CHAN);
COMI_UnloadDevice(hDevice);
COMI_UnloadDll();
}
|
EXAMPLE2¶
Waveform Generation 사용 예 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "Comidas.h"
#define DEV_ID COMI_SD301
#define CHAN 0
#define AMP 5 // AMPLITUDE
#define FREQ 1000 // FREQUENCY
#define N 50
void main(void)
{
HANDLE hDevice;
float fWaveBuf[N], rad;
long nCount;
if(!COMI_LoadDll()){
printf("Comidas.dll load failure");
printf("아무키나 누르면 프로그램이 종료됩니다.. \n");
_getch();
exit(0);
}
hDevice = COMI_LoadDevice(DEV_ID, 0);
if(hDevice == INVALID_HANDLE_VALUE){
printf("Can't load specified device!");
printf("아무키나 누르면 프로그램이 종료됩니다..\n");
_getch();
COMI_UnloadDll();
exit(0);
}
rad = 2*3.141592f/N;
for(int i = 0; i<N; i++)
fWaveBuf[i] = AMP * sin(i*rad);
printf("Waveform Generation을 시작하려면 아무키나 누르십시오. \n");
printf("아무키나 다시 누르면 프로그램이 종료됩니다. \n");
_getch();
while(!_kbhit()){
COMI_WFM_Start(hDevice, CHAN, fWaveBuf, N, N*FREQ, 1000);
printf("Waveform Generation has started!\n");
while((nCount = COMI_WFM_GetCurLoops(hDevice, CHAN)) > 0){
printf("Remainning Loops = %d\n", nCount);
}
printf("Waveform Generation has finished!");
Sleep(1000);
}
COMI_WFM_Stop(hDevice, CHAN);
COMI_UnloadDevice(hDevice);
COMI_UnloadDll();
}
|