QT and dbus - no such signal

Christian Rüb christian.rueb at gmx.net
Fri Jan 8 19:12:02 CET 2010


Am Freitag, 8. Januar 2010 schrieb Michael Zanetti:
> On Friday 08 January 2010 12:52:14 Christian Rüb wrote:
> > Hi,
> > 
> > I am about to write my own little GPS application in Qt and try to connect
> >  to FixStatusChanged signal from Gypsy but have the following problem
> > 
> > Code snippet:
> > ...
> > deviceInterface = new QDBusInterface("org.freedesktop.Gypsy",
> >  "/org/freedesktop/Gypsy/default", "org.freedesktop.Gypsy.Device",
> >  QDBusConnection::systemBus(),this); ...
> > connect(deviceInterface, SIGNAL(FixStatusChanged(int)), this,
> >  SIGNAL(fixChanged(int)));
> > 
> 
> 
> try this:
> ...
> deviceInterface = new QDBusInterface("org.freedesktop.Gypsy", "/default", 
> "org.freedesktop.Gypsy.Device", QDBusConnection::systemBus(),this);
> 
> Qt doesn't need the full path for the node again. 
> 
> 
> Here you find some very useful QtDBus examples:
> http://techbase.kde.org/Development/Tutorials#D-Bus
> 
> Not sure if you know about "qdbusviewer". It comes with your Qt4 installation 
> and helps you a lot debugging and understanding DBus.
> 
> Hope this helps.
> Michael

Thanks Michael,

tried your suggestion:
 	deviceInterface = new QDBusInterface("org.freedesktop.Gypsy", "/default", "org.freedesktop.Gypsy.Device", QDBusConnection::systemBus(),this);
	connect(deviceInterface, SIGNAL(FixStatusChanged(int)), this, SIGNAL(fixChanged(int)));
	qDebug() << "testcall" << deviceInterface->call("GetFixStatus");

the result was the same :(
Object::connect: No such signal org::freedesktop::Gypsy::Device::FixStatusChanged(int)

I already came across the page you mentioned - that's where I got connect to a dbus signal from...

Yes, I know qdbusviewer, I tried it on my Freerunner but it does not dispaly anything but the service names :(
same for qdbus

Calling a method on the above interface also gives an error:
testcall QDBusMessage(type=Error, service="", error name="org.freedesktop.DBus.Error.UnknownMethod", error message="Method "GetFixStatus" with signature "" on interface "org.freedesktop.Gypsy.Device" doesn't exist
", signature="", contents=([]) )

trying with
	deviceInterface = new QDBusInterface("org.freedesktop.Gypsy", "/org/freedesktop/Gypsy", "org.freedesktop.Gypsy.Device", QDBusConnection::systemBus(),this);
	connect(deviceInterface, SIGNAL(FixStatusChanged(int)), this, SIGNAL(fixChanged(int)));
	qDebug() << "testcall" << deviceInterface->call("GetFixStatus");

I get:
Object::connect: No such signal org::freedesktop::Gypsy::Device::FixStatusChanged(int)
testcall QDBusMessage(type=MethodReturn, service=":1.15", signature="i", contents=(1) )

So at least the function call works here - but not the signal.

Any ideas?



More information about the community mailing list