Computer/C, CPP, MFC

임베디드 프로그래밍에서 상태 머신(State Machine)

임베디드 프로그래밍에서 상태 머신(State Machine)은 시스템의 상태를 관리하는 데에 핵심적인 역할을 합니다. 상태 머신은 시스템이나 소프트웨어가 가질 수 있는 모든 상태와, 특정 이벤트가 발생했을 때 다른 상태로 전환되는 규칙 또는 전환(Transition)을 정의합니다. 이를 통해 복잡한 시스템의 동작을 체계적이고 예측 가능한 방식으로 설계하고 구현할 수 있습니다. 상태 머신의 기본 구성 요소 상태(State): 시스템이 어떤 특정 시점에 존재할 수 있는 조건이나 상황을 의미합니다. 예를 들어, 전등의 상태는 '켜짐', '꺼짐'이 될 수 있습니다. 이벤트(Event): 상태 전환을 유발할 수 있는 외부 또는 내부에서 발생하는 사건입니다. 예를 들어, '스위치를 누름'이 이벤트가 될 수 있습니다..
Computer/C, CPP, MFC

[CPP, MFC] 윈도우, 다이얼로그 최대화

초기화부분에서, this->ShowWindow(SW_SHOWMAXIMIZED); this->UpdateWindow(); 도움. SW_HIDE : 윈도우를 화면에 보이지 않게 한다. SW_MINIMIZE : 윈도우를 최소화한다. SW_RESTORE : 윈도우를 원래의 크기와 위치로 화면에 표시한다. SW_SHOW : 윈도우를 화면에 보이게 한다. SW_SHOWMAXIMIZED : 윈도우를 최대한 크게 하여 표시한다. SW_SHOWMINIMIZED : 윈도우를 최소한 작게 하여 표시한다. SW_SHOWMINNOACTIVE : 윈도우를 아이콘으로 표시한다. SW_SHOWNA : 윈도우를 현재 상태로 표시한다. SW_SHOWNOACTIVATE : 윈도우를 가장 최근의 크기와 위치로 표시한다. SW_SHOWNOR..
Computer/C, CPP, MFC

공용 언어 런타임 지원의 설정에 따라 빌드 결과값이 다르다?

오잉? 왜! 왜! 다르게 보이는거야??!? 예전에 만들어둔 MFC프로그램에서 보는것과 처리값이 다르게 보이는것이다. 오? 왜 이러지 내가 잘 못 만들었나? (그렇지... 컴퓨터는 거짓말 안하니까~) 디자인 파일이라서 데이터 하나하나가 중요한데.. 그래서 확인이 필요했다. 계산기 오픈!! hex 값 96 이면 dec로 150이 맞는데 오잉?! 오잉? 0.00001초 정도 하고... 당연하니까~ 계산기 처리 단위를 바꿔보았다. 그랬다. 뭐... 당연하고 사실 -106이 맞다.............................. 는 안돼!!! 난 저걸 원하는게 아니라고!!! 그래서 뭐가 문제일까? 단위도 바꾸고 비트도 자르고 했지만, 귀찮다.. 빌드 설정 문제인가 싶어서 프로젝트 속성을 확인했다. 의심되어 보..
Computer/C, CPP, MFC

CRegKey/SetValue 바꾸자

디자인변환 프로그램을 만들일이 있어서 오랜만에 C++를 만지작 만지작 하던 중, 레지스트리에 저장된 값을 불러오고, 저장할 일이 생겼다. 그래서 생각없이, 예전에 많이 사용하던 그때 그 코드로 사용했다. 저장할때, SetValue를... CRegKey RegKey; RegKey.Create(HKEY_CURRENT_USER, "블라블라"); RegKey.SetValue(nConversionEnabled, "이거블라블라"); RegKey.Close(); 그리고 빌드. 빌드. 빌드... 으움? 왜!!!!!!!! C4996이 뜨냐고!!!!! 그랬다. 또, 무언인가 고전틱한 고전고전의 느낌이라 취약점이 있겠지. 오버플로우가 생길수 있을려나... 바로 검색! 뚜뚱! 해당함수는 QueryValueEx , Setval..
Computer/C, CPP, MFC

