在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();
}