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번정도 마우스 값을 읽는걸 시도한다. (이것보다 더 많이 쉬게 하면 반응속도가 너무 느려짐...ㅠㅠ)
라즈베리의 한계 + 내 프로그래밍 실력ㅠㅠ 으로 느.리.다.
나중엔 이걸로 태블릿 비슷하게 만들어볼 계획이다.
'임베디드기기 > Raspberry Pi' 카테고리의 다른 글
[라즈베리파이] PWM Audio 개조하기 1 - 시작 (0) | 2016.07.01 |
---|
댓글