专栏算法工具链tROS Communication执行DeInit之后,再次Init会失败并导致连接失败

tROS Communication执行DeInit之后,再次Init会失败并导致连接失败

已解决
默认617922024-05-20
79
8

用户您好,请详细描述您所遇到的问题,详细的描述有助于帮助我们快速定位,解决问题~Thanks♪(・ω・)ノ

1. 硬件获取渠道及型号: 不涉及

2. 系统镜像版本 不涉及

3. 问题模块: tROS/Communication/Init

4. 问题描述:

程序启动调用Communication Init接口进行初始化,示例代码如下:

串口打印调试信息如下:

从标注的信息可以观察到,插件都是加载成功了,连接执行正常。


执行DeInit接口之后,示例代码如下:

串口打印调试信息如下:

从打印信息看,DeInit的逻辑是执行成功了。但是再次执行Init会失败,执行Init和DeInit在同一个线程中,最终会导致创建连接的句柄会连接失败。创建句柄的示例代码如下:

subscriber会为NULL,即连接失败。


5. 示例代码:如上描述

6. log文件(目前暂不支持附件上传,请通过百度网盘上传后贴链接):

算法工具链
+1
评论8
0/1000
  • TROS.Assist
    Lv.3

    请问,这是在同一段代码里面重复init ,deinit么?

    2024-05-20
    1
    0
  • 默认61792
    Lv.1

    我这边没法回复评论,我就直接评论了哈。我的逻辑代码是这样的,如下:

    在StopService中的Stop接口中执行了DeInit函数,然后在StartService中执行了Init函数。

    2024-05-20
    0
    0
  • TROS.Assist
    Lv.3

    您好,init和deinit接口不支持重复init和deinit,建议在程序开始执行Init,程序结束再执行DeInit。

    2024-05-22
    0
    0
  • 默认61792
    Lv.1

    那如果init和deinit只能执行一次的话,我的使用场景是:在程序运行的期间修改communication的IP和Port信息[比如,添加连接,修改连接]就没法直接生效了嘛? 只有重启程序才能要求吗?

    可否有其他解决方案可以满足场景使用的要求呀,谢谢啦

    2024-05-22
    0
    0
  • 默认61792
    Lv.1

    补充一下信息:

    我这边测试deinit即使不执行,程序重启之后,init也是正常的,那么deinit接口存在的意义又是什么嘞。

    可否帮忙内部确认下,或者有参考可正常运行的重复init/deinit的示例代码,我这边再测试下,谢谢啦。

    2024-05-23
    0
    0
  • TROS.Assist
    Lv.3

    麻烦尝试在deinit后加一些sleep,然后在执行init,看看效果

    2024-05-24
    0
    0
  • TROS.Assist
    Lv.3

    您好,鉴于长时间未收到您的答复,我们暂时将该问题做关闭处理,如您仍有相同问题,请重新开贴子进行提问,祝您工作愉快!

    2024-06-04
    0
    0
  • 默认44416
    Lv.1

    请教下,communication模块源码编译总是报错是怎么回事呀,采用的是提供的dokcer环境编译communication源码呢


    2024-07-05
    0
    0