一篇dbus移植的点点滴滴

78 篇文章 0 订阅
15 篇文章 0 订阅
这篇博客讲述了作者在进行DBus移植过程中遇到的挑战和经验教训。强调了解决问题的关键在于理解英文文档和论坛,提倡共享实际遇到的技术难题,以促进开源社区的发展。
摘要由CSDN通过智能技术生成
3个月了,终于把这个问题搞定了,前后学习加动手可能花了1个半月在这个系统搭建上面。我怀着复杂的心情写这篇文章,对很多懂这方面的专家我无话可说,对自己我更不知道该爱还是该恨。 
  
6月中的时候我来到新的公司,接到的第一个任务就是交叉编译dbus,并在目标机上跑起来。我工作快3年了,一直搞的嵌入式开发,说实话在FSK很失败,以前开发环境都是搭好了,我们只是做一些应用程序的开发而已,我自认为最有成就的就是写了LCD和LED驱动。新公司真的有很多牛人,软硬件都懂,自己开始有点自卑。对第一个任务我甚至不知道怎么搭建嵌入式交叉编译环境,指定一个交叉编译工具链都花了我半天的时间,更不要说交叉编译dbus这么复杂的东西了,依赖的库太多,遇到的编译错误也让我摸不着头脑。幸好,这些东西做过就会了,在师傅的带领下我花了10天的时间把dbus交叉编译搞定。编译过程如下: 
http://blog.chinaunix.net/u3/99283/showart.php?id=1971652 其中有一个隐患在里面。 
  
好了,该运行测试程序,运行的时候发现一些错误一个个解决掉,发现通信有问题。(其实就是交叉编译里面的一个隐患造成的) 
http://blog.chinaunix.net/u3/99283/showart.php?id=1976658 
 
要生成一个DBus service实例,需要遵循以下步骤: 1. 定义DBus service接口:首先需要定义你的DBus service接口,包括DBus接口名称、DBus对象路径、DBus接口方法和DBus接口信号。 2. 定义DBus service实现:接下来需要定义DBus服务的实现,实现DBus服务接口中的所有方法和信号。 3. 注册DBus service实现:将DBus服务实现注册到DBus系统总线上,以便客户端可以通过DBus总线调用DBus服务。 4. 运行DBus service实例:最后,启动DBus服务实例并等待客户端的DBus调用。 下面是一个简单的DBus service实例生成的代码示例: ```python import dbus import dbus.service # 定义DBus service接口 class MyDBUSService(dbus.service.Object): def __init__(self): bus_name = dbus.service.BusName('com.example.MyService', bus=dbus.SessionBus()) dbus.service.Object.__init__(self, bus_name, '/com/example/MyService') # 定义DBus service方法 @dbus.service.method('com.example.MyService', in_signature='s', out_signature='s') def say_hello(self, name): return 'Hello, %s!' % name # 注册DBus service实现 myservice = MyDBUSService() # 运行DBus service实例 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) loop = gobject.MainLoop() loop.run() ``` 在上面的示例中,我们首先定义了一个名为MyDBUSService的DBus服务接口,并实现了一个名为say_hello的DBus方法。然后,我们注册了MyDBUSService服务实现,并在最后运行DBus服务实例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值