ddsy1886型电表接线图_dd862型单相电能表接线图

ddsy1886型电表接线图_dd862型单相电能表接线图OpenDDS的学习和使用因项目需要,最近在学习和使用开源软件OpenDDS,在这里把自己的所学,所用,所想做个记录,以备查看。因个人当前理解的限制,所写内容不一定全部正确

OpenDDS的学习和使用   因项目需要,最近在学习和使用开源软件OpenDDS,在这里把自己的所学,所用,所想做个记录,以备查看。因个人当前理解的限制,所写内容不一定全部正确,但所有内容是   我操作验证过的。使用环境Debian 4.9.210 x86_64/Linux   摘要   1、学习资料   2、环境搭建   3、为我所用   4、打包DDS库文件   5、求助渠道   ——————————————————————————————————————————————————————————————————————–   1、学习资料   a. 网上搜索中文资料有很多介绍,先对OpenDDS有了个大概的认知。它是个开源的数据分发   中间件,有三层:TAO+ACE+DDS,   其中TAO负责封装数据,让OpenDDS支持跨平台;   ACE负责数据通信;   DDS负责数据的分发交互。   b. 在OpenDDS官网OpenDDS 下载OpenDDS软件包和开发者指南。网站里也有一些对其的   介绍,看不懂没关系,多看几遍。软件包解压后里面有一些README和md文件也看下,   还有DOC目录下文档也看下。最重要的是开发者指南文件,里面比较详细的介绍了OpenDDS   的使用和配置,需要多看几遍,尤其是第二章介绍软件包里的用例,以及第七章OpenDDS的   common,discovery, transfort配置,对理解OpenDDS如何使用很有帮助。   2、环境搭建   本人使用的是linux系统,内核版本是4.9-12,windows环境方法类似,网上也可以搜到很多介绍。   需要材料:   Perl软件包(主要用于跑OpenDDS的用例和一些环境配置) 地址:Perl Download – www.perl.org   OpenDDS软件包OpenDDS-3.15.tar.gz 地址:https://github.com/objectcomputing/OpenDDS/releases/download/DDS-3.15/OpenDDS-3.15.tar.gz   ACE+TAO软件包ACE+TAO-2.2a  地址:http://download.ociweb.com/TAO-2.2a/ACE+TAO-2.2a_with_latest_patches.tar.gz   首先,安装Perl,  (安装方法在软件包的install.mid里有写)   然后,解压OpenDDS-3.15.tar.gz软件包,得到文件夹OpenDDS-3.15   最后,解压ACE+TAO软件包,得到文件夹ACE_wrappers,然后将此文件夹移入动到上一步得到   的文件夹OpenDDS-3.15中   编译OpenDDS   进入解压后的OpenDDS目录,然后运行配置文件,这里会配置编译的环境变量和一些准备工作,其中包括下载ACE+TAO的软件包,由于下载很慢常会失败,因此我们上面手工下载然后解压ACE+TAO到OpenDDS目录。 PS: –prefix=/home/test 是为后面安装OpenDDS指定安装路径的,如果这里不配置,后面安装会报错找不到安装路径。   实际我们编译后就可以使用OpenDDS,安装只是把相关的头文件和库文件打包到指定目录,方便我们打包生成OpenDDS的运行环境。   安装OpenDDS   执行安装命令后,OpenDDS的文件会安装到上一步骤中通过 –prefix指定的 /home/test目录下。   测试OpenDDS   进入目录OpenDDS-3.15/DevGuideExamples/DCPS/Messenger目录,使用perl测试开发者指南里介绍的用例。   如果用例报找不到OpenDDS的库文件,需要手工添加环境变量:   export $LD_LIBRARY_PATH=*/OpenDDS-3.15/lib:*/OpenDDS-3.15/ACE/lib   测试通过的化,说明基本的OpenDDS运行环境就搭建好了。但这只是在单机运行了样例,大概率我们需要在两台机器之间通信,下面说下怎样在两台linux计算机之间跑Messenger用例。   两台linux计算机OpenDDS通信   1、首先需要在两台linunx计算机上分别测试通过部署好的OpenDDS用例   2、配置两台计算机的 /etc/hosts 文件,让其内容保持一致,例如:其中10.10.10.10是计算机A的IP地址,Debian10是其hostname; 10.10.10.20是计算机B的IP地址,Debian20是其hostname   PS: 配置后重启下计算机使其生效。如果不配置,publisher发布者DataWriter在与subcriber订阅者的DataReader建链时报文带的ip地址可能是默认的127.0.0.1,最终无法建立连接。不知道为啥  OpenDDS要读这个文件,而且还会把ip地址map到hostname,然后报文里带的时hostname:port.   3、OpenDDS的发布者和订阅者通信前需要先发现对方,这里主要有两种发现方式,一是使用信息仓库的集中发现,另一种是发布者和订阅者直接的对等发现。这里使用的是集中发现,感觉下来这种方式简单些,常用些。   在A计算机运行集中发现服务DCPSInfoRepo程序和订阅服务,在B计算机运行发布服务。命令中最后带的IP地址都是DCPSInfoRepo服务所在计算机IP地址,命令中还带了打印日志的参数,帮助分析问题,也可以不带。 当然我们也可以把相关的参数配置在.ini文件中,然后执行程序时加载,例如 .publisher -DCPSConfigFile configuration.ini 具体配置方法可以参考开发者指南的第七章。   3、为我所用   可以通过修改OpenDDS-3.15/DevGuideExamples/DCPS/Messenger下的用例代码,发送和订阅我们需要的数据。修改源码前,可以参考开发者指南中关于这个用例代码的讲解。   修改Messenger.idl文件,定制我们需要发布订阅的数据   修改Publisher.cpp文件,控制发布数据的方式   修改DataReaderListenerImpl.cpp文件,控制订阅数据的方式   这里修改完可以直接在OpenDDS-3.15/DevGuideExamples/DCPS/Messenger目录下make编译生成新的publisher和subcriber文件。OpenDDS默认是用.mpc构建的,编译完会   在 Messenger目录下生成GNUmakefile, GNUmakefile.Messenger_Idl, GNUmakefile.Messenger_Publisher, GNUmakefile.Messenger_Subscriber四个makefile文件。如果需要   引入其它编程库,可以直接修改这些makefile文件,让引入的代码参与编译。   也可以通过CMake构建项目,可以参考文件夹下的README.md文件配置,这里需要cmake版本大于3.8,本人还没有尝试。   4、打包DDS库文件   当开发完基于OpenDDS的应用程序,想要在其它linux环境运行时,就需要在环境上部署OpenDDS运行环境。可以通过把OpenDDS运行库打包成.deb文件的方式,安装到需要   使用的环境。分为下面几个步骤:   a. 构建你需要放置OpenDDS运行库的目录层次,例如需要安装在 /opt/test/ 目录   b. 把前面环境搭建章节中,安装的OpenDDS所有文件拷贝到 currentPat/opt/test/目录   c. 在 currentPath目录下,创建目录 DEBIAN, 然后在DEBIAN目录下touch文件control 和 postinst文件   d. 编写control文件和postinst文件,然后使用dpkg命令打包即可。control文件必须要有的,里面描述软件的基本情况,postinst文件是可选的,是个脚本,用来处理软件安装后   需要的操作。还有很多配置文件,可以网上搜索学习   e. 打包完成后的.deb,可以直接通过dpkg -i *.deb安装,卸载的话直接 dekg -r *.deb   5、求助渠道   在OpenDDS的官网的support网页列举了求助方法Support ,可以查看GitHub上的问题清单Issues · OpenDDS/OpenDDS · GitHub   翻看问题列表,可能有人和你遇到过同样的问题。或者你也可以提交问题,等待大佬的解答,我提过一个问题,大佬响应比较慢,最后还是我自己解决的。。。   当然我们还可以百度去碰碰运气 哈哈

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/66491.html

(0)
上一篇 2024年 8月 9日
下一篇 2024年 8月 9日

相关推荐

关注微信