首页 > 其他分享 >GDBUS使用框架

GDBUS使用框架

时间:2023-04-04 11:13:34浏览次数:44  
标签:main GDBUS name 框架 bus handler 使用 NULL loop

(141条消息) GDBUS使用框架_gdbus教程_玩意儿他爸的博客-CSDN博客

服务端生成文件:gdbus-codegen --generate-c-code=libtunerservice interface-S-A.xml

客户端生成文件:gdbus-codegen --generate-c-code=libservice-c --c-generate-object-manager interface-S-A.xml

CLIENT:

**************添加客户端的生成的文件****************

(1)获取总线代理者:

com_company_tunerservice_dbus_s_proxy_new_for_bus_sync

(2)信号与回调函数的绑定:

g_signal_connect(poxy, "seek_status", G_CALLBACK(on_sig_seek_status), NULL);

***seek_status======================>根据生成的.c文件

(3)回调函数的实现

***on_sig_seek_status================>根据生成的.c文件

(4)事件的轮回上报

loop = g_main_loop_new(NULL, FALSE);

g_main_loop_run(loop);

g_object_unref(poxy);

SERVER:

**************添加服务端的生成的文件****************

(1)创建一个总线

guint ownName = g_bus_own_name (G_BUS_TYPE_SYSTEM ,
"com.company.tunerservice.dbus.s",
G_BUS_NAME_OWNER_FLAGS_NONE,
bus_acquired_handler,
name_acquired_handler,
name_lost_handler,
NULL,
NULL);

***bus_acquired_handler、name_acquired_handler、name_lost_handler实现这3个回调函数

***bus_acquired_handler中需要

***g_Skeleton = com_company_tunerservice_dbus_s_skeleton_new();***建立一个骨架

***g_signal_connect(g_Skeleton, "handle-set-tuner-station", G_CALLBACK(handle_set_tuner_station), NULL);

***handle-set-tuner-station====================>根据服务端生成的.c文件

***handle_set_tuner_station===================>参数根据服务端生成的.c文件,实现这个回调函数

g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(g_Skeleton),========>骨架输出
connection,
"/",
&pError);

(2)运行总线服务代理

loop = g_main_loop_new(NULL, FALSE);
g_print("g_main_loop_new\n");
if(loop!=NULL)
{
g_main_loop_run(loop);
g_print("g_main_loop_run\n");
}


g_bus_unown_name(ownName);
g_print("g_bus_unown_name\n");
————————————————
版权声明:本文为CSDN博主「玩意儿他爸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16810885/article/details/93976267

标签:main,GDBUS,name,框架,bus,handler,使用,NULL,loop
From: https://www.cnblogs.com/hshy/p/17285716.html

相关文章

  • Java使用IntelliJ IDEA配置Maven并管理一个webapp项目
    1、下载并安装Mavenapache官网地址:http://maven.apache.org/download.cgips:maven的使用是基于JDK的,所以电脑必须有JDK解压到文件夹,并配置环境变量。1、MAVEN_HOME,地址为maven的地址2、path,地址为%MAVEN_HOME%\binwin+r输入cmd进终端,输入mvn-v测试maven是否安装成功修改maven......
  • Java使用IntelliJ IDEA创建JavaWeb应用程序并配置Tomcat
    1、创建JavaWeb程序创建一个JavaEE项目,选择Web应用程序。创建好后结果如下2、添加Tomcat服务器首先在官网下载Tomcat对应的操作系统版本。https://tomcat.apache.org/右上角添加Tomcat服务器在服务器里选择本地的Tomcat地址,其他的默认。在部署里点击加号,选择Artifact工件,增加web......
  • JS中 filter()方法的使用
    一、作用filter用于对数组进行过滤。它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。注意:filter()不会对空数组进行检测、不会改变原始数组二、语法Array.filter(function(currentValue,indedx,arr),thisValue)  其中,函数function为必须,数组......
  • 使用 ifdown 关闭所有网口,再使用 ifup 重新启用网口。
    实践1、Linuxping:unknownhost问题排查 1)检查域名服务器#cat/etc/resolv.conf-------------------------------------------------------------------nameserver8.8.8.82)重启网络使用ifdown关闭所有网口,再使用ifup重新启用网口。通常推荐的做法是将这两个命......
  • git使用
    安装完git后一,配置git在gitbash里敲命令::1,gitconfig--globaluser.name"用户名";2,gitconfig--globaluser.email"邮箱"; 二,SSH配置:打开gitbash1,执行生成公钥和私钥的命令:ssh-keygen-trsa并按回车3下(为什么按三下,是因为有提示你是否需要设置密码,如果设置......
  • Chisel3 使用 DPI-C,发现在 Chisel 环境下 printf 没问题,但是 set_pc 死活传不到 cpp
    大概率是因为你使用了SignExt之类的封装这类封装只会把”值“传给DPI-C,而不会把线连给DPIC,即,传过去的是调用set_pc时的值,而不是引用这样会造成CPP获取不了相应线路的指针 如下图     这些也是错的......
  • 混沌工程之ChaosMesh使用之一模拟CPU使用率
    今天来玩一下混沌工程的开源工具之一的ChaosMesh。ChaosMesh的目标是要做一个通用的混沌测试工具。ChaosMesh是要和k8s结合使用的,其中用了云原生的能力。 ChaosMesh的基本工作流原理图:从原理图上可以看出大概的工作流程:用户用yaml文件或k8s客户端创建更新Chaos对象。Chaos-mesh......
  • Landscape UI on Portait LCM (竖屏横用/直屏横用)使用
    1.直屏比橫屏便宜許多 2.Qwertykeypadphone(全键盘手机),客戶普遍用”直屏橫放“的方式來实现,但得自己承受performance和tearing(斜切屏)問題.因为使用LCM做90度Rotate,则必然出现斜切屏。3.MTK提供tearing-free(斜切屏解决方法)以及goodperformance。无需LCM......
  • ODOO计量单位的使用
    1计量单位功能模块计量单位模块主要功能是按不同计量单位来处理产品,可在库存,销售等模块中使用,用来处理买卖之间的不同计量单位换算。比如:从国外供应商买的牛肉单位是磅,但牛肉销售给国内用户则以公斤往外卖。1.1新建计量单位类别form视图列表字段:a.计量单位类别,必填字段,例如:......
  • IDEA的安装和使用
    8.IDEA8.1IDEA概述​IDEA全称IntelliJIDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。集成环境:​把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。8.2IDEA的下载和安装8.2.1下载​可以到官方网站自行下载,网址为:h......