“人造太阳”计划

一篇dbus移植的点点滴滴

你说的曾经没有我的故事 提交于 2019-12-06 07:51:56
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 接下来的1个月被师傅叫去接别的任务,说这个问题可以先缓一下以后解决

D-BUS简单例子

本秂侑毒 提交于 2019-12-06 07:51:29
/* * Example low-level D-Bus code. * Written by Matthew Johnson <dbus@matthew.ath.cx> * * This code has been released into the Public Domain. * You may do whatever you like with it. */ #include <dbus/dbus.h> #include <stdbool.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> /** * Connect to the DBUS bus and send a broadcast signal */ void sendsignal(char* sigvalue) { DBusMessage* msg; DBusMessageIter args; DBusConnection* conn; DBusError err; int ret; dbus_uint32_t serial = 0; printf("Sending signal with value %s\n", sigvalue); // initialise the error value dbus_error_init(&err);

dbus通信与接口介绍

大城市里の小女人 提交于 2019-12-06 07:45:29
DBUS是一种高级的进程间通信机制。DBUS支持进程间一对一和多对多的对等通信,在多对多的通讯时,需要后台进程的角色去分转消息,当一个进程发消息给另外一个进程时,先发消息到后台进程,再通过后台进程将信息转发到目的进程。DBUS后台进程充当着一个路由器的角色。 DBUS中主要概念为总线,连接到总线的进程可通过总线接收或传递消息,总线收到消息时,根据不同的消息类型进行不同的处理。DBUS中消息分为四类: 1. Methodcall消息:将触发一个函数调用 ; 2. Methodreturn消息:触发函数调用返回的结果; 3. Error消息:触发的函数调用返回一个异常 ; 4. Signal消息:通知,可以看作为事件消息。 1.2 DBUS应用场景 根据DBUS消息类型可知,DBUS提供一种高效的进程间通信机制,主要用于进程间函数调用以及进程间信号广播。 1 . 函数调用 DBUS可以实现进程间函数调用,进程A发送函数调用的请求(Methodcall消息),经过总线转发至进程B。进程B将应答函数返回值(Method return消息)或者错误消息(Error消息)。 2 . 消息广播 进程间消息广播(Signal消息)不需要响应,接收方需要向总线注册感兴趣的消息类型,当总线接收到“Signal消息”类型的消息时,会将消息转发至希望接收的进程。 1.3 DBUS通信特点

DBus 入门与应用 -- DBus 的 C 编程接口

十年热恋 提交于 2019-12-06 07:32:48
原文地址:http://www.cnblogs.com/liyiwen/archive/2012/12/02/2798876.html 转载请注明出处。 作者: 唐风 最近在学 Dbus,不过总是不得其门而入。 大部分资料都讲了很多东西却最终没有让我搞清楚怎么用 DBus,不就是一个 IPC 通信的工具么?就没有一点实用些的资料么?看了很多资料之后还是觉得只见树木不见森林。仔细整理下思路,觉得还是应该从最基本的方面入门,先从 DBus 的 C API 入手学习,有了这些知识,就算麻烦,也可以先在完成一个基本功能的例子程序的同时大概的知道 DBus 的运行机制。 在网上找到这么一篇文章: http://www.matthew.ath.cx/misc/dbus , 正合我意,下面的内容基本是对这篇文章的翻译和扩充。 注意: 翻译没有得到原文作者同意,原文也很简单易懂,最好去读原文。如果收到投诉,我会立即撤掉本文的。 本文不是一篇好的 DBus 入门,有很多基本的东西不在记述之内。 一般情况下不会直接使用 C API 进行 DBus 的编程,而是使用某种 DBus-binding,但我觉得理解 DBus 的 C API 对完整地理解 DBus 是非常重要的。 虽然 DBus 是用 C 写的,而且本文写的是 C API,但是 DBus 设计中充满的面向对象的思想,请注意。 一

D-Bus学习(六):Method的收发小例子

坚强是说给别人听的谎言 提交于 2019-12-06 07:31:00
  我们继续学习D-Bus,参考 http://dbus.freedesktop.org/doc/dbus/libdbus-tutorial.html ,相关的API接口reference参考 http://dbus.freedesktop.org/doc/dbus/api/html/modules.html 。从底层,即libdbus学习如何发送Method以及如何等待应答,在 上上次学习中,给出了同步的方式 ,这是更为高层的处理方式,建议使用。监听method和监听signal的方式非常相似。在给出例子之前,我希望和上次学习一样给出一个示意图,更好地了解D-Bus的各个概念。 监听Method call消息,并返回Method reply消息   Method的监听和signal的监听的处理时一样,但是信号是不需要答复,而Method需要。在下面的例子中,我们将学习如何在消息中加入多个参数(在D-Bus学习(四)中,我们加入了一个参数)的情况。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dbus/dbus-glib.h> #include <dbus/dbus.h> #include <unistd.h> /*读取消息的参数,并且返回两个参数,一个是bool值stat

