본문 바로가기

Developement

(142)
MCU 를 위한 고정 소수점 간단 연산기 intfloat 이 소스는 100% free 이며 알아서 바꿔 쓰던지, 기능을 개선 하던지 마음대로 인 ALU 로 수행 되는 간단한 고정 소수점 처리기 입니다. 수행 할 수 있는 것은 고정소수점을 정수로 더하고, 빼고, 나누고, 곱하고 입니다. 정확히는 각도 계산을 위해 만들어진 것인지라 고정 소수점을 고정 소수점 자체로 나누는 기능은 없지만 어느정도 쓸모 있어 보입니다. 많은 버그를 내장하고 있을지 모르므로 가져다 쓰시는 분이 어느정도 검증 절차 밟아 쓰시는 것은 꼭 필수 입니다. 아래 파일의 압축을 풀면 intfloat.h 와 c 파일이 있으며, 왠만한 MCU 용 compiler 에서는 문제 없이 컴파일 됩니다.test.c 는 함수 확인용 이며, M-Sys 나 gcc(MinGW) 를 기본으로 시스템으로 쓰시는 분들에..
ALSA + mpg123 출력시 clicking noise 발생 대처 방안. 요즘 대부분의 Embedded Linux 환경이 좋아져서 개발 환경이 매우 용이해 졌습니다. 심지어 F*사 쪽은 Kernel 을 3.14 로 올리는 시대가 왔습니다만, 모든 환경이 그렇게 우아하게 좋을리가 없다는게 또 현실이 아닐까 합니다. 근래 하는 일 중에 ALSA 를 통해 mp3 를 재생 하는 일을 수행 하는 중, 다음과 같은 문제가 발생 하였습니다.사용된 mpg123 은 최신 버젼 (1.17.0 )mpg123 를 ALSA 와 붙이기 위해 mpg123 재생 예제를 응용하여 pthread로 play 부분을 처리.실제 Windows 환경에서는 문제가 발생 하지 않지만 Embedded Linux 상에서 mpg123 으로 decode 된 PCM buffer 를 재생시 최초 와 재생 종료시 clicking ..
Windows 에서 HDD 의 제조 번호와 Volume serial 을 알아 오는 소스 ( MinGW 호환 ) PC 내에서 고유한 ID 정보를 가져 오는 방법중 하나를 들라면 보통 LAN 카드의 MAC 주소나 HDD 의 제조사 모델 정보와 고유 제조번호를 선택 할 수 있습니다. LAN 카드나 HDD 는 교체가 쉽게 가능하나, OS 를 설치 해야 하는 조건을 생각하면 오히려 HDD 가 좀 더 unique 한 정보를 만들수 있어 보이길래 만든 유틸리티 소스 입니다. MinGW 에서도 빌드 될수 있도록 만든 것이라 NTDDDISK.H 가 없어도 되도록 만들었습니다만, 조건이 컴파일시 (또는 프로젝트 매니저에) -DNO_NTDDDISK_H 를 지정해야 합니다. 해당 소스는 완전 공개이며, Code::Blocks 프로젝트로 만들어진 예제까지 포함 입니다. 경우에 따라서는 VisualStudio 에서 수정해서 쓰시는데 지장..
FLTK 연재. 지금 부터 소개하는 FLTK 는 1998 년 부터 시작되어 온 GPL-V2 기반의 라이센스를 가진 GUI 라이브러리 입니다.각 OS 마다 구비되어 있는 GCC 를 이용해서 build 할수 있음은 물론, Windows 에서는 MSVC 를 통해서 개발을 이어 나갈 수 있기도 합니다. 대표 싸이트 : http://www.fltk.org/index.php FLTK 의 경우는 C++ 의 상속 개념을 통해 여러 종류의 Fl_Widget 이라 불리는 Component 를 유기적으로 만들 수 있으며, 각 platform마다 빌드시, 거의 모든 동작환경이나 형태가 동일한 GUI 를 만들수 있는 좋은 라이브러리 입니다. 특히 OpenGL 을 일부 사용하는 GUI 에서 거의 완벽한 대부분의 component 들을 사용할 수..
Windows API, 윈도우 에서 Drag Drop 으로 파일 목록 받기. 간단히 Windows 에서 파일을 Drag&Drop 으로 받는 방법들을 쓰는 프로그램들이 더러 있습니다. 이를 Windows API 로만 처리 하려면 다음과 같은 코드가 필요 합니다. 먼저, DragAcceptFiles() API 로 이벤트를 받을 Windows Handle 을 등록 합니다. DragAcceptFiles( hWindow, TRUE ); 이는 최초 WM_CREATE 부분에서 처리하는 방법을 써도 되나, 부분적으로 해당 이벤트를 받지 않고 싶을때 FALSE 대입으로 처리 할 수도 있습니다. 해당 이벤트는 WinMain() 에서 WM_DROPFILES 로 넘어 오게 됩니다. 이때 취해야 하는 인자는 wParam 으로 다음과 같이 처리 할 수 있습니다. BOOL CALLBACK DialogPro..
FLTK 1.3.x 용 Fl_TransBox component 이 component 는 투명한 Dimming 처리된 배경을 가진 Overlay 화면을 만들기 위해 만든 custom component class source code 로서, Fl_Box 를 상속받아 만들었습니다. 사용은 간단 합니다. 일반 Window 또는 Group 등 위에 이 Fl_TransBox 로 만든 component 를 생성 후, invisible 처리 해 놓고. 만들어진 component 를 보이도록 처리하면 되는데, 이때 Fl_Group 으로 묶어서 처리 하면 좀 더 효과적인 visual 을 만들수 있게 됩니다. 투명도는 set_alpha( unsgined char a ); 로 지정할 수 있으며, 0 부터 255 사이의 값으로 조절 됩니다. param 으로 넘어 가는 값이 0 이면 투명,..
MSYS : Windows 에서 리눅스 소스 빌드의 영광을 - -- 이번엔 어떠한 사진도 없습니다, MSYS 에 사진 따위는 사치 ... (라지만 올릴 사진이 없다는 것이 함정) -- Windows 는 애시당초 상용 OS 임에도 불구 하고, 자체 어플리케이션을 개발 할 수 있는 컴파일러나 환경을 전혀 지원 하지 않습니다. 일반적으로 Windows 를 단지 "단순한" 용도로만 쓰는 사람들이야 이런 개발환경을 고려 하거나 생각해야 할 부분이 전혀 없습니다만, 조금이나마 "무엇인가를 만들어 보겠다." 라는 창의성을 가진 사람이라면 이런 폐쇠적인 환경이 얼마나 (OS값이라고 지불해야 하는 금액을 생각하면) 불합리하고 오만한 Microsoft 의 환경에 자신이 처해 있는가를 알 수 있습니다. 혹시나 Visual Studio나 MFC 가 있는데 뭐가 걱정이지요? 하는 질문을 ..
의문 : winsock 에서 connect 에서 ERROR_ACCESS_DENIED 반환 !!! 현재 간단한 소켓을 통한 메시지 전송(명령어 일종)을 구현 중인데, 이게 이상한게 gcc 에서 컴파일하거나 해서 돌리면 잘 도는 것이 동일한 Windows API 를 이용해서 Delphi 에서 구동시 위와 같이 오류가 난다는 것 입니다. 에러 내용은 , 먼저 socket() 을 통해 fd 값을 얻고, 이것으로 connect() 를 하려면, 오류가 -1 이 리턴. WSAGetLastError() 를 통해 얻어 오는 것이 5 로서, ERROR_ACCESSS_DENIED 에 해당 하는 값 입니다. 과연 이 문제가 왜 발생 하는지 몇일 동안 고민 하고 있습니다. DLL 로 만들어서 call 하더라도 동일하게 문제가 발생 하는 것을 보아, 이것이 단순 socket 문제는 아닌 것 같고, 그렇다고 Administr..