프로그래밍
-
SDL2_ttf 사용하기프로그래밍/기타 2021. 3. 29. 21:03
제가 SDL 라이브러리와 함께 많이 쓰는 라이브러리에는 SDL_image, SDL_ttf, SDL_net이 있습니다. 그중에 SDL2_ttf를 이용하여 FreeType 폰트를 출력하는 방법을 알아보겠습니다. SDL2_ttf 사이트: https://www.libsdl.org/projects/SDL_ttf/ 먼저 실행 화면을 보시겠습니다. SDL 사용법은 이전 글을 참조하여 주십시오. 이전 글 참조: Visual C++에서 SDL2 라이브러리 사용하기 위 화면의 소스 코드입니다. #include #include "SDL.h" #include "SDL_ttf.h" #pragma comment(lib, "SDL2main.lib") #pragma comment(lib, "SDL2.lib") #pragma comm..
-
Visual C++에서 SDL2 라이브러리 사용하기2프로그래밍/윈도우즈 2021. 3. 28. 13:56
SDL은 버전이 2로 올라가면서 윈도우 컨트롤 오브젝트를 이용 할 수 도 있게 되었습니다. 먼저, MFC App 프로젝트를 새로 만듭니다. 저는 저번에 만들었던 프로젝트가 있는 솔루션 파일에 Test2로 추가했습니다. 이전 글 참조: Visual C++에서 SDL2 라이브러리 사용하기 다이얼로그 베이스로 만들겠습니다. (프로젝트 생성 뒤 다이얼로그 위에 기본으로 생성되는 오브젝트들은 삭제했습니다.) 이전과 마찬가지로 프로젝트 환경설정에서 SDL2 헤더와 라이브러리 경로 등을 설정해 줍니다. C/C++ > General > Additional Include Directories: $(SolutionDir)\3rdparty\SDL2-2.0.14\include Linker > General > Addition..
-
Visual C++에서 SDL2 라이브러리 사용하기프로그래밍/윈도우즈 2021. 3. 28. 12:07
SDL 사이트(링크)에서 SDL2 헤더와 라이브러리를 다운로드 합니다. Visual C++을 사용할 것이기 때문에 VC용으로 다운로드 합니다. Visual C++을 실행하여 프로젝트를 생성합니다(Visual Studio 2019를 사용하였습니다). Windows Desktop Wizard 용 프로젝트를 생성합니다(Blank Solution이나 Consol App를 선택하셔도 되지만 설명은 Windows Desktop Wizard 용 프로젝트로 하겠습니다). 프로젝트 이름을 설정합니다. Console Application을 선택하고 프로젝트를 생성을 마무리 합니다. 다운로드 받은 SDL2 헤더와 라이브러리를 이 프로젝트에서 사용할 수 있도록 설정합니다. 먼저 저는 다음과 같이 프로젝트 폴더 안에 위치 시켰..
-
VT터미널에서 컬러 사용하기프로그래밍/기타 2021. 3. 28. 10:30
디버깅 메시지를 보다보면 텍스트가 너무 많아서 원하는 메시지를 찾아 헤매는 경우가 많은데요. 정말 중요한 메시지에 색을 입히면 조금은 찾기 수월해집니다. VT100 이상 호환되는 터미널은 글씨와 배경에 색을 입힐 수 있습니다. 위의 프로그램의 소스 코드입니다. #include #define COLOR_END"\x1b[0m" #define COLOR_BOLD"\x1b[01m" #define COLOR_BLINK"\x1b[05m" #define COLOR_REVERSE"\x1b[07m" #define FG_BLACK"\x1b[30m" #define FG_RED"\x1b[31m" #define FG_GREEN"\x1b[32m" #define FG_YELLOW"\x1b[33m" #define FG_BLUE"\x..
-
리눅스 어플리케이션에서 RTC 사용하기프로그래밍/리눅스 2021. 3. 26. 15:58
제품을 만들어보면 시간이 꽤나 틀어지는 경우가 많이 있습니다. 그나마 네트워크나 GPS 등의 장치가 있으면 시간 동기화라도 할 수 있지만 단독 제품인 경우는 그럴 수가 없습니다. 그래도 시간에 민감한 제품이 아니라고 생각해서 그냥 시장에 내보냈다가 바이어나 소비자로 부터 시간이 자꾸 틀어진다는 컴플레인이 발생하지요. (하지만 요즘에는 원칩에 있는 RTC도 꽤 정확하더라구요. 모든 경우에 다그런 것은 아닙니다.) 그래서 외부 RTC를 사용해서 시간 오차가 적도록 설계하곤 하는데요. 외부 RTC가 잘 동작하는지 확인 할 수 있는 예제 코드입니다. #include #include #include #include #include #include #include #include #include int idx = ..
-
리눅스 어플리케이션에서 SPI 사용하기프로그래밍/리눅스 2021. 3. 24. 15:50
I2C에 이어서 SPI를 사용하는 방법도 설명하겠습니다. 먼저 아래 예제 코드를 보시죠. #include #include #include #include #include #include #include #include #include int bus = 0; int cs = 0; unsigned int mode = SPI_MODE_3; unsigned int bits = 8; unsigned int lsb_first = 1; unsigned int speed = 1000000; // 1MHz int main() { int fd; int rval; char path[20]; unsigned char buf[10]; struct spi_ioc_transfer xfer[1]; sprintf(path, "/dev..
-
리눅스 어플리케이션에서 I2C 사용하기프로그래밍/리눅스 2021. 3. 23. 22:05
I2C나 SPI로 통신되는 칩들은 대부분 리눅스 디바이스 드라이버로 핸들링하는게 보통이지만 테스트나 간단한 기능을 하는 칩의 경우에는 어플리케이션에서 핸들링하기도 하지요. 이번에는 리눅스 어플리케이션에서 I2C 칩을 Read/Write 하는 방법을 설명해 볼까 합니다. 아마도 대부분은 I2C 노드가 /dev 디렉터리에 i2c/0, i2c/1 ... i2c/N 이렇게 존재하거나 i2c-0, i2c-1 ... i2cN 이렇게 존재할 것입니다. 이 노드들을 open, close, ioctl, read, write와 같은 I/O 함수들로 I2C 통신을 할 수 있습니다. 읽어오기 MCU의 I2C 0번 버스에 Slave address가 A0h인 칩이 있고, Sub address가 16비트이고 데이터는 8비트로 통신..
-
Windows용 RTSP 서버 소스프로그래밍/윈도우즈 2021. 3. 23. 10:15
최근에 카메라가 있는 보드로 부터 영상을 RTSP로 받아서 재생해주는 윈도우즈용 응용 프로그램을 만들 일이 있었습니다. 하지만, 카메라 보드와 개발을 동시에 진행해야 해서 테스트가 용이하지 않아 노트북에 있는 웹캠 영상을 소스로 사용하여 RTSP 서버를 만들어 테스트를 진행하였습니다. 이렇게 임베디드 분야는 타깃 보드쪽 개발과 앱 개발을 동시에 진행하는 경우가 많아 일정 내에 개발을 완료하기 위해서는 시뮬레이션 환경을 만드는 일도 필요합니다. 사설이 길었네요... 소스는 Microsoft Visual C++ 2019로 작성되었지만 64비트 컴파일러가 지원되는 버전이면 가능할 것 이라고 생각됩니다. 64비트 컴파일이 지원되야 하는 이유는 다운로드 받아 사용할 FFMPEG 라이브러리가 64비트이기 때문입니다..