• 3524阅读
  • 1回复

[提问]求救: micro2440开发板在Qt下open按键失败 [复制链接]

上一主题 下一主题
离线zjun726
 
只看楼主 倒序阅读 楼主  发表于: 2013-05-28
在Qt下面open按键,总是提示open失败。我在dev下面看到有buttons设备啊,而且cat时也是有反应的。
如果open pwm就没有问题
源码如下:

#include "mainwidget.h"
#include "ui_mainwidget.h"
#include <QWSServer>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <qapplication.h>
#include <qmessagebox.h>
#include <qsocketnotifier.h>
#include <errno.h>


int button_fd = 0;
int pwm_fd = 0;
QSocketNotifier *button_notifier;
QSocketNotifier *pwm_notifier;
bool m_oldButtonsState[8];


mainWidget::mainWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::mainWidget)
{
    ui->setupUi(this);


    set_dialog = NULL;


    connect(ui->setButton, SIGNAL(clicked()), this, SLOT(on_setButton_clicked()));


    button_fd = ::open("/dev/buttons", 0);
    if (button_fd < 0)
    {
        QMessageBox::information(this, "Error", "Fail to open /dev/buttons.");
        return;
        perror("open buttons failed\n");
    }
    memset(m_oldButtonsState, 0, sizeof m_oldButtonsState);


    pwm_fd = ::open("/dev/pwm", 0);
    if (pwm_fd < 0)
    {
        perror("open pwm failed\n");
    }


    button_notifier = new QSocketNotifier(button_fd, QSocketNotifier::Read, this);
    pwm_notifier = new QSocketNotifier(pwm_fd, QSocketNotifier::Read, this);
}


mainWidget::~mainWidget()
{
    delete ui;
    ::close(button_fd);
}


void mainWidget::on_setButton_clicked()
{
    if (set_dialog == NULL)
        set_dialog = new setDialog(this);


//    QWSServer::setCursorVisible(false); //hide the cursor
//    set_dialog->setWindowFlags(Qt::FramelessWindowHint);
    set_dialog->show();
}

离线zjun726
只看该作者 1楼 发表于: 2013-07-03
回 楼主(zjun726) 的帖子
现在知道问题所在了,Qt的erver进程在我的程序之前已经open了buttons,所以我再open时就会报错。
快速回复
限100 字节
 
上一个 下一个