Как отправить беззнаковые значения в dBus из Python - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь использовать модуль DBus PyQt5 для взаимодействия с KDE PowerManagerAgent.При вызове метода AddInhibo мне нужно отправить первый параметр в виде uint32 (Unsigned int), но код отправляет значение в виде целого числа.

Код написан с использованием Python 3

self.dBus = QtDBus.QDBusConnection.sessionBus()
msg = QtDBus.QDBusMessage.createMethodCall(self.dBusService, self.dBusPath,self.dBusInterface,'AddInhibition')
msg << 1 << who << reason
reply = QtDBus.QDBusReply(self.dBus.call(msg))

Глядя на выходные данные dbus-monitor, я могу сказать, что код действительно связывается с powermonitor, но не может найти правильный метод AddInhibox из-запервый параметр имеет тип int32

Вывод из dbus-monitor при попытке вызвать AddInhibition

Call

время вызова метода = 1549706946.073218 sender =: 1.172 -> destination =org.kde.Solid.PowerManagement.PolicyAgent serial = 5 path = / org / kde / Solid / PowerManagement / PolicyAgent;Интерфейс = org.kde.Solid.PowerManagement.PolicyAgent;member = AddIngression int32 1 string "Эта" строка "не удалась"

Ответ

время ошибки = 1549706946.073536 отправитель =: 1.29 -> destination =: 1.172 error_name = org.freedesktop.DBus.Error.UnknownMethod reply_serial = 5 string "Нет такого метода 'AddInhibi' в интерфейсе 'org.kde.Solid.PowerManagement.PolicyAgent' на пути к объекту '/ org / kde / Solid / PowerManagement / PolicyAgent' (подпись 'iss)') "

Вывод из dbus-монитора при использовании приложения QDBusViewer

Вызов

время вызова метода = 1549723045.320128 sender =: 1.82 -> destination = org.kde.Solid.Последовательность PowerManagement.PolicyAgent = 177 путь = / org / kde / Solid / PowerManagement / PolicyAgent;Интерфейс = org.kde.Solid.PowerManagement.PolicyAgent;member = AddInhibition uint32 1 строка "Эта" строка "Работает"

Ответ

время возврата метода = 1549723045.320888 отправитель =: 1,29 -> назначение =: 1,82 серийный = 1370reply_serial = 177 uint32 30

Поскольку Python не является строго типизированным, как мне указать, что параметр должен быть введен как беззнаковое целое?

...