[STM32] USART CLI (3)

이상윤·2022년 7월 26일
1

STM32

목록 보기
7/8

지난번에는 UART 통신을 이용해 한글자씩 입력 받고 다시 해당 문자를
출력해주는 간단한 실습을 진행해보았다.

이번에는 UART 통신 (인터럽트 방식)을 이용하여
CLI (Command Line Interface)를 구현해본다.

먼저 소스 코드는 아래 주소에 올려두었다.
https://github.com/2Sangyun/USART_CLI.git

실제로 구현된 보드를 테스트 할때, 이런식으로 CLI환경을 구축하여
테스트를 할 수 있다고 한다.

이번에 CLI 기능 중 구현할 기능은 History기능, 자동완성 기능이다.

구현한 코드의 전체적인 구조는 위와 같이 생각하면서 구현하였다.

  1. UART통신으로 입출력을 담당하는 부분과
  2. 입력된 명령어를 수행하는 Command부분
  3. 마지막으로 입력되었던 명령어들을 저장하는 Queue 이다.

큐는 History 기능을 구현하기 위해 사용되었는데, 그냥 배열로 하게 될 경우 History 버퍼의 크기가 가득 찰 경우 처리가 힘들어져 큐를 사용하는 것이 구현하기에 용이하다고 생각했기 때문이다.

방향키 위, 아래를 이용하여 이전명령들을 순회할 수 있다.

자동완성은 TAB키를 이용한다. 현재 까지 적혀있는 문자열을 이용하여 구현하였다.
최초에 명령어 set들을 만들어 놓고, 이 명령어들과 문자열을 비교한다.
현재까지의 문자열과 일치하는 것이 1개라면 바로 해당 명령어를 입력하게 하고
2개 이상이라면 해당하는 모든 명령어들을 출력한다.

최초 시작 화면

help 명령시 모든 명령어들을 출력해준다.

md 명령어 입력시 메모리를 읽는다.

history 명령 시 여태 입력했던 기록들이 출력되고
방향키 위, 아래를 통해 history 기록을 확인할 수 있다.

+IAP(In Application Programming) 기능 추가했다.

이후에는 led 명령을 구현할 예정
led 명령을 통해 실제로 보드에 달려있는 LED를 켰다 껐다 하도록 구현예정

참고

https://blog.naver.com/PostView.nhn?blogId=chcbaram&logNo=222179120060

0개의 댓글