ReadFile()

간단정리 RedFile(파일핸들, 저장버퍼 포인터, 읽어오는 바이트수,출력용인수, 비동기아니면 NULL) ReadFile() 파일에서 데이터를 읽어옴. 동기, 비동기 모두 사용가능함. 원형 BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); - HANDLE hFile: 읽고자 하는 파일의 핸들. 이 파일은 GENERIC_READ 액세스 권한으로 열어야 합니다. - LPVOID lpBuffer: 읽어 올 데이터를 저장할 버퍼의 포인터 입니다. - DWORD nNumberOfBytesToRead: 실제 읽어오는 바이트 수를 지..

ReadFile()

Computer/C, CPP, MFC

SetFilePointer()

간단정보SetFilePointer(대상 파일의 핸들, 옮길 위치, NULL, 시작위치)파일을 처음 열었을때, 포인터의 위치는 파일의 처음, IO 처리에 따라 파일포인터가 자동으로 이동. SetFilePointer()파일 포인터를 원하는 위치로 옮길때 사용.32비트와 64비트를 동시에 지원하기 위해 2번째 인수와 3번째 인수를 통해 각 4바이트씩 64비트, 오프셋을 전달할수 있다.SetFilePointerEx 를 사용하는것이 좋다. 원형DWORD SetFilePointer( HANDLE hFile, LONG IDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod); - HANDLE hFile: 파일포인터를 옮기고자 하는 대상 파일의 핸들. - LO..
Computer/C, CPP, MFC

프로그램 종료

프로그래밍을 하던중 어떻게 하면 안전하게 프로그램을 종료할까 생각해보았다.바로 구글링 메모릭 발생 때문에..문제들이 대부분 발생하는것으로 보여지더라.. 아하! 그렇구나, 라고 다시 한번 느낀 후... 쓰던대로 그냥 'ExitProcess' 이거 사용하였다. 끝! 메인 다이얼로그::OnInitDialog()에서 프로그램을 종료하고 싶다.OnClose나 기타 메소드가 먹지 않거나 먹어도 메모리 충돌 오류메시지가 나온다.exit(0);를 넣어줘도 되나 비정상적인 terminated라 메모리 누수가 발생한다. 방법은 다음과 같다. ::SendMessage(this->m_hWnd, WM_CLOSE, NULL, NULL);혹은 ::SendMessage(GetSafeHwnd(), WM_CLOSE, NULL, NULL..
Computer/C, CPP, MFC

하위폴더까지 전체 복사하기

BOOL ---------------::XCopy(char *Src, char *Dest, int my94) { HANDLE hSrch; WIN32_FIND_DATA wfd; BOOL bResult = TRUE; char fname[MAX_PATH]; char WildCard[MAX_PATH];// 원본 char HoneyCard[MAX_PATH];// 사본 char SrcFile[MAX_PATH]; char DestFile[MAX_PATH]; strcpy_s(WildCard, Src); strcat_s(WildCard, "\*.*"); strcpy_s(HoneyCard, Dest); // 폴더위치 if (my94 == 0) // 재귀 { } else if (my94 == 1) // EZ-Raschel ..
Computer/C, CPP, MFC

윈도우 버전 알아보기

int GetWindowsType(void) { /* return value : -1 : 버전얻기 실패 1 : Windows 95, 2 : Windows 98, 3 : Windows ME, 4 : Windows NT, 5 : Windows 2000, 6 : Windows XP, 7 : Windows 2003, 8 : Windows Vista, 2008 9 : Windows 7, 2008 R2 10: Windows 10, */ int nVersion = -1; OSVERSIONINFOEX osvi = { 0, }; BOOL version_ex_flag = 0; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); if (!(version_ex_flag = GetVer..
EIGHTBOX
EIGHTBOX
hwaya.

programmer

🍋일상의 소소한 순간들부터 큰 꿈까지, 호기심을 만족시킬 다양한 카테고리를 담은 블로그 입니다. 그리고, 소소한 행동에 감동하며 기뻐하고 하루하루에 감사하는 사람🌵

Today Yesterday Total
최신글