2024年物联网嵌入式最全【原创】OpenDDS笔记(四) 树莓派下的开发实例_ace+tao2,2024年最新2024物联网嵌入式开发面试

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取


           10.3 如果经过以上测试,ssh并不通。应该是系统ssh服务被禁用了,行之有效的解决办法就是拔下树莓派SD卡,通过读卡器插入PC,由于SD卡里是linux文件系统,windows下打不开。那就通过虚拟机来打开。并且在boot文件夹下通过touch ssh命令新建一个空白的ssh文件。拔出SD卡再插入到树莓派上,重复10.2步骤,应该就解决了,如果还解决不了,请百度搜索“树莓派 ssh connection refused”寻求更多帮助。

也可以在windows下下载一个putty软件,选择SSH,输入IP后单击Open来测试ssh服务是否已开启。

10.4 确认ssh服务没问题后,关闭终端,以暂时退出ssh服务。

11. cd到OpenDDS上一级目录,分别执行以下命令:

tar czf OpenDDS.tar.gz OpenDDS

#该命令的目的是将OpenDDS文件夹打包为一个OpenDDS.tar.gz压缩包。
scp OpenDDS.tar.gz pi@192.168.2.112:/home/pi/DevOpenDDS

#该命令的目的是将OpenDDS.tar.gz压缩包发送到树莓派指定目录下,:后面即为目标路径
ssh pi@192.168.2.112

#该命令用于通过ssh连接树莓派
tar xzf OpenDDS.tar.gz

#该命令用于远程解压缩OpenDDS.tar.gz
  1. 在ssh远程模式下,进入树莓派OpenDDS所在目录,分别执行以下命令,用于设置环境变量。
export DDS_ROOT="$PWD/build/target"
export ACE_ROOT="$DDS_ROOT/ACE_wrappers"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:"$ACE_ROOT/lib":"$DDS_ROOT/lib"
export PATH=${PATH}:"$ACE_ROOT/bin":"$DDS_ROOT/bin"
  1. 通过以下命令cd到DDS默认实例“Messenger”目录下,然后执行./run_test.pl。
cd $DDS_ROOT/DevGuideExamples/DCPS/Messenger

实例会分别启动一个InfoRepo, publisher, 和subscriber。类似下图所示,说明部署成功。

三、编写编译自定义工程

前面笔者讲了,网上大部分只是进行到以上步骤就结束了,没看到如何开发新的工程,生成相关文件和如何make。在经过一些试验后,笔者发现了规律,并成功实现了编译和部署。本节中,我以Demo为工程名来实现一个自定义实例,文件仍来自于前几篇所定义过的同一套文件,Demo文件夹内容如下:

关于这些文件的内容,请翻看笔者前面几篇相关介绍的博文,本篇的目的是对他们实现编译,并部署到树莓派下执行。

观察OpenDDS自带的几个实例,笔者打算采用“将Demo文件夹与原始OpenDDS实例放在一起,重新执行OpenDDS编译”的思路来解决问题。OpenDDS自带实例$DDS_ROOT/DevGuideExamples/DCPS/Messenger的文件结构,有一个CMakeLists.txt文件,其内容如下,

project(OpenDDS_DevGuide_Messenger CXX)
cmake_minimum_required(VERSION 3.8.2)

find_package(OpenDDS REQUIRED)

set(CMAKE_CXX_COMPILER ${OPENDDS_COMPILER})

set(opendds_libs
  OpenDDS::Dcps # Core OpenDDS Library
  OpenDDS::InfoRepoDiscovery OpenDDS::Tcp # For run_test.pl
  OpenDDS::Rtps OpenDDS::Rtps_Udp # For run_test.pl --rtps
)

# Publisher
add_executable(publisher
  Publisher.cpp
)
OPENDDS_TARGET_SOURCES(publisher Messenger.idl)
target_link_libraries(publisher ${opendds_libs})

# Subscriber
add_executable(subscriber
  Subscriber.cpp
  DataReaderListenerImpl.cpp
)
OPENDDS_TARGET_SOURCES(subscriber Messenger.idl)
target_link_libraries(subscriber ${opendds_libs})

1. 将Messenger文件夹下的CMakeLists.txt文件拷贝到自定义工程Demo文件夹下,并将以上Messenger.idl修改为Demo.idl,用来适配Demo工程。

  1. 删除掉之前编译好的OpenDDS文件夹,并重新解压缩一个未编译过的,按照    “二、编译OpenDDS      中第5步和第6步”的过程重新生成文件。果然build/host及build/target下的DevGuideExamples文件夹下都自动生成了一个Demo文件夹,并产生了GNUmakefile及其他相关类型文件。

  1. 照这个思路,按照“二、编译OpenDDS”其他步骤进行部署,最终实现了既定目标。以下展示了,树莓派启动一个Publisher实例,Windows10启动了一个Subscriber实例,由于我将配置文件路径下载了cpp中,因此这里不用写成./Publisher -DCPSConfigFile config_Pub.ini这样的形式,而是直接运行。

四、引申

1.  上一节通过run_test.pl执行实例属于集中式发现,也可以通过对等发现的方式:

cd 到Messenger目录下,执行./publisher -DCPSConfigFile rtps.ini   及   ./subscriber -DCPSConfigFile rtps.ini

2. 在上一节第9步以后,可以将OpenDDS压缩后,通过U盘拷贝到树莓派中再进行如下操作:

2.1 设置环境变量

在etc/profile最后一行添加如下环境变量,将$PWD替换为实际路径,我的实际路径为/home/pi/DevOpenDDS/OpenDDS/build/target,重启生效。

export DDS_ROOT=“ P W D / b u i l d / t a r g e t "                                                                                                                      e x p o r t A C E _ R O O T = " PWD/build/target"                                                                                                                      export ACE\_ROOT=" PWD/build/target"                                                                                                                    exportACE_ROOT="DDS_ROOT/ACE_wrappers”
                           export LD_LIBRARY_PATH= L D _ L I B R A R Y _ P A T H : " {LD\_LIBRARY\_PATH}:" LD_LIBRARY_PATH:"ACE_ROOT/lib":" D D S _ R O O T / l i b "                            e x p o r t P A T H = DDS\_ROOT/lib"                            export PATH= DDS_ROOT/lib"                          exportPATH={PATH}:“ A C E _ R O O T / b i n " : " ACE\_ROOT/bin":" ACE_ROOT/bin":"DDS_ROOT/bin”

2.2 设置依赖库路径

在设置完环境变量以后,笔者尝试在Demo文件夹下直接运行./Publisher,出现以下错误,说明找不到可执行程序所以来的so文件。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值