0

私は Qt の初心者です。接続されているデバイスに関する情報を取得するために QDbusConnection API を使用することを考えました。次のコードを使用しました

#include <QtCore/QDebug>
#include <QtGui/QApplication>



#include <QtDBus/QDBusConnection>

#define HAL_SERV      "org.freedesktop.Hal"
#define HAL_MGR_INT   "org.freedesktop.Hal.Manager"
#define HAL_DEV_INT   "org.freedesktop.Hal.Device" 

#define HAL_MGR_PATH  "/org/freedesktop/Hal/Manager"
#define HAL_DEVS_PATH "/org/freedesktop/Hal/devices"

class Hal : public QObject
{                         
        Q_OBJECT        

public:
        Hal() : 
                QObject(),
                cnx( QDBusConnection::connectToBus( QDBusConnection::SystemBus,     "system" ) )
        {
                cnx.connect(
                                HAL_SERV, HAL_MGR_PATH, HAL_MGR_INT, "DeviceAdded",
                                this, SLOT(added(QString)) );
                cnx.connect(
                                HAL_SERV, HAL_MGR_PATH, HAL_MGR_INT, "DeviceRemoved",
                                this, SLOT(removed(QString)) );
        }

private slots:
        void added( QString dev )
        {
                qDebug() << __FUNCTION__ << dev;
        }

        void removed( QString dev )
        {
                qDebug() << __FUNCTION__ << dev;
        }

private:
        QDBusConnection cnx;
};

int main( int ac, char * * av )
{
        QApplication  app( ac, av );

        Hal hal;

        return( app.exec() );
}

#include "main.moc"

プロジェクトを正常にビルドします。実行すると、出力が観察されません。デバッガーは次のような警告を表示します: GDB: 制御端末の設定に失敗しました: デバイスの不適切な ioctl\n"

問題は何ですか、誰でも私を詳細に説明できますか。アプリケーションの実行方法は?引数が必要ですか?

よろしく、 スジャサ

4

1 に答える 1

1

libusbを使用してみてください。

USB デバイスのアタッチ/デアタッチ イベントを取得する方法の例はこちらです。

于 2013-10-15T06:42:23.480 に答える