Portál AbcLinuxu, 7. května 2025 19:46

Dotaz: DBus v Qt

17.9.2009 19:11 Dadam
DBus v Qt
Přečteno: 291×
Odpovědět | Admin

Zdravím, začal jsem programovat s technologií D-Bus v Qt a narazil jsem na problém. Postupoval jsem podle http://doc.trolltech.com/qq/qq20-dbus.html
Kód mojeho zvířátka vypadá takto:


class Animal : public QObject
{
	Q_OBJECT
    
	public:
	Animal() { mood = 0; }
    
	public slots:
	void feed(void) {
		++mood; 
		emit moodChanged(mood);
		return;
	}
	void shoutAt(void) {
		--mood;
		emit moodChanged(mood);
		return;
	}
    
	int currentMood() const { return mood; }

	signals:
	void moodChanged(int mood);
    
	private:
	int mood;
};

Ve funkci main pak:

 

QDBusConnection bus = QDBusConnection::sessionBus();
bus.interface()->registerService("Farm");

Animal cat;

bus.registerObject("/animals/Dax", &cat, QDBusConnection::ExportAllSlots);

Nicméně když pak zkouším kočku nakrmit:


QDBusConnection::sessionBus().call(QDBusMessage::createMethodCall("Farm", "/animals/Dax", "", "feed"));

Dostávám chybu:

process 18995: arguments to dbus_message_new_method_call() were incorrect, assertion "destination == NULL || _dbus_check_is_valid_bus_name (destination)" failed in file dbus-message.c line 1073.
This is normally a bug in some application using the D-Bus library.
QDBusConnection: error: could not send message to service "Farm" path "/animals/Dax" interface "" member "feed"

Co dělám špatně?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

limit_false avatar 23.9.2009 22:58 limit_false | skóre: 23 | blog: limit_false
Rozbalit Rozbalit vše Zkus se pohrat s FatRatem
Odpovědět | | Sbalit | Link | Blokovat | Admin

Sorry, primo neporadim, ale kdyz trvas na DBusu, zkus se pohrat s FatRat-em, jeho DBus kod je celkem kratky.

Jinak bych spis doporucoval jiny middleware, treba ZeroC Ice, je to multiplatformni a IMHO jasnejsi a mocnejsi nez DBus.

When people want prime order group, give them prime order group.
30.9.2009 21:25 Dadam | skóre: 12 | blog: dadamovo
Rozbalit Rozbalit vše Re: Zkus se pohrat s FatRatem

Děkuju za odpověď. DBus jsem volil, protože s ním pracuje aplikace, kterou potřebuju ovládat.

A chybka byla v tom, že název služby musí vždycky obsahovat tečku (pomohl až mailing list D-.Busu)

A i B mají svoje výhody a nevýhody. Vyberte si to, co vám vyhovuje víc, a necpěte A tam, kam patří B.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.