메뉴 바로가기 본문 바로가기

기술자료

[디지텍시스템스제공] 터치스크린 드라이버 만들기(2/2)
andro78 2006-11-13 오전 11:57:44 조회 8495
1. 준비사항

WinCE에서 터치드라이버를 작성하고자 할 때 어떤 것들을 체크해야 할까요? 다음에 체크리스트를 열거해 보았습니다.
 > 컨트롤러는 가지고있는가 ? 
 ::  드라이버를 만들기 위해서는 당연히, 해당 디바이스가 필요하겠죠.
 > 컨트롤러와 PDA 혹은 PC 와 인터페이스는 무엇으로 하는가 ?  
 ::  SERIAL, USB, PS/2 등 여러 방식이 있을 것입니다. 여기서는 SERIAL 방식을 
     예로 들겠습니다.
 > 해당 인터페이스로 좌표가 어떤 방식으로 넘어오는가? 
 ::  아래와 같은 좌표에 관한 스펙이 필요하겠습니다. 총 몇 바이트의 정보가 
     날아오며, 그 중의 몇 바이트가 X좌표를 뜻하는지, Y좌표를 뜻하는지를 
     드라이버와 컨트롤러간에 약속이 필요하겠죠. 다음 예시한 스펙은 총 4바이트의
     정보가 날아오며, 그중에서 x,y 각각이 12비트로 표현되고 있습니다.





2. 개발 환경

드라이버를 개발하고자 할 때, WinCE 에서는 DLL 의 형태로 드라이버를 개발합니다. 그렇기 때문에, WinCE API 를 활용하여 드라이버를 작성하실 수 있습니다. 즉 WinCE 에서 어플리케이션을 개발해 본 경험이 있는 개발자라면, 드라이버를 개발하는데에도 별 무리 없이 진행하실 수 있습니다.

드라이버 개발 환경 또한, WinCE 어플리케이션을 개발할 때 사용하던 Embeded Visual C++ 3.0을 이용하여 개발하시면 됩니다. 이번 강좌에서는 Embeded Visual C++ 3.0 의 사용법은 알고 있다는 가정하에 진행하도록 하겠습니다.

3. 실제 구현

이번 강좌에서는 드라이버에서 구현해야하는 부분 중 가장 필요한 부분에 발췌해서 소개하도록 하겠습니다.

1. 터치 컨트롤러의 포트를 연다.
handle = CreateFile (L"COM1:", // Pointer to the name of the port GENERIC_READ | GENERIC_WRITE, // Access (read-write) mode 0, // Share mode NULL, // Pointer to the security attribute OPEN_EXISTING,// How to open the serial port 0, // Port attributes NULL); 2. 터치 컨트롤러러부터 좌표를 얻어온다.
do { // 좌표수신에만 관심을 갖는다. SetCommMask( handle, EV_RXCHAR|EV_POWER ); // 좌표가 수신될때까지 기다린다. WaitCommEvent (handle, …, 0); ClearCommError( handle, &dwErrors, &Stat ); // 큐에 데이터가 들어오면, if( Stat.cbInQue ) { ReadFile (handle, 좌표버퍼, …); EnterCriticalSection( &CriticalSection ); - 사용자 큐에 좌표를 넣는다. - LeaveCriticalSection( &CriticalSection ); } } while(1) ;


3. 좌표를 이용해 마우스 포인터를 움직인다.

얻어온 좌표를 스펙을 참고하여, 실제 화면상의 좌표로 바꿔주는 부분이 필요합니다만, 여기서는 생략하였습니다. mouse_event 함수를 이용하여, 화면상의 좌표를 움직일 수 있습니다.
mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP|MOUSEEVENTF
_RIGHTDOW

답변 목록