• 8029阅读
  • 7回复

求救!用QT写的界面程序,读取刷卡器数据丢失! [复制链接]

上一主题 下一主题
离线home102
 

只看楼主 倒序阅读 楼主  发表于: 2008-06-13
— 本帖被 XChinux 执行加亮操作(2008-06-13) —
环境:FC6,KDE
            QT4.3.4
PS2刷卡器,读取的卡磁道信息是通过键盘事件传给QT界面程序。
刷卡过程相当于在0.1秒内迅速依次敲击键盘输入100多个字符。
经多次试验,132个字符里,可能会丢失其中任意的几个到几十个不等,少数情况不丢失!
难道QT对于键盘事件无缓冲机制???
离线home102

只看该作者 1楼 发表于: 2008-06-13
又或是KDE桌面没有把键盘事件传给QT界面程序?但试过gnome、twm桌面也不行,还是有漏掉的
离线home102

只看该作者 2楼 发表于: 2008-06-14
用GTK编写了一个简单窗体接收keypress事件,发现kde/xfce/twm等桌面的刷卡键盘事件都能一个不落顺序接收!难道QT竟然连0.1秒处理100个键盘事件都会出错??!!!令人震惊!!!!!!
离线glocklee
只看该作者 3楼 发表于: 2008-06-14
你最好贴一下读取部分的代码
离线home102

只看该作者 4楼 发表于: 2008-06-16
测试读卡器刷卡代码如下:
#include <QtCore>
#include <QApplication>
#include <QtGui>

class KfrmMainForm:public QWidget
{
    Q_OBJECT
    public:
        KfrmMainForm(QWidget *parent = 0);

    protected:       
        virtual void keyPressEvent(QKeyEvent *event);
};


KfrmMainForm::KfrmMainForm(QWidget *parent)
    :QWidget(parent)
{
    setFocusPolicy(Qt::StrongFocus);                                      
}

void KfrmMainForm::keyPressEvent(QKeyEvent *event)
{

    QString str ( QString::number ( event->key() ) );
    qDebug() <<"<KfrmMainForm> keyPressEvent :: "<<str<<endl;
}


int main(int argc, char *argv[])
{
      QApplication app(argc, argv);
     KfrmMainForm *mainForm=new KfrmMainForm();

     mainForm->show();                           
      return app.exec();    
                            
}
离线home102

只看该作者 5楼 发表于: 2008-06-16
void KfrmMainForm::keyPressEvent(QKeyEvent *event)
{

    QString str ( QString::number ( event->key() ) );
    qDebug() <<"<KfrmMainForm> keyPressEvent :: "<<str<<endl;
}
语句    qDebug() <<"<KfrmMainForm> keyPressEvent :: "<<str<<endl; 将接收到QT传来的所有keyPressEvent 事件打出来,结果发现,与磁卡实际数据不符,少了一部分。
离线ivan2929
只看该作者 6楼 发表于: 2010-12-17
遇到同样的问题,请问你解决了没有,请回复我邮箱:383680871@qq.com
离线huzhiwen28

只看该作者 7楼 发表于: 2010-12-20
估计是event队列机制的问题,估计你要看看QT的底层代码了,关于keyPressEvent函数处理的问题

QT在处理你所描叙的快速响应事件的时候,往往力不从心,这个时候,要么你认真分析底层代码,做做修改,要么就简单使用系统的API,这个其实就是QT在做真正产品开发将会遇到的问题
http://blog.sina.com.cn/tonyhuzhiwen
https://github.com/huzhiwen28/
专注于工业嵌入设备开发
快速回复
限100 字节
 
上一个 下一个