본문 바로가기
임베디드기기/Raspberry Pi

라즈베리 터치스크린 구현! (Non X환경)

by Joseph.Lee 2015. 7. 31.

2014.01.24. 13:33


구성은 라즈베리파이 + USB형 터치스크린컨트롤러 + 7Inch 모니터 이렇다.

 

그런데...

우선 USB터치컨트롤러는 리눅스 ARM환경또한 지원한다.(Daemon으로 작동하는 드라이버 바이너리)

그런데.. X환경에서는 캘리브레이션을 지원하는데...

Non X환경에서는 캘리브레이션을 지원하지 않는다..ㅠㅠ

결국 캘리브레이션은 직접 했다.

 

터치시 /dev/input/eventX 으로 데이터가 날라온다.

C으로 프로그램을 짰는데 mouse디바이스를 open하고

데이터가 날라오면 input_event구조체로 읽는다.

input_event는 <linux/input.h> 에 있다.

struct input_event {

 struct timeval time;

 __u16 type;

 __u16 code;

 __s32 value;

};

 

터치가 되면 type=3,

code=0또는 1 (0:X좌표, 1:Y좌표)

value = 좌표값 (화면상의 좌표가 아닌 터치컨트롤러에서 나오는 좌표값이다.)

이렇게 날라온다.

 

캘리브레이션은 5점 방식으로 하였다.


http://www.ti.com/lit/an/slyt277/slyt277.pdf

http://www.scienceprog.com/how-to-calibrate-touch-screen-display-on-stm32-board/

특히 두번째 링크가 큰 도움이 되었다ㅋ



처음에만 켈리브레이션을 하고 켈리브레이션값은 저장해 놓고 다음부터는 하지 않아도 된다.

 

Non X환경으로 직접 FrameBuffer을 맵핑해서 제어한다.

그래서 그런지 느리다;;;

CPU는 70%나 먹으면서;;

초당 100번(10000uS쉬면서) FB에 커서 위치를 표시한다.

글구 1000uS Timeout을 걸어놓고 mouse device을 읽으면서 1000uS 쉰다. 즉 초당 500번정도 마우스 값을 읽는걸 시도한다. (이것보다 더 많이 쉬게 하면 반응속도가 너무 느려짐...ㅠㅠ)

 

라즈베리의 한계 + 내 프로그래밍 실력ㅠㅠ 으로 느.리.다.

 

나중엔 이걸로 태블릿 비슷하게 만들어볼 계획이다.

반응형

댓글