Skip to content

hy125245/node-red-contrib-dds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node-RED FastDDS 节点使用指南

概述

这个 Node-RED 节点使用原生 C++ 扩展集成了 Fast DDS 库,提供高性能的 DDS(Data Distribution Service)通信能力。

功能特性

  • 原生性能:使用 C++ 原生扩展,直接调用 Fast DDS API
  • 发布者模式:可以发布 DDS 消息到指定话题
  • 订阅者模式:可以订阅 DDS 话题并接收消息
  • 多域支持:支持不同的 DDS 域ID
  • 实时通信:异步事件驱动的消息处理
  • 互操作性:与其他 DDS 应用程序兼容

安装

  1. 确保已安装 Fast DDS 库:
# Ubuntu/Debian
sudo apt install libfastdds-dev libfastcdr-dev
  1. 将节点安装到 Node-RED:
cd ~/.node-red
npm install /path/to/node-red-contrib-fastdds
  1. 重启 Node-RED 服务

节点配置

基本配置

  • 节点名称:自定义节点名称
  • 模式:选择发布者(Publisher)或订阅者(Subscriber)
  • 话题名称:DDS 通信的话题名称
  • 域ID:DDS 域标识符 (0-255)
  • 自动启动:节点部署后是否自动启动服务

发布者专用配置

  • 默认消息:没有输入时发布的默认消息内容

使用方法

发布者模式

// 发送简单字符串消息
msg.payload = "Hello World!";

// 发送结构化消息
msg.payload = {
    id: 42,
    message: "Structured message"
};

// 控制命令
msg.payload = "start";  // 启动服务
msg.payload = "stop";   // 停止服务
msg.payload = "restart"; // 重启服务

订阅者模式

订阅者会自动接收话题上的消息,输出格式:

{
    payload: {
        type: "received",
        id: 42,
        message: "Hello World!",
        timestamp: "2025-06-10T07:43:53.237Z"
    },
    topic: "DemoTopic",
    timestamp: "2025-06-10T07:43:53.237Z"
}

输出消息类型

发布者输出

{
    type: "published",
    id: 1,
    message: "Hello World!",
    timestamp: "2025-06-10T07:43:53.237Z"
}

订阅者输出

{
    type: "received",
    id: 42,
    message: "Received message",
    timestamp: "2025-06-10T07:43:53.237Z"
}

状态消息

{
    type: "status",
    message: "publisher started",
    timestamp: "2025-06-10T07:43:53.237Z"
}

错误消息

{
    type: "error",
    message: "Error description",
    timestamp: "2025-06-10T07:43:53.237Z"
}

示例流程

基本发布订阅示例

  1. 拖拽一个 FastDDS 节点到画布,配置为发布者模式
  2. 拖拽另一个 FastDDS 节点,配置为订阅者模式,使用相同的话题名称
  3. 连接 inject 节点到发布者,用于发送测试消息
  4. 连接 debug 节点到订阅者,查看接收到的消息

跨应用通信示例

可以与其他 DDS 应用程序进行通信:

# 运行 C++ 发布者
./fastdds_publisher

# 在 Node-RED 中配置订阅者节点监听相同话题

测试验证

使用提供的测试脚本验证安装:

cd /home/hy125245/node-red
node simple_test.js

预期输出:

✅ 模块加载成功
✅ FastDDSWrapper 可用
✅ 包装器创建成功
✅ 服务启动成功
📤 发布测试消息
数据: { type: 'published', id: 1, message: 'Hello FastDDS!', ... }
✅ 服务已停止

故障排除

常见问题

  1. 模块加载失败

    • 检查 Fast DDS 库是否正确安装
    • 验证库路径配置
  2. 服务启动失败

    • 检查域ID是否被其他进程占用
    • 验证网络配置
  3. 消息收发异常

    • 确认发布者和订阅者使用相同的话题名称和域ID
    • 检查 DDS 发现机制是否正常工作

调试技巧

  1. 启用详细日志:在 Node-RED 设置中启用调试模式
  2. 使用 debug 节点监控所有输出消息
  3. 检查节点状态指示器的颜色和文本

性能优化

  1. 域分离:使用不同的域ID隔离不同的应用
  2. QoS 配置:根据需要调整服务质量参数
  3. 消息大小:保持消息内容简洁,避免过大的数据包

开发者信息

  • 基于技术:Fast DDS v3.x, Node-addon-api v7.x
  • 支持平台:Linux (已测试), Windows (理论支持)
  • 授权协议:MIT

更新历史

  • v1.0.0:初始版本,支持基本的发布订阅功能

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published