본문 바로가기

[Linux] 리눅스에서 getch() 사용 키보드 입력을 화면에 출력하지 않고 읽어오는 getch() 에 해당하는 함수가 gcc library 에는 존재하지 않습니다. 따라서 터미널의 설정을 변경하여 터미널 echo와 canonical 모드를 끄고 입력 버퍼를 1로 만든 후 키보드 입력을 읽고 터미널 설정을 원래대로 복원하는 방식으로 구현하여 사용할 수 있습니다. #include int getch(void) { int ch; struct termios old; struct termios new; tcgetattr(0, &old); new = old; new.c_lflag &= ~(ICANON|ECHO); new.c_cc[VMIN] = 1; new.c_cc[VTIME] = 0; tcsetattr(0, TCSAFLUSH, &new); ch = get..
[Linux] linux에서 getch() 및 kbhit() 사용하기 Linux에서는 함수 getch() 및 함수 kbhit()가 존재하긴 한다. 헤더파일도 conio.h로 주어지고 있고... 문제는 일반 컴파일러가 아니라 보드용 컴파일러, 즉 PC 환경이 아니라 임베디드 환경에서 작업할 때는 위의 헤더인 conio.h가 거의 주어지지 않는다. 따라서 getch() 및 kbhit() 를 사용하기 위해서는 직접 만들어 써야 한다는 어려움이 있다. 그래서 여기에 이와 동일한 작업을 하는 함수를 만들어 본다. 1. linux_kbhit.h 헤더 파일 #ifndef LINUX_KBHIT_H_ #define LINUX_KBHIT_H_ #include #include #include int linux_kbhit(void) { struct termios oldt, newt; int c..
[Linux] Serial-Programming 2. 시작하기 2.1 디버깅 코드를 디버깅하는 가장 좋은 방법은 또 하나의 리눅스 박스를 셋업하고 두 리눅스 박스를 null-modem 케이블로 연결하는 것이다. Miniterm 프로그램을 이용하여 문자들을 전송해보라. Miniterm은 컴파일하기도 쉽고, 키보드에서 입력되는 문자들(특수문자 포함)을 시리얼 포트로 전송할 수 있다. 컴파일할 때 체크해야 할 것은 #define MODEMDEVICE "/dev/ttyS0" 문장이 제대로 설정되어 있는가 하는 것이다. COM1으로 맞추려면 /dev/ttyS0, COM2로 하려면 /dev/ttyS1으로 수정한다. 테스팅을 할 때 가장 중요한 것은 문자가 시리얼 포트로 출력될 때 데이터가 출력 데이터 처리(output processing)을 하지 않고 그대로(r..
Linux] NCURSES란 ? NCURSES란 ? 텍스트모드에서 Window, Panel, Menu, Mouse, Color등을 쉽게 사용할 수 있도록 도와주는 라이브러리입니다. curses라이브러리도 거의 같은 역할을 합니다. ncurses는 curses의 새로운 버전입니다.(new curses) NCURSES설치? NCURSES는 LINUX 라이브러리 이며, 현재 최신 버전의 리눅스의 경우 gcc같은 개발프로그램 설치시 자동으로 설치됩니다. NCURSES를 사용하려면? #include //소스파일 안에 추가 컴파일시 gcc 소스파일네임 -lncurses NCURSES FUNCTIONS $설정 및 초기화 관련 함수 ♦initscr() curses모드를 시작한다. curses를 사용하기 위해 반드시 써줘야 한다. ♦endwin() c..
[Linux] NCURSES 프로그래밍 차례 1절. ncurses 는 무엇인가 2절. ncurses 프로그래밍 2.1절. ncurses 기본 이해 2.1.1절. 기본 구성요소 2.1.2절. 함수 이름 규칙 2.2절. 초기화 및 종료 2.3절. 색상(Color) 2.4절. 화면 업데이트 2.5절. 윈도우(Window) 2.5.1절. 윈도우 생성,이동,삭제 2.5.2절. 윈도우주위에 테두리 만들기 2.6절. 키보드 제어 2.6.1절. Function Keys 2.6.2절. 방향키및 특수키들 2.7절. 문자출력 2.7.1절. 형식화된 문자열 출력 2.7.2절. 문자/개행 출력 2.7.3절. 문자/개행 삭제 2.7.4절. Boxes 와 Line출력 2.8절. 입력 2.8.1절. 문자 / 문자열 입력 2.8.2절. 형식화된 입력 3절. 간단한 예제 1..
[Linux] shmat - 공유메모리 관리 연산 'Programming/Etc(펌&자료)'에 해당되는 글 61건 2009/08/04 [C] [#ifdef~#endif] [#ifndef~#endif] 2009/07/26 [C] 포인터를 쓰는 이유 2009/07/26 [C] C언어에서 특정폴더의 파일을 모두 읽어서, 리스트를 만드는 함수가 따로 있나요? 2009/07/26 [C] 쉬프트연산을 통한 압축문제 2009/07/26 [C++] enum 의 적절한 활용 (2) 2009/07/26 [C] C언어 char 형 배열이 한글(unicode)을 어떻게 인식할까? 2009/07/20 [Linux] signal 다루기 3 (1) 2009/07/19 [Linux] signal 기초 -1 2009/07/15 [Linux] NCURSES Programming HOW..
[Linux] shmget - 공유메모리 영역을 할당 1장. shmget(2) 차례 1.1. 사용법 1.2. 설명 1.3. 시스템 호출에 대한 반응 1.4. 반환값 1.5. 에러 1.6. 예제 1.7. 참고문헌 공유메모리 영역을 할당한다. 1.1. 사용법 #include #include int shmget(key_t key, size_t size, int shmflg); 1.2. 설명 shmget()은 주어진 인자 key를 접근번호로 하는 공유메모리 공간할당을 커널에 요청한다. 커널에서 성공적으로 공유메모리 공간을 할당하게 되면 공유메모리를 가르키는 식별자를 리턴하게 된다. 생성될 공유메모리 공간의 크기는 size를 통해서 byte 단위 크기로 지정할 수 있다. 공간의 할당은 shmflg가 IPC_PRIVATE이거나 key 를 가지는 공유메모리영역이 존재하..
[Linux] Charater Cell Graphics 8. 문자단위 그래픽스 (Character Cell Graphics)이장은 화소(pixel)를 기본으로 하지않는, 문자를 기본으로 하는 화면 입력과 출력을 다룬다. 우리가 문자(character)를 말할 때, 문자는 문자집합(charset)에 따라 변화되는 화소(pixel)의 조합을 의미한다. 텍스트(text)가 화소(pixel) 그래픽보다 매우 빨리 처리되기 때문에 그래픽 카드(graphic card)는 이미 한개이상의 문자집합(charset)을 제공하고, 기본적으로 텍스트(charset) 모드에서 동작한다. 간단(무딘)하고 지겨운 텍스트 표시하는 것 이상으로 단말기를 다룰 수 있다. 리눅스 단말기(terminal), 특히 콘솔(console)이 제공하는 특별한 특징들을 어떻게 사용할 것인가에 대해 설..