DBus学习笔记

我们两清 提交于 2019-12-06 07:25:44
http://dotnet.cnblogs.com/page/76759/?page=1 作者:Jerry_Chen 来源:www.meegoq.com 时间:2010-10-12 阅读:513 次 原文链接 [收藏] 整页浏览 摘要: DBus作为一个轻量级的IPC被越来越多的平台接受,在MeeGo中DBus也是主要的进程间通信方式,这个笔记将从基本概念开始记录笔者学习DBus的过程 [1] DBus学习笔记一:DBus学习的一些参考资料 [2] DBus学习笔记二:什么是DBus? [3] DBus学习笔记三:DBus的一些基本概念 一些基本概念的解释和翻译: http://blog.mcuol.com/User/AT91RM9200/Article/12816_1.htm http://www.cnblogs.com/wzh206/archive/2010/05/13/1734901.html 一个完整的DBus学习教程(强烈推荐,写得相当的全): http://blog.csdn.net/fmddlmyy/archive/2008/12/23/3585730.aspx 两个DBus的完整示例,相当有参考价值 http://blog.chinaunix.net/u1/58649/showart_462468.html http://hi.baidu.com

DBUS

血红的双手。 提交于 2019-12-06 07:15:15
dbus基本接口 /* * Example low-level D-Bus code. * Written by Matthew Johnson <dbus@matthew.ath.cx> * * This code has been released into the Public Domain. * You may do whatever you like with it. */ #include <dbus/dbus.h> #include <stdbool.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> /** * Connect to the DBUS bus and send a broadcast signal */ void sendsignal(char* sigvalue) { DBusMessage* msg; DBusMessageIter args; DBusConnection* conn; DBusError err; int ret; dbus_uint32_t serial = 0; printf("Sending signal with value %s/n", sigvalue); // initialise the error value dbus_error

map遍历

无人久伴 提交于 2019-12-06 06:59:59
map遍历 测试代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 void show(map<int,string>& mp) 4 { 5 map<int,string>::iterator iter=mp.begin(); 6 while(iter!=mp.end()) 7 { 8 cout<<iter->first<<" "<<iter->second<<endl; 9 iter++; 10 } 11 cout<<endl; 12 } 13 int main() 14 { 15 //构造 map 16 map<int,string> mp; 17 mp.insert({5,"map 5"});//使用{} 18 mp.insert({6,"map 6"});//使用{} 19 mp.insert({7,"map 7"});//使用{} 20 mp.insert({8,"map 8"});//使用{} 21 mp.insert({0,"map 0"});//使用{} 22 mp.insert({1,"map 1"});//使用{} 23 mp.insert({2,"map 2"});//使用{} 24 mp.insert({3,"map 3"});//使用{} 25 mp.insert({4,"map 4"});//使用

map查找并修改元素

杀马特。学长 韩版系。学妹 提交于 2019-12-06 06:59:54
map查找并修改元素 测试代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 void show(map<int,string>& mp) 4 { 5 map<int,string>::iterator iter=mp.begin(); 6 while(iter!=mp.end()) 7 { 8 cout<<iter->first<<" "<<iter->second<<endl; 9 iter++; 10 } 11 cout<<endl; 12 } 13 int main() 14 { 15 //构造 map 16 map<int,string> mp; 17 mp.insert({5,"map 5"});//使用{} 18 mp.insert({6,"map 6"});//使用{} 19 mp.insert({7,"map 7"});//使用{} 20 mp.insert({8,"map 8"});//使用{} 21 mp.insert({0,"map 0"});//使用{} 22 mp.insert({1,"map 1"});//使用{} 23 mp.insert({2,"map 2"});//使用{} 24 mp.insert({3,"map 3"});//使用{} 25 mp.insert({4,"map 4"})

迭代(for循环)

混江龙づ霸主 提交于 2019-12-06 05:47:24
例子 #for x in [1,2,3]: #列表 # print(x) #for x in (1,2,3): #元组 # print(x) 文件本身也是个可迭代的对象: 创建一个new file:data.txt在里面写入 优品课堂学编程 好心情www.codeclassroom.comwww.youpinketang.comwww.uke.cc 再在main.py里写入 f = open('data.txt',encoding='utf8') for line in f: #for line在刚才的f里 print(line, end=' ') #遍历出来结果的行,结尾用空格结束 1、迭代协议:_next_() _next_()不是暴露出来给客户调用,可以获取下一个元素,就是一行一行读 next:所占内存空间不变的情况,如果想获得数据,移到下一项,移动指针用的 pyhon console里写入 f = open('data.txt',encoding='utf8')f.__next__() '优品课堂\n' 典型支持迭代协议对象 >>> f = open('data.txt',encoding='utf8') >>> next(f) '优品课堂\n' >>> next(f) '学编程 好心情\n' >>> next(f) 'www.codeclassroom.com\n' >>