도와주세요!!
글 수 15,339
2006.02.28 17:16:37 (*.223.248.145)
6703
TFTLCD-640*480을 쓰고 있는데...
qwsmouse_qws.cpp파일을 구해서 다시 컴파일하고 실행해보니...터치 스크린이 되긴하는데..
x축하고 y축이 바뀌어서 나옵니다...
===============================
x축이 480이고 y축이640으러 나오면서
x축으러 (오른쪽으로)점을 움직이면
y축의 (밑으로)점이 움직이고..
x축으러 (왼쪽으러)점을 움직이면
y축의 (위로)점이 움직 입니다...
===============================
게시판 글 이리저리 읽다보니 밑에 부분을 수정하면 된다고 하는데...
몇 시간동안 이리저리 바꿔 보면서 해밨는데.. 도저히 안되네여..ㅜ.ㅜ
답변점 부탁 드립니다..ㅜ.ㅜ 한번 수정하고 컴차일하고 보드상에서 볼려고 수십번을 넘게
했는데...미치겠습니다.ㅜ.ㅜ
struct mk712_packet {
unsigned int pressure;
unsigned int x;
unsigned int y;
unsigned int reserved;
};
#define MK712_WIDTH 640
#define MK712_HEIGHT 480
//MK712_start_dx = 220;
//MK712_start_dy = 170;
//MK712_end_dx = 3960;
//MK712_end_dy = 4000;
unsigned int MK712_start_dx = 60;
unsigned int MK712_start_dy = 138;
unsigned int MK712_end_dx = 4020;
unsigned int MK712_end_dy = 4030;
void QCustomTPanelHandlerPrivate::readMouseData()
{
#ifdef QWS_CUSTOMTOUCHPANEL
if(!qt_screen) return;
int ret;
float xf,yf;
mk712_packet data;
// 기존의 것을 주석처리 하였음
// unsigned char data2[5];
/* 기존의 것을 주석처리 하였음
ret=read(mouseFD,data2,5);
if(ret==5)
{
data.status=data2[0];
data.xpos=(data2[1] << 8) | data2[2];
data.ypos=(data2[3] << 8) | data2[4];
QPoint q;
q.setX(data.xpos);
q.setY(data.ypos);
mousePos=q;
if(data.status & 0x40)
{
emit mouseChanged(mousePos,Qt::LeftButton);
}
else
{
emit mouseChanged(mousePos,0);
}
}
*/
ret = read( mouseFD, &data, sizeof(data) );
// 좌표를 표시하기위한 디버깅 메세지 표출
qDebug("%d,%d,%d,%d", data.pressure, data.x, data.y, data.reserved);
if(ret)
{
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;
if (data.pressure == 0 )
{
//MK712_WIDTH 640, MK712_HEIGHT 480
xf = MK712_WIDTH - ((float) data.y - (float) MK712_start_dy) / (((float) MK712_end_dy - (float) MK712_start_dy) / MK712_WIDTH);
yf = ((float) data.x - (float) MK712_start_dx) / (((float) MK712_end_dx - (float) MK712_start_dx) / MK712_HEIGHT);
data.x = xf;
data.y = yf;
/*HJK00-ORIGINAL
xf = MK712_WIDTH - ((float) data.x - (float) MK712_start_dx) / (((float) MK712_end_dx - (float) MK712_start_dx) / MK712_WIDTH);
yf = ((float) data.y - (float) MK712_start_dy) / (((float) MK712_end_dy - (float) MK712_start_dy) / MK712_HEIGHT);
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;
QPoint q;
q.setX(data.x);
q.setY(data.y);
mousePos = q;
emit mouseChanged(mousePos, Qt::LeftButton);
}
else
{
emit mouseChanged(mousePos, 0);
}
}
if(ret<0)
{
qDebug("Error %s",strerror(errno));
}
#endif
}
qwsmouse_qws.cpp파일을 구해서 다시 컴파일하고 실행해보니...터치 스크린이 되긴하는데..
x축하고 y축이 바뀌어서 나옵니다...
===============================
x축이 480이고 y축이640으러 나오면서
x축으러 (오른쪽으로)점을 움직이면
y축의 (밑으로)점이 움직이고..
x축으러 (왼쪽으러)점을 움직이면
y축의 (위로)점이 움직 입니다...
===============================
게시판 글 이리저리 읽다보니 밑에 부분을 수정하면 된다고 하는데...
몇 시간동안 이리저리 바꿔 보면서 해밨는데.. 도저히 안되네여..ㅜ.ㅜ
답변점 부탁 드립니다..ㅜ.ㅜ 한번 수정하고 컴차일하고 보드상에서 볼려고 수십번을 넘게
했는데...미치겠습니다.ㅜ.ㅜ
struct mk712_packet {
unsigned int pressure;
unsigned int x;
unsigned int y;
unsigned int reserved;
};
#define MK712_WIDTH 640
#define MK712_HEIGHT 480
//MK712_start_dx = 220;
//MK712_start_dy = 170;
//MK712_end_dx = 3960;
//MK712_end_dy = 4000;
unsigned int MK712_start_dx = 60;
unsigned int MK712_start_dy = 138;
unsigned int MK712_end_dx = 4020;
unsigned int MK712_end_dy = 4030;
void QCustomTPanelHandlerPrivate::readMouseData()
{
#ifdef QWS_CUSTOMTOUCHPANEL
if(!qt_screen) return;
int ret;
float xf,yf;
mk712_packet data;
// 기존의 것을 주석처리 하였음
// unsigned char data2[5];
/* 기존의 것을 주석처리 하였음
ret=read(mouseFD,data2,5);
if(ret==5)
{
data.status=data2[0];
data.xpos=(data2[1] << 8) | data2[2];
data.ypos=(data2[3] << 8) | data2[4];
QPoint q;
q.setX(data.xpos);
q.setY(data.ypos);
mousePos=q;
if(data.status & 0x40)
{
emit mouseChanged(mousePos,Qt::LeftButton);
}
else
{
emit mouseChanged(mousePos,0);
}
}
*/
ret = read( mouseFD, &data, sizeof(data) );
// 좌표를 표시하기위한 디버깅 메세지 표출
qDebug("%d,%d,%d,%d", data.pressure, data.x, data.y, data.reserved);
if(ret)
{
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;
if (data.pressure == 0 )
{
//MK712_WIDTH 640, MK712_HEIGHT 480
xf = MK712_WIDTH - ((float) data.y - (float) MK712_start_dy) / (((float) MK712_end_dy - (float) MK712_start_dy) / MK712_WIDTH);
yf = ((float) data.x - (float) MK712_start_dx) / (((float) MK712_end_dx - (float) MK712_start_dx) / MK712_HEIGHT);
data.x = xf;
data.y = yf;
/*HJK00-ORIGINAL
xf = MK712_WIDTH - ((float) data.x - (float) MK712_start_dx) / (((float) MK712_end_dx - (float) MK712_start_dx) / MK712_WIDTH);
yf = ((float) data.y - (float) MK712_start_dy) / (((float) MK712_end_dy - (float) MK712_start_dy) / MK712_HEIGHT);
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;
QPoint q;
q.setX(data.x);
q.setY(data.y);
mousePos = q;
emit mouseChanged(mousePos, Qt::LeftButton);
}
else
{
emit mouseChanged(mousePos, 0);
}
}
if(ret<0)
{
qDebug("Error %s",strerror(errno));
}
#endif
}