Russian Qt Forum

Программирование => С/C++ => Тема начата: Steven_Orko от Октябрь 21, 2010, 19:49



Название: Си и dbus
Отправлено: Steven_Orko от Октябрь 21, 2010, 19:49
Кто-нибудь использовал в своих проектах DBus???
У меня непонятная проблемма с двумя функциями.
Вот этот код всегда пишет в консоль "Message is corrupted".
Что я не так делаю?

Код
C
int main (int argc, char *argv[])
{
DBusError dbusError;
char* marshalled_data_p = 0;
int len = 0;
DBusMessage* msg = dbus_message_new_signal("/org/freedesktop/DBus", "org.freedesktop.DBus", "method");
dbus_error_init(&dbusError);
dbus_message_marshal(msg, &marshalled_data_p, &len);
dbus_message_demarshal(marshalled_data_p, len, &dbusError);
if (dbus_error_is_set(&dbusError)) printf("%s\n", dbusError.message);
dbus_error_free(&dbusError);
return 0;
}
 


Название: Re: Си и dbus
Отправлено: Steven_Orko от Октябрь 21, 2010, 22:45
Пишу для тех, кто столкнется с такой проблемой тоже.
В общем, я совершенно случайно решил ткнуть пальцем в небо. И я угадал. Оказывается необходимо сообщению установить серийник. Вот такой код будет работать.
Код
C
int main (int argc, char *argv[])
{
DBusError dbusError;
char* marshalled_data_p = 0;
int len = 0;
DBusMessage* msg = dbus_message_new_signal("/org/freedesktop/DBus", "org.freedesktop.DBus", "method");
dbus_message_set_serial(mgs, 0x41);
dbus_error_init(&dbusError);
dbus_message_marshal(msg, &marshalled_data_p, &len);
dbus_message_demarshal(marshalled_data_p, len, &dbusError);
if (dbus_error_is_set(&dbusError)) printf("Error - %s\n", dbusError.message);
else printf("Success");
dbus_error_free(&dbusError);
return 0;
}
Кстати, пальцем помогла ткнуть жена. ))))))