Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3109322
  • 博文数量: 396
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4209
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-04 13:04
文章分类

全部博文(396)

文章存档

2022年(1)

2021年(2)

2020年(8)

2019年(24)

2018年(135)

2017年(158)

2016年(68)

我的朋友

分类: 嵌入式

2018-05-09 13:31:27

废话:

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

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

 

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

需要改动的地方

这里假设我的结构体是:

[plain] view plain copy
  1. typedef struct PassStruct  
  2. {  
  3.     int ID;  
  4.     char p[36];  
  5. }PassStruct;  


 

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

[plain] view plain copy
  1. signalId = g_signal_new (  
  2. "signalName",     
  3. G_OBJECT_CLASS_TYPE(klass),  
  4. G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,  
  5. 0,  
  6. NULL,NULL,  
  7. g_cclosure_marshal_VOID__STRING,    G_TYPE_NONE,    1,    
  8. //G_TYPE_STRING);   //参数类型  
  9. DBUS_TYPE_G_UCHAR_ARRAY);//使用这个类型  

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

[plain] view plain copy
  1. PassStruct pa;  
  2. memset(&pa,0,sizeof(pa));  
  3. pa.ID=1000;  
  4. strcpy(pa.p,"ccccc\n");  
  5. GArray *pass= NULL;  
  6. pass = g_array_sized_new(FALSE,TRUE,sizeof(int),sizeof(pa));  
  7. //memcpy(kotei_junz->data, &pa, sizeof(pa));  
  8. g_array_append_vals(pass,&pa,sizeof(pa));  
[plain] view plain copy
  1. g_signal_emit( obj,signalId,0,pass );  
  2. g_array_free(pass,TRUE);  
[plain] view plain copy
  1.    
[plain] view plain copy
  1. 3.修改客户端  
[plain] view plain copy
  1. dbus_g_proxy_add_signal (remoteValue,"signalName",DBUS_TYPE_G_UCHAR_ARRAY,G_TYPE_INVALID);  
阅读(2839) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~