dbus からプロパティ値を取得しようとしています。エラーは発生していませんが、正しい値も取得していません。つまり、返される値は、qdbus によって返される値と同じではありません。これが私のコードです:
const QString service = "org.freedesktop.UPower";
const QString path = "/org/freedesktop/UPower/devices/line_power_ADP1";
const QString interface = "org.freedesktop.UPower.Device";
const QString property = "Online";
QDBusConnection bus = QDBusConnection::systemBus();
QList<QVariant> args;
args.append(QVariant(interface));
args.append(QVariant(property));
QDBusMessage mesg = QDBusMessage::createMethodCall(service, path, "org.freedesktop.DBus.Properties", "Get");
mesg.setArguments(args);
QDBusMessage ret = bus.call(mesg);
if (ret.type() == QDBusMessage::ErrorMessage)
{
qDebug() << "Error getting property value. " << ret.errorName() << ": " << ret.errorMessage();
}
bool value = ret.arguments()[0].value<bool>(); //incorrect value!
私が知る限り、これはシステム バス上のサービス「org.freedesktop.UPower」のパス「/org/freedesktop/UPower/devices/line_power_ADP1」に対応する「オンライン」プロパティを取得するはずです。しかし実際には、得られるのはがらくただけです。エラーはなく、がらくただけです。