Я планирую разработать приложение, которое будет использовать DBus и connman, диспетчер беспроводной связи для встроенных устройств. Из моего понимания DBus раскрывает методы, используемые программой, и позволяет разработчикам также использовать эти методы в своей собственной программе.Извлеките аргументы и путь объекта D-Bus динамически из метода GetService net.connman.Manager
Я знаю, что Qt имеет модуль QtDbus, и если мое понимание верное, метод GetServices в интерфейсе net.connman.Manager показывает доступные беспроводные сети. Проверяя вывод метода GetServices из программы qdbusviewer, я вижу, что каждая беспроводная сеть имеет свой собственный уникальный путь объекта, примером может быть /net/connman/service/wifi_00120ec15ba0_4c616964614d616774616c6173_managed_psk.
Чтобы использовать метод Connect и Disconnect под интерфейсом net.connman.Services, мне нужен путь к объекту, чтобы я мог создать новый интерфейс, который позволит мне вызвать Connect/Disconnect. Я сейчас пытаюсь методы, описанные здесь How do I extract the returned data from QDBusMessage in a Qt DBus call?, но я только получаю пустой, когда я пытаюсь вернуть путь объекта:
Вот мой код, чтобы получить путь к объекту:
QDBusConnection bus = QDBusConnection::systemBus();
QDBusInterface *interface = new QDBusInterface("net.connman",
"/",
"net.connman.Manager",
bus,
this);
QDBusMessage test = interface->call("GetServices");
QList<QVariant> outArgs = test.arguments();
QVariant first = outArgs.at(0);
qDebug() << first;
QDBusVariant dbvFirst = first.value<QDBusVariant>();
QVariant vFirst = dbvFirst.variant();
qDebug() << vFirst;
QDBusArgument dbusArgs = vFirst.value<QDBusArgument>();
qDebug() << "QDBusArgument current type is" << dbusArgs.currentType();
QDBusObjectPath path;
dbusArgs.beginArray();
while (!dbusArgs.atEnd())
{
dbusArgs >> path;
}
dbusArgs.endArray();
qDebug() << path.path();
Как извлечь аргументы и путь объекта, возвращаемые методом GetService? Кто-нибудь сделал это правильно? Я новичок в Qt и программировании, поэтому любая помощь будет оценена.
Благодаря