아두이노 소스를 수정없이 gcc 컴파일러로 빌드 할 수 있나요? 아두이노 소스코드를 수정없이 바로 gcc 컴파일러로 빌드하기는 어렵습니다. 아두이노 IDE에서 작성한 코드는 아두이노 보드에서 실행될 수 있는 형태로 변환되어 있기 때문입니다. 아두이노 IDE에서 작성한 코드는 아두이노 플랫폼에서 실행되는 것이 전제되어 있으므로, 아두이노에서 사용하는 특별한 라이브러리와 헤더 파일, 라이프 사이클 함수 등이 포함되어 있습니다. 이러한 라이브러리와 헤더 파일, 함수 등은 아두이노 프레임워크에서만 사용되며, 일반적인 gcc 컴파일러에서는 사용할 수 없습니다. 따라서 아두이노 소스코드를 gcc 컴파일러에서 빌드하려면, 해당 코드를 일반적인 C++ 코드로 변환하고, 아두이노 프레임워크에서 사용하는 라이브러리와 함수..
"싱글톤 패턴"은 객체 지향 디자인 패턴 중 하나입니다. 이 패턴은 특정 클래스의 인스턴스를 딱 하나만 생성하도록 보장하는 것입니다. 이를 통해 전역 변수를 사용하지 않고 객체 지향적인 방법으로 하나의 인스턴스를 공유하여 사용할 수 있습니다. 싱글톤 패턴을 구현하는 방법은 다양하지만, 일반적으로는 해당 클래스에 private 생성자를 선언하여 외부에서 인스턴스를 생성할 수 없도록 합니다. 그리고 해당 클래스 내부에서 유일한 인스턴스를 생성하고, 이를 반환하는 정적 메서드를 구현합니다. 이를 통해 해당 클래스의 인스턴스는 항상 유일하게 유지됩니다. 하지만 싱글톤 패턴은 동시성 문제 등의 문제점도 가지고 있습니다. 따라서, 사용에 주의가 필요합니다. 싱글톤 패턴은 객체 지향 디자인 패턴 중 하나이며, 애플리..
https://www.st.com/resource/en/application_note/an4808-writing-to-nonvolatile-memory-without-disrupting-code-execution-on-microcontrollers-of-the-stm32l0-and-stm32l1-series-stmicroelectronics.pdf 2개의 Bank를 사용하면, 한쪽은 코드실행, 한쪽은 쓰기가 동시에 진행가능.
strcpy와 같은 문자열복사시, 버퍼의 크기를 모르는 경우, 버퍼 오버런이 발생할수 있어, 에러처리됨. 그러나 이렇게하면, 옛날 소스코드는 소스코드를 대거 수술해야하는 경우가 발생. 간단하게 피하는 방법. //C4996 //#define _CRT_SECURE_NO_WARNINGS (효과 없음?) //헤더파일 include 밑에 #pragma warning(disable:4996) 예) #include "pch.h" #include ... //헤더파일 include 밑에 #pragma warning(disable:4996)
strcpy 함수는 문자열을 복사하는 함수입니다. 그러나 strcpy 함수는 C 스타일의 문자열인 char 타입의 문자열만 처리할 수 있습니다. 따라서 wchar_t 타입의 문자열을 처리하기 위해서는 wcscpy 함수를 사용해야 합니다. wcscpy 함수는 wchar_t 타입의 문자열을 복사하는 함수로, 사용법은 strcpy 함수와 거의 비슷합니다. 다음은 wcscpy 함수의 사용 예시입니다. #include wchar_t source[] = L"Hello world!"; wchar_t destination[20]; wcscpy(destination, source); 위 예제에서 source 문자열은 wchar_t 타입이며, L 접두사를 사용하여 문자열을 나타내고 있습니다. destination은 wch..
다수의 통신포트를 비동기 방식으로 제어하는 C 코드를 작성하는 방법은 다양합니다. 일반적으로는 이벤트 기반(event-driven) 프로그래밍 패턴을 사용하여 각 포트의 상태 변화를 감지하고 이에 대응하는 작업을 처리합니다. 이를 위해 C 언어에서는 다음과 같은 기능들을 활용할 수 있습니다. 1) 이벤트 루프(Event Loop): 이벤트 루프는 각 포트의 상태 변화를 감지하고 이에 대응하는 작업을 처리하는 핵심 기능입니다. 이벤트 루프는 대개 무한 루프로 구성되어 있으며, 각 루프에서는 이벤트 큐(Event Queue)에 대기 중인 이벤트를 처리합니다. 2) 이벤트 핸들러(Event Handler): 이벤트 핸들러는 이벤트가 발생했을 때 호출되는 함수입니다. 이벤트 핸들러는 각 포트의 상태 변화를 감지..
C 언어에서 enum은 열거형 상수를 정의하기 위한 키워드입니다. 열거형 상수란, 일련의 연속된 정수 값에 이름을 부여하는 것입니다. 이를 이용해 가독성을 높이고, 유지보수를 쉽게 할 수 있습니다. 다음은 enum을 사용하는 예시 코드입니다. #include enum week {Mon, Tue, Wed, Thu, Fri, Sat, Sun}; int main() { enum week today; today = Wed; printf("Today is %dth day of the week\n", today+1); return 0; } 위 코드에서는 enum week라는 열거형 상수를 정의하고, 그 안에 Mon, Tue, Wed, Thu, Fri, Sat, Sun이라는 일련의 상수를 정의합니다. 그리고 main..
#include #include using namespace Gdiplus; #pragma comment (lib,"Gdiplus.lib") void strcpy(wchar_t* buf, const char* s) { int nLen = MultiByteToWideChar(CP_ACP, 0, s, -1, NULL, NULL); MultiByteToWideChar(CP_ACP, 0, s, -1, buf, nLen); } HBITMAP LoadPng(const char* file1,int *w,int *h) { wchar_t file[1024]; strcpy(file, file1); HBITMAP hb = 0; int bok = 0; Image image(file); *w = image.GetWidth();..