
도와주세요!!
글 수 15,339
2009.06.26 15:19:49 (*.111.170.5)
9408
2009.06.30 13:01:14 (*.111.170.5)
감사합니다..
덕분에 해결했습니다..
./configure -xplatform linux-armv5l-g++ -qconfig qpe -no-xft -qvfb -depths 8, 16
좌표값을 수정하고 x좌표값을 아래와같이 수정한후 재 컴파일하여 해결했습니다
xf = (MK712_end_dx - data.x ) / (((MK712_end_dx - MK712_start_dx) / MK712_HEIGHT ) +1);
yf = (MK712_end_dy - data.y ) / (((MK712_end_dy - MK712_start_dy) / MK712_WIDTH ) +1);
참고로 LCD V1과 ez-x5보드를 공급된간격간을사용하여 조립하다보니 LCD연결 케이블관계로 전원 스위치와 화면이 거꾸로 향하게됩니다.
V1 LCD의상태가 반대로 나오는건없나요?? ^^
안녕하세요..
src\kernel\qwsmouse_qws.cpp 에서 수정하시면 됩니다.
아래의 소스 부분들을 수정해 주시면 됩니다.
struct mk712_packet {
unsigned int pressure;
unsigned int x;
unsigned int y;
unsigned int reserved;
};
#define MK712_WIDTH 640
#define MK712_HEIGHT 480
unsigned int MK712_start_dx = 202; //202
unsigned int MK712_start_dy = 137; //138
unsigned int MK712_end_dx = 3958; //4020
unsigned int MK712_end_dy = 3940; // 4030
void QCustomTPanelHandlerPrivate::readMouseData()
{
#ifdef QWS_CUSTOMTOUCHPANEL
if(!qt_screen) return;
int ret;
unsigned int xf,yf;
mk712_packet data;
QPoint q;
ret = read( mouseFD, &data, sizeof(data) );
if(ret<0)
{
qDebug("Error %s",strerror(errno));
return;
}
switch( data.pressure )
{
case 0 : if( checktouch == 1 )
{
if( data.x < MK712_start_dx ) data.x = MK712_start_dx;
if( data.x > MK712_end_dx ) data.x = MK712_end_dx;
if( data.y < MK712_start_dy ) data.y = MK712_start_dy;
if( data.y > MK712_end_dy ) data.y = MK712_end_dy;
xf = (data.x - MK712_start_dx) / (((MK712_end_dx - MK712_start_dx) / MK712_HEIGHT ) +1);
yf = (MK712_end_dy - data.y ) / (((MK712_end_dy - MK712_start_dy) / MK712_WIDTH ) +1);
// Kerenl에서 장치드라이브로 올라오는 데이타의 X, Y가 바뀌어 있다.
data.x = yf;
data.y = xf;
if( data.x < 0 ) data.x = 0;
if( data.y < 0 ) data.y = 0;
if( data.x >= MK712_WIDTH ) data.x = MK712_WIDTH-1;
if( data.y >= MK712_HEIGHT ) data.y = MK712_HEIGHT-1;
q.setX(data.x);
q.setY(data.y);
oldmouse = q;
emit mouseChanged(q, Qt::LeftButton);
checktouch = 0;
return;
}
else
{
return;
}
case 1 : emit mouseChanged(oldmouse, 0);
checktouch = 1;
return;
default :
return;
}
#endif
}
수정할 부분
1. 좌표의 시작점과 끝점의 좌표를 넣는다.
unsigned int MK712_start_dx = 202; //202
unsigned int MK712_start_dy = 137; //138
unsigned int MK712_end_dx = 3958; //4020
unsigned int MK712_end_dy = 3940; // 4030
2. 좌표에 맞게 사상하는 알고리즘을 수정한다. 아래부분은 좌표의 위치가 바뀌었거나, 미세조정시 수정해 주시면 됩니다.
xf = (data.x - MK712_start_dx) / (((MK712_end_dx - MK712_start_dx) / MK712_HEIGHT ) +1);
yf = (MK712_end_dy - data.y ) / (((MK712_end_dy - MK712_start_dy) / MK712_WIDTH ) +1);
그럼 좋은 하루 되세요..