【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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第1张图片

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


【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第2张图片

已经连上mongodb服务端


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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第3张图片

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

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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第4张图片

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

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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第5张图片

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


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

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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第6张图片

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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第7张图片

已经多增加了一条记录


5、断开一个客户端

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

【AllJoyn框架-06】关于基于AllJoyn的即插即用的进展总结_第8张图片

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


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

你可能感兴趣的:(C++,mongodb,alljoyn)