精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>嵌入式开发>>外设接口:屏幕、串口、并口等>>触摸屏>>Re:顶一下人气。(3)

主题:Re:顶一下人气。(3)
发信人: yexunkai(叶云)
整理人: wenbobo(2003-09-19 09:20:31), 站内信件
嵌入到Qt-embedded 3.1.2中的部份。






#include "qmouseelo_qws.h" // QWSEloMouseHandler, QWSEloMouseHandlerPrivate
#include "qsocketnotifier.h" //QSocketNotifier
#include "qgfx_qws.h" // qt_screen
#include "unistd.h" // usleep()

QWSEloMouseHandler::QWSEloMouseHandler( const QString & drv, const QString & dev )
{
    d = new QWSEloMouseHandlerPrivate( this );
    setFilterSize( 3 );
}

QWSEloMouseHandler::~QWSEloMouseHandler()
{
    delete d;
}

QWSEloMouseHandlerPrivate::QWSEloMouseHandlerPrivate( QWSEloMouseHandler * h )
: handler( h )
{
    mouseFD = -1;
    EloInit( &m_Elo );
    EloControl( &m_Elo, &mouseFD, ELO_DEVICE_INIT );
    usleep( 20000 );
    // setup the error handling !!!!
    EloControl( &m_Elo, &mouseFD, ELO_DEVICE_ON );
    usleep( 20000 );

    QSocketNotifier * mouseNotifier;
    mouseNotifier = new QSocketNotifier( mouseFD, QSocketNotifier::Read, this );
    connect( mouseNotifier, SIGNAL( activated( int ) ), this, SLOT( readMouseData() ) );
}

QWSEloMouseHandlerPrivate::~QWSEloMouseHandlerPrivate()
{
    EloControl( &m_Elo, &mouseFD, ELO_DEVICE_OFF );
}

void QWSEloMouseHandlerPrivate::readMouseData()
{
    int x, y, state;

    static bool isHandling;

    if ( !qt_screen || isHandling ) return;
    
    isHandling = TRUE;
    usleep( 20000 ); // wait 20ms for mouse position data to arrive from touch screen.
    EloReadInput( &m_Elo, mouseFD, &x, &y, &state ); // read data once
    
    if ( x ) {
QPoint mousePos;
mousePos.setX(x);
mousePos.setY(y);
if ( state == ELO_PRESS || state == ELO_STREAM ) {
    handler->mouseChanged( mousePos, Qt::LeftButton );
} else {
    handler->mouseChanged( mousePos, Qt::NoButton );
}
    }
    
    isHandling = FALSE;
}



----
有兴趣请直接寄信
在下上线时间不定,
回应帖子也比较慢。

[关闭][返回]