【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结

目前项目与即插即用有关,以alljoyn为底层支撑,以VS为开发环境,以Mongodb为数据库而实现的。目前实现的功能有:

1、系统以多对一方式运行,多个客户端,一个服务端

2、服务端可定期收集客户端的描述信息,包括客户端有哪些资源,在哪里等等

3、当有设备加入或离开时,服务端可以立即了解到

4、描述信息以JSON格式写入Mongodb数据库,可供上层应用获取利用

5、目前平台仅涉及PC和arduino due(arduino平台我暂未负责)

存在的问题有:

1、当多个地方开启同名服务时,客户只识别其中一个,如何判断?

2、随着客户端的增多,加入会话的时间会相应延长,怎样解决?

3、当有2个或2个以上的客户端启动时,CPU占用率高达90%

目前成果图文说明

1、准备阶段

配置好mongodb数据库,启动mongo客户端以方便观察数据库变化;准备好服务端与客户端的执行文件及相应的配置xml文件;设置好boost和mongoclient动态库路径,运行时需要

2、启动服务端程序和数据库客户端mongo

上图表明连接数据库成功,且正在等待接收客户会话请求。服务名是:org.alljoyn.service.test

已经连上mongodb服务端

3、启动第一个客户端实例

由上图可知客户寻找服务成功,加入会话。接下来收到服务发送的命令,该命令要求客户发送自己的描述信息,于是客户开始发送描述信息,发完后继续等待接收命令

客户一启动,服务端的反应是:

接受了客户的连接请求。设备一加入,就立刻发送获取描述信息命令。上图显示了两次命令发送,所以收到了两次描述信息,并将之写入数据库。目前此描述信息只是模板,后期需要调整。这里将信息以JSON格式打印出来以方便展示

此时我们可观察数据库是否有无添加。预先已经在service.xml文件中设置好数据库名alljoyn,集合名为clientdesc,见下图:

由图可知描述信息已经写入了数据库。其中由于编码问题,导致中文的乱码。当然这不是重点,毕竟已经成功写入了数据库。此后关于此客户的信息会定期由服务端发送命令面更新。

4、启动第二个客户端实例

客户反应如上,服务端也能立刻识别,见下图:

立刻识别出了新增的客户:XwpuCV6U.2,数据库的数量从1变成了2.此时再查看数据库:

已经多增加了一条记录

5、断开一个客户端

比如随便断开一个客户端,服务能否立刻感知到呢?可以

服务端检测到有客户退出。当然此时数据库也少了一项

大概就是如此。当然,还有很多不足,可能最让人困惑的是这东西能干啥。用在PC上确实感觉不到,不过用在嵌入式终端上就会有它的好处了,目前还需继续探讨。

时间: 2024-10-03 20:17:08

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结的相关文章

【AllJoyn专题】基于AllJoyn和Yeelink的传感器数据上传与指令下行的研究

接触高通物联网框架AllJoyn不太久,但确是被深深地吸引了.在我看来,促进我深入学习的原因有三点:一.AllJoyn开源,对开源的软硬件总会有种莫名的喜爱,尽管也许不会都深入下去:二.顺应潮流,物联网虽远未普及,但已是大势所趋,高通公司在领域布局,致力于打造舒适高效的智能家居场景,推出AllJoyn软件框架,适应了发展趋势:三.文档丰富,开源软件的使用,特别是框架,若没有文档相助,相信没有多少开发者愿意尝试,AllJoyn在这方面做得不错,日后还需做得更好.当然啦,也有些额外原因,包括高通的大

【AllJoyn框架-02】ubuntu下编译测试AllJoyn

所用源码是:alljoyn-14.02-src 进入源码目录,目录结构如下: 直接在终端输入命令:make OS=linux CPU=x86 VARIANT=debug 编译完成就会在顶层目录生成上图的build目录,其目录结构如下: 如果认真阅读make-build_instructions.txt文件就可立刻测试是否编译成功.首先运行alljoyn-daemon,然后先后在不同终端打开chat,此时两个chat就可在alljoyn框架下进行通信了.注意,三个可执行程序都依赖liballjoy

