Dbus信号传递之结构体篇

废话:

工作上用到了,开始也不知道怎么弄,网上也没有现成的例子,只好自己搞了,不废话。

如果你的Demo已经能够进行正常的方法调用和信号发射,那么你可以继续,否则,你还是先调通了那些再说。

 

这里只简单罗列需要改动的地方,不提供详细的做法

需要改动的地方

这里假设我的结构体是:

typedef struct PassStruct
{
	int ID;
	char p[36];
}PassStruct;


 

1.在编写的GObject文件的g_signal_new函数里修改(也可能你已经封装在别的地方了)

	signalId = g_signal_new (
	"signalName",   
	G_OBJECT_CLASS_TYPE(klass),
	G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
	0,
	NULL,NULL,
	g_cclosure_marshal_VOID__STRING,	G_TYPE_NONE,	1,  
	//G_TYPE_STRING);   //参数类型
	DBUS_TYPE_G_UCHAR_ARRAY);//使用这个类型

2.在发射信号的函数里,这样书写

	PassStruct pa;
	memset(&pa,0,sizeof(pa));
	pa.ID=1000;
	strcpy(pa.p,"ccccc\n");
	GArray *pass= NULL;
	pass = g_array_sized_new(FALSE,TRUE,sizeof(int),sizeof(pa));
	//memcpy(kotei_junz->data, &pa, sizeof(pa));
	g_array_append_vals(pass,&pa,sizeof(pa));
	g_signal_emit( obj,signalId,0,pass );
	g_array_free(pass,TRUE);
 
3.修改客户端
	dbus_g_proxy_add_signal (remoteValue,"signalName",DBUS_TYPE_G_UCHAR_ARRAY,G_TYPE_INVALID);


就这些,视具体代码而定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值