QTDBUS, не получая сигналы от DBUS-SEND при использовании интерфейса QT DBUS XMLC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 QTDBUS, не получая сигналы от DBUS-SEND при использовании интерфейса QT DBUS XML

Сообщение Anonymous »

Системная информация: < /p>


[*]qt5.10
Ubuntu 16.04 < /li>
< /ul>

с qtdbus и используя следующий xml, I Gened the xyz_inter.hpp.hpp.hpp.hpp.hpp.

Код: Выделить всё












< /code>

После создания интерфейса и подключения к сигналу интерфейса; < /p>

com::blah::Xyz interface = new com::blah::Xyz("com.blah.XYZ", "/com/blah/XYZ", QDBusConnection::systemBus(), this);
connect(interface , &com::blah::Xyz::Event, this, &SomeClass::HandleEvents)
Я не могу запустить точку останова внутри функции someclass :: handleevents при отправке сигнала из xyz через командную строку с dbus-send ;

Код: Выделить всё

dbus-send --system --type=signal /com/blah/Xyz com.blah.XYZ.Event string:"hello"
Используя dbus-monitor-system , я вижу, что сигнал правильно испускается. < /p>

Затем, в модульных тестах, я создал тестовый сигнал как; < /p>

QDBusMessage xyz_signal = QDBusMessage::createSignal(
"/com/blah/XYZ", "com.blah.XYZ", "Event");
xyz_signal

, который также не смог запустить точку останова. (Ни одно изменение в коде QT DBUS) < /p>

Вот код Python; < /p>

import gobject

import dbus
import dbus.service
import dbus.mainloop.glib

class XyzService(dbus.service.Object):

@dbus.service.method("com.blah.Xyz",
in_signature='s', out_signature='s')
def AuthenticateUser(self, auth_req_json):
print (str("hello_message"))
return '''
{
"AuthenticationResponce" : "SUCCESS"
}
'''

@dbus.service.method("com.blah.Xyz",
in_signature='s')
def EmitEvent(self, str):
self.Event(str)

@dbus.service.signal('com.blah.Xyz', signature='s')
def Event(self, event_json):
# The signal is emitted when this method exits
# You can have code here if you wish
pass

if __name__ == '__main__':
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

system_bus = dbus.SystemBus()
name = dbus.service.BusName("com.blah.Xyz", system_bus)
object = XyzService(system_bus, '/com/blah/Xyz')

mainloop = gobject.MainLoop()
print "Running example service."
mainloop.run()
< /code>

update < /strong> < /p>

Я только что обнаружил, что если я создаю интерфейс с пустыми строками < /strong> для пути и имени, то я смогу получить сигналы, отправленные командной строкой dbus-send < /strong> < /p>

com::blah::Xyz interface = new com::blah::Xyz("", "", QDBusConnection::systemBus(), this);
< /code>

Также проходит модульный тест, выше. Это очень запутанно < /p>

Обновление 2 < /strong> < /p>

Я смог воспроизвести проблему с помощью примера DBUS RemoteControlledCar, представленного здесь; https://code.qt.io/cgit/qt/qtbase.git/t ... car?h=5.10

in controller.cpp, в конструкторе, я добавил следующее;

Controller::Controller(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
car = new org::example::Examples::CarInterface("org.example.CarExample", "/Car",
QDBusConnection::sessionBus(), this);

// added signal listener
connect(car, &org::example::Examples::CarInterface::crashed,this,[](){qDebug("hello signal");});
startTimer(1000);
}
< /code>

При запуска сигнала с помощью dbus-send сигнал сообщения Hello не печатается. Но когда я изменяю путь службы и имя на пустую строку, я успешно получаю сигнал; < /p>

car = new org::example::Examples::CarInterface("", "",
QDBusConnection::sessionBus(), this);
< /code>

из командной строки < /p>

dbus-send --session --type=signal /Car org.example.Examples.CarInterface.crashed
< /code>

Ура,
simon < /p>

Подробнее здесь: https://stackoverflow.com/questions/570 ... -interface
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • У меня есть сигналы в службе, я хочу выставить эти сигналы компонентам (без использования Getter)
    Anonymous » » в форуме Html
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Pyside6.qtdbus Qdbusargument не может быть преобразован в Python Dict
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Pyside6.qtdbus Qdbusargument не может быть преобразован в Python Dict
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Java run не сбои в Netbeans - пробовал все, все еще получая ошибку run.xml
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Java run не сбои в Netbeans - пробовал все, все еще получая ошибку run.xml
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»