아래의 소스를 추가 #define _CRTDBG_MAP_ALLOC #include #include 그리고 아래의 소스를 프로그램이 종료될때 입력. _CrtDumpMemoryLeaks(); 디버그 모드일때 #define new DEBUG_NEW 처럼하거나 #define DEBUG_NEW new(__FILE__, __LINE__) #define new DEBUG_NEW 이렇게 넣으면 된다. 디버그 모드일때 해야한다는게 중요. CMemoryState::DumpAllObjectsSince와 CMemoryState::Difference를 이용하는것도 한 방법. BOOL Difference( const CMemoryState& oldState, const CMemoryState& newState ); 이전 상태의 ..
이전에 동적인 그래프를 그렸으니 이번에는 정적인 그래프를 그려보자.. 동적인 그래프와 다른 점은 단지 데이터가 계속 추가되는 것이 아니라 한번 설저앟면 그대로 보여준다는 것.. 즉, AddData가 아니라 SetData정도가 되어서 데이터의 배열을 받고 출력하고, OnPaint에만 추가 시키면 되는 간단한 방식이 될 것이다. CGraph를 만들고 기존의 CAnimatedGraph의 내용들을 살펴하자... public: // 로그 데이터 배열 CArray m_arrLogData; public: // 그래프를 그릴 영역 RECT m_rectGraphArea; public: // x축 그리드 그릴 수 int m_nXGridNumber; public: // y축 그리드 그릴 수 int m_nYGridNumber..
일단 입력과 출력을 정의 하고... 목표 - 손으로 숫자 쓰는 것을 인식 입력(float[3] -> 좀더 유동적으로 하기 위해 vector로..) - 3축 가속도 : m_fAccX : m_fAccY : m_fAccZ 출력(int) : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 = 각 숫자에 해당하는 리턴 값 : -1 = 맞는 것이 없다.. class DynamicTimeWarping 이고 멤버는 vector m_vecPatternSequence DTWElement는 증거변수가 변할 때는 대비해서 좀더 유동적으로 하기 위해서 하는 것이다. DTWElement에서는 기본적으로 있어야하는 것이 GetDistance(const DTWElement) //두개의 DTW간 거리를 구하는 함수..
Dynamic Time Warping.. 패턴 인식에서 이용되는 방법으로 시퀀스를 시간의 길이를 고려하지 않고 인식할 수 있는 방법이다. 말 그대로 Time을 Warping하기 때문에 특정한 동작을 느리게 하게 되면 시간을 느리게 변화시키는 방법이다. 위키피디아의 http://en.wikipedia.org/wiki/Dynamic_time_warping 에 간단한 내용과 구글에서 검색하면 여러 가지 자료들을 얻을 수 있다..그냥 DTW를 가장 잘 나타내고 그림 한장으로 이해할 수 있는 건 다음인거 같다.. 현재의 cost에 distance를 더해가며 오른쪽위의 끝까지 갈 수 있는지..그 여부를 찾는, 그 과정을 찾는 것이 DTW인 것이다. DTW는 위와 같은 matrix로 Dynamic programmin..
이전에 DllMain이 왜 안되었을까...살펴보니 그이유가.. DllMain안에다가 전역변수를 그대로 카피n페이스트하다가 int g_nWindowSize = 10;을 그대로 복사해버렸던 것이다-_-;; DllMain은 제대로 되는건데 내 실수가 잠시 DllMain을 회피하게 만들었다;;그럼 초기화와 해제를 하기 위해 DllMain에 대해 한번 알아보자.. 먼저 MSDN에 있는 내용..이것만 읽어도 충분히 활용할 수 있다. DllMain The DllMain function is an optional entry point into a dynamic-link library (DLL). If the function is used, it is called by the system when processes an..
뭐, 대단한 거에 대한 생각은 아니고 그냥 어떻게 하면 좀 더 DLL을 편하게 쓸까... 이 고민을 조금 해봤다.. 일단 확장형DLL은 클래스가 지원이 되지만 일반 DLL은 안된다는 점에서 DLL내에서 값을 유지하려면 전역변수를 쓰는 고통을 남겨야할 듯 하다... 일단은 눈물을 머금고 전역변수를 쓰지만, 대안이 있을 듯 하다..나중에 찾아보자.. 뭐, 전역 변수도 될지는 아직 모르겠다...한번 테스트 해보자.. std::vector g_vecData; int g_nWindowSize; int g_nDataSize; extern "C" __declspec(dllexport) int AddDataToPreprocessor(float* inputData , int dataSize); int AddDataToP..
이번엔 명시적 호출을 해보자... 역시 위키피디아 페이지에 있는 내용 중... C and C++#include #include // DLL function signature typedef double (*importFunction)(double, double); int main(int argc, char **argv) { importFunction addNumbers; double result; // Load DLL file HINSTANCE hinstLib = LoadLibrary("Example.dll"); if (hinstLib == NULL) { printf("ERROR: unable to load DLL\n"); return 1; } // Get function pointer addNumbers..
이전에 개요에서 읽어보면 묵시적 링크와 명시적 링크가 되어있는데.. 나의 성격상 명시적 링크로 라이브러리를 제공해줘야 속시원하다-_- 여튼 LoadLibrary를 통해서 직접 해보록 해야겠다.. 테스트는 SensorMonitoring에서 하는 부분 중.. OnInitDialog에 때려 넣는 걸로 테스트 해보고자 한다.. 그럼 일단 다시 위키피디아 페이지에서 import하는 부분... C and C++ Make sure you include Example.lib file(assuming that Example.dll is generated) in the project (Add Existing Item option for Project!)before static linking. The file Example..
뭐부터 할까... dll을 만들기 전에 가장 막막했던게 수 많은 프로젝트 중에서 어떤걸 만들어야할까.. dll도 MFC dll activex dll 등 참 많기도 하다... 그런데 dll 생성하는건 프로젝트 설정에서도 해줄 수 있으니 고민하지 말고 디버깅하기 편한, 익숙한 win32 console application으로 만들자.. 그리고 일단 사용하려고하는 함수를 정의해야겠다.. 데이터 smoothing을 위한 함수... int Smoothing(float* inputData , int dataSize , float* &smoothingData , int& resultSize , int smoothingType) 로 일단 간단하게 정의해보자... 그럼 DLL로 만드는 소스 안에서는 어떻게 해야하나.....
여기저기서 활용할 수 있는 전처리 모듈을 만들어야한다길래 lib 을 할가 dll을 할까 하다가 이번 기회에 dll의 사용법을 익혀보고자~ dll을 해보기로 했다.. dll에 대한 개요는 간단하게 살펴 봤고 이제는 실제적으로 어떠한 식으로 만들 수 있는지 살펴봐야할 것이다.. 위키 피디아에 있는 내용들 만으로도 충분히 참고할만한것 같다.. http://en.wikipedia.org/wiki/Dynamic-link_library 그 외에는 LoadLibrary 라던가 함수 포인터 가져오는 부분은 차츰 알아가면 될 것 같다.
음...일단 초기화를 OnInitDialog함수에 대충 때려 넣고.. BOOL CSensorMonitoringDlg::OnInitDialog() { .... CAnimatedGraph* pGraph = new CAnimatedGraph(); pGraph->SetArea(300,200,500,400); pGraph->SetViewDataSize(100); pGraph->SetYMinMax(-10,10); this->m_arrpAnimatedGraph.Add(pGraph); return TRUE; } 타이머에서 값을 설정할 부분에 값을 추가하는 것 넣어주고.... 테스트용이니까 그냥 한개만 하기로 하자.. 나중에 여러개 하려면 데이터 index와 그래프 매핑변수를 하나 만들면 된다. Invalidate는 헤..
구현 뭐 어려운 건 없다... 데이터 추가해서 보여주는 사이즈랑 비교해서 있는지 없는지... 출력하는 것은 2번 글에서 사용한 한줄로 간단하게 끝낼수도 있고... 꾸미려고 한다면 더 많이 꾸며야겠지만.. 구현하면서 수정한 사항... - LogData는 많은 데이터를 가지고 있는건데 하나만 보여주면 되니까 float로 수정.. - X의 min max는 필요 없더만.. 삭제.. - Polyline의 두번째 인자는 '선'의 수이므로, size - 1 로 수정 뭐, 나중에 동시에 여러 개를 동적으로 보여주려면 다시 LogData로 수정하면 될듯.. 일단 동적 그래프부터 그리고 추가하도록 하자.. // 데이터를 추가하는 함수 int CAnimatedGraph::AddData(float data) { int nYW..
클래스 명..음..그냥.. class CAnimatedGraph 로 필요한 내용은 멤버.. 일단 일정 시간 동안의 데이터 값을 저장하고 있어야할 테고(LogData*) // 이것도 CArray로 처리해야겠다.. 위의 데이터를 정규화 시킨 (CPoint *) 데이터 몇개를 보여줄지 설정해야하고(nViewDataSize) 그릴 영역의 정보(RECT) Grid의 수(nXGridNumber , nYGridNumber) 최대 최소 값(fXMax , fXMin , fYMax , fYMin) 함수.. 데이터를 뒤에 추가 할 수 있어야할 테고(AddData) 데이터 몇개(GetDataSize) 그리기 함수(Draw(CDC*)) 영역 설정(SetArea(x,y,x',y')) 기본적인 기능의 구현은 은근히 간단하네...그..
MFC 그래픽에 손을 대본지 4년만이라 감이 잘 안 선다... 일단 해보려고 했던 것이 여러 개의 선을 이이서 하는 거였지.. //이을 점들.. float x[i],y[i] for(int loop = 0 ; loop < i - 1 ; loop++) { line(x[loop] , y[loop] , x[loop+1] , y[loop + 1]); } 뭐 이런식으로 하면 줄줄이 이어지긴 하니깐... 그런데 아침에 우연히 CDC::Polyline 이란게 눈에 들어왔다. 원래부터 꺽은선이 존재하는거였군! ㅠㅠ 뭐, 위의 단계를 몇 줄 줄이는 것 뿐이긴 하지만 나름 더 편하게 할 수 있을 것 같다.. 이놈에 대해서 살펴보면... msdn에서는 아래와 같이 정의하고 있지.. MFC Library Reference CD..
커스텀 드로우에 대해 참고할만한 내용 ////////////////////////////////////////////////// ustom Draw ListView Controls, Part I Rating: Roger Onslow (view profile) April 13, 2001 The first is the most extreme. You handle the WM_PAINT messages and do all the painting yourself. You get no help at all from Windows with this method. You have to create a device context, determine where and how big your control is, what..
음.... 어쩌다 보니 동적인 그래프들을 또 동적으로 그릴 수 있는 그러한 것을 짜야되어서... 가능할지 사전 조사 시작.... 자바라면...아주 쉽게 될텐데, 참 아쉽다... 처음부터 자바로 하고 싶어도 여건상 그러지 못해서 MFC로 노가다를 하는 수 밖에... 일단 동적으로 여러개를 넣으면 어떠한게 좋을까... 멀티 도큐먼트를 넣을까 했는데, 하나의 창에서 추가되고 삭제되는 것을 보여주고 싶다.... 일단 쉬운 다이얼로그 기반의 창에서 리스트가 그나마 동적으로 수를 조절하기 쉽지... 그럼 CListCtrl로 과연 그래프를 그릴 수 있을까? 일단 이미지가 표현이 가능할까.... 일단 네이버에 물어보자.... '리스트 컨트롤 이미지' 블로그의 글 중 하나를 LVS_EX_SUBITEMIMAGES가 서브 ..
- Total
- Today
- Yesterday
- gre
- 삼식이
- Python
- 안드로이드
- 뽐뿌
- GX-10
- 팁
- ny-school
- java
- 안드로이드 앱 개발 기초
- Android
- TIP
- gae
- HTML5
- HTML5 튜토리얼
- Javascript
- php
- 사진
- 샷
- 자바스크립트
- 강좌
- 탐론 17-50
- c++
- Writing
- google app engine
- lecture
- 속깊은 자바스크립트 강좌
- mini project
- 서울
- K100D
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |