DBus と、組み込みデバイス用のワイヤレス マネージャーである connman を利用するアプリケーションを開発する予定です。私の理解では、DBus はプログラムで使用されるメソッドを公開し、開発者がこれらのメソッドを独自のプログラムで使用できるようにします。
Qt に QtDbus モジュールがあることは知っています。私の理解が正しければ、net.connman.Manager インターフェイスの下の GetServices メソッドは、利用可能なワイヤレス ネットワークを示します。qdbusviewer プログラムからの GetServices メソッドの出力を調べると、各ワイヤレス ネットワークに固有のオブジェクト パスがあることがわかります。
net.connman.Services インターフェイスで Connect および Disconnect メソッドを使用するには、Connect/Disconnect を呼び出すことができる新しいインターフェイスを作成できるように、オブジェクト パスが必要です。Qt DBus呼び出しで QDBusMessage から返されたデータを抽出するにはどうすればよいですか? 、しかし、オブジェクトパスを返そうとすると空白になるだけです:
オブジェクトパスを取得するための私のコードは次のとおりです。
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とプログラミングが初めてなので、助けていただければ幸いです。
ありがとう