티스토리 뷰

심화

User Interface - UART 특수키 처리

Just4Fun 2017. 6. 24. 16:32

많은 임베디드 시스템은 사람의 개입없이 자동으로 미리 설정된 조건에 따라 동작되도록 만들어져 있다.  그러나, 또다른 많은 임베디드 시스템은 사람의 직접적인 조작을 필요로 하기도 한다.

임베디드 시스템에 적용할 수 있는, 사용자의 입력을 받아 들이는 방법과 결과를 알려주는 방법은 셀 수 없이 많겠지만, 그 중에서도, 임베디드 시스템 개발 단계에서 가장 쉽고 유용하게 선택할 수 있는 기능인 UART를 통한 사용자 인터페이스에 대한 설명을 진행해 보도록 하겠다.

지금까지는 주로 보드의 동작 상태를 확인하거나 디버거 메시지를 출력하기 위하여 UART를 사용하였다면, 앞으로 설명할 내용들은 사용자의 입력을 어떤 방식으로 처리할 것인지에 대한 내용을 다룰 것이므로 알아두면 유용하게 활용할 수 있을 것이다.

먼저 확인할 내용은 컴퓨터의 키보드에서 하나의 키를 눌렀을때 보드에서는 어떤 값이 들어오는지 알아보는 것이다.

예를 들면, 키보드에 있는 키 중에서 'a'를 누르면, 보드에서는 헥사 값으로 0x61에 해당하는 값이 들어온다.  대문자 'A' 키를 누르면 보드에는 0x41이 들어오게 된다.  이런 값들을 ASCII 코드라고 부른다.  인터넷에서 ASCII 코드를 검색하면 각각의 키들에 해당하는 헥사값들을 확인할 수 있다.

UART를 이용한 사용자 인터페이스를 구현할 때 ASCII 코드만 알아도 왠만한 기능은 구현할 수 있긴 하지만, 키보드에 보면 몇몇 특수키들이 있음을 볼 수 있다.  UART를 이용한 사용자 인터페이스 기능을 개발하게 되는 경우에, 이러한 특수키들을 활용하면 훨씬 다양한 기능을 제공할 수 있기 때문에 특수키들에 대한 값들을 알아두는것이 필요하다. 

불행히도 ASCII 코드에는 이러한 특수키들에 대한 값들을 제공하고 있지 않기 때문에 특수키를 눌렀을때 보드에는 어떤 값들이 들어 오는지 직접 확인하여야 한다.

ASCII 코드는 글자 하나에 1바이트 값을 할당하고 있지만, 특수키들은 여러바이트값을 가질수 있으므로 UART로 들어오는 값들을 uart_buf[]에 차례로 넣어 둔다음, 엔터키에 해당하는 값이 들어오면, 즉, 사용자가 키보드에서 엔터키를 눌렀을 때 비로소 uart_buf[]에 들어와 있는 값들을 출력하는 코드이다.

위의 그림에서 초록색박스로 표시된 부분은 키보드의 F1 ~ F12에 해당하는 값들이다.  펑션키들은 5바이트로 이루어져 있음을 알 수 있다.

노란색 박스로 표시된 부분은 Insert, Home, Page Up, Delete, End, Page Down에 해당하는 값들이다.

빨간색 박스 부분은 화살표 키에 해당하는 값들인데, Up, Down, Right, Left 에 할당된 값들이다.

이 값들은 컴퓨터의 OS 종류나, UART 콘솔 프로그램마다 다를수 있으므로 반드시 사용하고 있는 환경에서 확인을 하여야 한다.

특수키를 눌렀을 때 보드에서 어떤 값들이 들어오는지 확인하였으므로, 특수키가 눌러졌을때 이를 처리하기 위한 코드를 만들어 보도록 하겠다.

위와 같은 코드를 만들어서 보드에서 실행 시킨 후 특수키를 눌러서, 누른 키에 해당하는 메시지가 출력되는지 확인해 본다.


ui_base.zip


'심화' 카테고리의 다른 글

User Interface - argc, argv  (0) 2017.07.07
User Interface - UART 문자열 입력  (0) 2017.06.29
megaOS - 13. Mailbox  (1) 2016.11.13
megaOS - 12. Flag  (0) 2016.11.08
megaOS - 11. Semaphore  (0) 2016.11.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함