NetworkManager и Qt Проблема - PullRequest
       40

NetworkManager и Qt Проблема

3 голосов
/ 21 декабря 2010

Я все еще новичок в использовании Qt4 / Dbus, и я пытаюсь получить список точек доступа с Qt API для отправки / получения сообщений Dbus.Я получил следующую ошибку:

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 ]

1 голос
/ 27 сентября 2011

У меня была такая же проблема, но потом я заметил, что это произошло только когда я вызвал метод GetAccessPoints на проводном устройстве.Убедитесь, что устройство является беспроводным устройством (т. Е. DeviceType равно NM_DEVICE_TYPE_WIFI), и все должно работать нормально.

1 голос
/ 20 января 2011

Имя метода: GetAccessPoints .

Пока ваша ошибка:

org.freedesktop.DBus.Error.UnknownMethod Метод "GetAccessPoint" с подписью "" на интерфейсе "Org.freedesktop.NetworkManager.Device.Wireless" не существует

Выделите «GetAccessPoint» . Таким образом, вы могли ошибочно указать имя метода в коде, хотя код, который вы вставили здесь, использует правильное имя метода, может, вы исправили его и забыли перестроить или очистить проект?

0 голосов
/ 14 марта 2017
QDBusInterface dbus_iface("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager/Devices/0", "org.freedesktop.NetworkManager.Device.Wireless", bus);

QDBusMessage query = dbus_iface.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);
        showAccessPointProperties(element);
    }
    arg.endArray();
} else {
    qDebug() << "got dbus error: " << query.errorName();
    qDebug() << "check the parameters like service, path, interface and method name !!!";
}

Надеюсь, это поможет.

0 голосов
/ 03 апреля 2015

Я изменяю это и работаю для меня

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 не правильный путь для конкретного устройства (беспроводных устройств).

...