3

私はまだ Qt4/Dbus を使用するのが初めてで、Dbus メッセージを送受信するために Qt API を使用してアクセス ポイントのリストを取得しようとしています。次のエラーが発生しました。

org.freedesktop.DBus.Error.UnknownMethod
Method "GetAccessPoint" with signature "" on interface "org.freedesktop.NetworkManager.Device.Wireless" doesn't exist

コードは次のとおりです。

QStringList *netList = new QStringList();
    QDBusConnection sysbus = QDBusConnection::systemBus();
    QDBusInterface callNM("org.freedesktop.NetworkManager","/org/freedesktop/NetworkManager","org.freedesktop.NetworkManager.Device.Wireless",sysbus);
    if(callNM.isValid())
    {
        QDBusMessage query= callNM.call("GetAccessPoints");
        if(query.type() == QDBusMessage::ReplyMessage)
        {

            QDBusArgument arg = query.arguments().at(0).value<QDBusArgument>();
            arg.beginArray();
            while(!arg.atEnd())
            {                
                QString element = qdbus_cast<QString>(arg);
                netList->append(element);
            }
            arg.endArray();
        }else{
            std::cout<< query.errorName().toStdString() << std::endl;
            std::cout<< query.errorMessage().toStdString() << std::endl;
        }
        int x= netList->size();
        for(int y=0; y< x ;y++)
        {
            widget.avail_nets->addItem(netList->at(y)); // just print it to my gui from the stringlist array
        }

    }else{
            std::cout<<"fail" << std::endl;
    }

何が問題なのですか?私の命名は正しかったので、ここの正確な仕様に従っています

4

4 に答える 4

1

メソッド名はGetAccessPointsです。

エラーは次のとおりです。

org.freedesktop.DBus.Error.UnknownMethodメソッド"GetAccessPoint"の署名""がインターフェイス"org.freedesktop.NetworkManager.Device.Wireless"に存在しません

「GetAccessPoint」を強調表示します。したがって、コード内のメソッド名のスペルを間違えた可能性がありますが、ここに貼り付けたコードは正しいメソッド名を使用していますが、それを修正してプロジェクトを再構築またはクリーンアップするのを忘れた可能性がありますか?

于 2011-01-20T15:07:45.673 に答える
1

I had the same issue, but then I noticed that it only happened when I called the GetAccessPoints method on a wired device. Make sure the device is a wireless device (i.e. DeviceType equals NM_DEVICE_TYPE_WIFI), and everything should work fine.

于 2011-09-27T14:36:59.467 に答える
0

私はこれを修正し、私のために働きます

QDBusInterface callNM("org.freedesktop.NetworkManager","/org/freedesktop/NetworkManager/Devices/0","org.freedesktop.NetworkManager.Device.Wireless",sysbus);

結果は

"/org/freedesktop/NetworkManager/AccessPoint/2"
"/org/freedesktop/NetworkManager/AccessPoint/1"

/org/freedesktop/NetworkManager 特定のデバイス(ワイヤレスデバイス)の正しいパスではないと思います。

于 2015-04-03T04:35:01.450 に答える