【AllJoyn框架-03】官方示例程序basic简单剖析

不论是自己编译源码还是从官方下载SDK,在alljoyn_core\samples下的代码很值得研究,有利于熟悉alljoyn框架的各种概念和编程套路.今天我且对basic程序作下简单剖析. 分服务端和客户端.首先看服务端:(我对示例代码做了精简,只保留最核心的API,这样更能抓住主要矛盾又不影响分析) int main(int argc, char** argv, char** envArg) { signal(SIGINT, SigIntHandler);//创建信号处理,类似于Linux中

Geneva框架:构建基于声明的WCF服务的更好方法

本文基于"Geneva"框架的预发布版本撰写而成.所有信息均有可能发生变更. 本文使用以下技术: Windows Communication Foundation "Geneva"框架(以前称为"Zermatt")是用于构建基于声明的应用程序和服务以及实现联合安全方案的新框架代号.它的功能包括用于构建自定义安全令牌服务 (STS) 的探测功能.要求从 ASP.NET 应用程序进行联合身份验证的机制,以及简化 ASP.NET 应用程序和 Windo

分享一个简易的ORM框架源代码以及基于该框架开发的一个简易论坛源代码

框架源代码以及基于这个框架开发的论坛源代码下载地址: 下载地址:http://files.cnblogs.com/netfocus/Forum.rar 论坛演示地址:http://www.entityspider.com/ 如何使用该框架的一篇文章:http://www.cnblogs.com/netfocus/archive/2010/01/10/1643569.html 下载后,请读readme.txt文件.  简要说明:  经过我的不懈努力,我的数据处理框架终于又上了一个新的台阶了.今天我

Windows环境搭建Web自动化测试框架Watir(基于Ruby)

web自动化测试一直是一个比较迫切的问题 图1-1 需要安装的工具 http://railsinstaller.org/ 因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.org/ 下载,而且使用该安装包的话,它会帮你把环境变量也设置完毕,我使用的版本是:railsinstaller-2.2.4.exe,建议下载最新版本. 开始安装RailsInstaller工具包,安装到默认位置即可. 这个对勾建议打上,它会帮你配置git和ssh,安装过

【AllJoyn框架-01】连接PC与Arduino Due开发板

前言 从今天开始学习高通主打的物联网框架AllJoyn,并定期记录学习过程.由于目前网上教程很少,所以要认真阅读官方文档.下载回来的文档比较多,根据名字也不好判别先看哪个,后看哪个,所以目前就靠感觉先看一部分文档再说,若能看懂就照着做一遍,若看不懂就多看.大致原则就是先把部署过程熟悉,然后是基本概念,接着掌握SDK,最后才是源码的学习.本着开源分享的精神,学习笔记记录在此,以飨读者. 1.AllJoyn介绍 AllJoyn是一个中性平台系统,旨在简化邻近异构分布式移动通信网络系统.这里的异构性不

【AllJoyn框架-08】AllJoyn在OpenWrt上的实践

依项目需求,需要将alljoyn移植到openwrt开发板上,其实谈不上复杂,只是这东西有点新,参考教程不多,需要足够地摸索.可参考的官方教程写得太不详细,也只能跟着它试试看了.基本步骤如下: 1.下载openwrt源码编译 貌似版本很多,也不是所有版本都适合我的板子,所以这点得弄清楚.我下得是barrier_break,支持mt7620a开发板.按照上面的教程,把该准备的给准备着,具体总结如下: 1.1 目前有三种,v12.09,attitude adjustment,barrier_brea

【AllJoyn框架-07】Linux平台下用eclipse c++ 编译AllJoyn程序

在windows下用Visual Studio 2012学习AllJoyn程序后,了解了基本概念.现在想转移到linux下学习,但却发现个问题:官方源码用scons编译时,在windows下自动生成vs工程文件,但在linux下只有源文件和Makefile.编译倒是编译,但若做大量修改,总得找个合适的编辑器吧,最好还能有个自动提示神马的.用vim? 唉,也许是我没完全配置好,功能并不强大,所以不想用它来写alljoyn程序.之前用过Qt Creator,感觉也不好,今天换成了eclipse c+