2015년 12월 17일 목요일

MotionDataLogger

live motion data 를 얻는 예제

API 문서 : https://emotiv.com/api/3.3.0/_iedk_8h.html#a99d0b4dccf58bd31e973db657fd068d7
위치 : community-sdk/example/C++/MotionDataLogger
기준 commit : f62b39eca2f4eeb52344c9be1c3bc374e9917409
컴파일 : 정상
실행 : 비정상
결과물 : 표준 출력 과 파일저장

직관적인 사용법이므로 부연 설명 없이 코드를 살펴보면,
...
91 DataHandle hMotionData = IEE_MotionDataCreate();
92 IEE_MotionDataSetBufferSizeInSec(secs);
...
113 IEE_MotionDataUpdateHandle(0, hMotionData);
...
116 IEE_MotionDataGetNumberOfSample(hMotionData, &nSamplesTaken);
...
120 if (nSamplesTaken != 0) {
...
129 IEE_MotionDataGet(hMotionData, targetChannelList[i],
130 data, nSamplesTaken);
...

1. 받아들일 MotionData 를 만들고
2. 초당 받아들일 Buffer size 를 1로 정해주고
3. nSampleTaken 이 0 이 아닐때만 handle 을 사용해서 Get 한다.

코드는 간단한데, 값은 얻어 오지 못한다.

[컴파일 방법]
$ cmake .
$ make

[실행 방법]
$ ./motion log

[결과물]
==================================================================
Example to show how to log Motion Data from EmoDriver/EmoComposer.
==================================================================
Start receiving IEEG Data! Press any key to stop logging...

Buffer size in secs:1
User addedUpdated 0
Updated 0
Updated 0
Updated 0
Updated 0
Updated 0
Updated 0
Updated 0
Updated 0
Updated 0
...

위 소스 코드에서 보면 nSampleTake 이 0일 아니어야 DataGet 을 하는데 로그에서처럼 주구장창 0을찍어대고 있으니 DataGet 이 불릴리가 없고 그러니 원하는 결과값을 얻을리가 없다.

정리하면,
현재 버전에서는 MotionData API 동작 안함!

댓글 없음: