跳到主要内容

AI 驱动文档

您想了解什么?

TCP 通信设置

本指南演示如何使用 Node-RED 配置 OV20i 摄像头与外部设备之间的 TCP 通信。对于实时数据交换、远程控制,或与自定义应用和系统的集成,使用 TCP 通信。

视频指南

本主题示例演示: Auto-Integration Builder

何时使用 TCP 通信: 实时数据流、自定义应用集成、与外部系统的双向通信、高频数据交换,或者 HTTP/REST APIs 不合适时。

先决条件

  • OV20i 摄像头系统已设置并连接
  • 具备 TCP 通信能力的目标设备/系统
  • 摄像头与目标设备之间的网络连通性
  • 对 IP 地址和端口号有基本理解
  • 已配置活动配方(成像和检验设置完成)

第 1 步:验证网络配置

1.1 检查摄像头 IP 地址

  1. 进入 System Settings
  2. 记录摄像头 IP 地址(例如 192.168.0.100
  3. 验证子网掩码 和网络配置

1.2 确认目标设备网络

确保网络兼容性:

  • 同一子网: 摄像头与目标设备必须处于同一网络范围
  • 可访问端口: 目标设备端口不得被防火墙阻塞
  • 网络连通性: 如可能,请使用 ping 命令测试

1.3 网络要求

RequirementCameraTarget DeviceNotes
IP Range192.168.0.100192.168.0.xxxMust be same subnet
Subnet Mask255.255.255.0255.255.255.0Standard configuration
Port Access49155 (example)49155 (example)Avoid reserved ports
FirewallAllow TCP trafficAllow TCP trafficBoth directions

第 2 步:访问 Node-RED 编辑器

2.1 导航至 IO Block

  1. 点击 recipe 面包屑中的 "IO Block",或
  2. 在 Recipe Editor 中选择 "Configure I/O"

2.2 打开 Node-RED 编辑器

  1. 点击 Configure IO 进入 Node-RED 流编辑器
  2. 验证 Node-RED 界面 正确加载

Checkpoint: 您应在左侧看到带有节点调色板的 Node-RED 流编辑器。

第 3 步:配置 TCP Input(接收数据)

3.1 添加 TCP Input 节点

  1. 在左侧面板(Network 部分)找到 "tcp in" 节点
  2. 将 "tcp in" 节点拖放到流程画布上
  3. 双击节点 进行配置

3.2 配置 TCP Input 设置

Node Configuration:

SettingValueDescription
TypeListen onCamera acts as server
Port49155Port camera listens on
Data modeStreamContinuous data flow
Data typeUTF8Text-based communication
Topic(optional)Message categorization

3.3 TCP Input 配置步骤

  1. Server Configuration:
    • Select "Listen on port" (server mode)
    • Enter port number (e.g., 49155)
  2. Data Handling:
    • Data mode: Select "Stream" for continuous data
    • Data type: Choose "UTF8" for text or "Buffer" for binary
  3. Advanced Settings:
    • New line character: Leave blank unless specific delimiter needed
    • Topic: Optional message routing identifier
  4. Click Done to save configuration

3.4 端口选择指南

端口范围用途建议
1-1023系统保留避免
1024-49151注册端口检查可用性
49152-65535动态/私有建议使用

第 4 步:配置 TCP 输出(发送数据)

4.1 添加 TCP 输出节点

  1. 在左侧面板(网络部分)定位 "tcp out" 节点
  2. 将 "tcp out" 节点拖放到流程画布上
  3. 双击节点进行配置

image.png

4.2 配置 TCP 输出设置

节点配置:

设置项说明
类型连接到相机充当客户端
主机192.168.0.200目标设备 IP 地址
端口49155目标设备端口
模式客户端出站连接

4.3 TCP 输出配置步骤

  1. 连接设置:
    • 类型: 选择 "连接到"(客户端模式)
    • 主机: 输入 目标设备 IP 地址
    • 端口: 输入 目标设备端口号
  2. 连接选项:
    • 模式: 保持为 "客户端"
    • 结束连接: 根据用例进行配置
  3. 数据格式:
    • Base64: 对文本数据通常禁用
    • TLS: 仅在需要安全连接时启用
  4. 点击 Done 保存配置

第 5 步:创建通信流程

5.1 构建完整流程

创建一个既能发送又能接收 TCP 数据的流程:

  1. 将以下节点添加到画布:
    • 注入节点(用于触发消息)
    • 函数节点(用于消息处理)
    • TCP Out 节点(用于发送数据)
    • TCP In 节点(用于接收数据)
    • Debug 节点(用于监控)

5.2 配置注入节点

  1. 双击注入节点
  2. 配置设置:
    • 名称: "发送消息"
    • 有效载荷: 时间戳
    • 主题:(留空)
  3. 点击 Done

5.3 配置函数节点

函数节点将格式化输出消息:

msg.payload = "Hello from OV20i camera";
return msg;

  1. 双击函数节点
  2. 将上面的代码复制到 On Message 标签
  3. 名称: "Format Message"
  4. 点击 Done

5.4 连接线路

按此顺序连接节点:

输出流:

  • 注入 → 函数 → TCP Out
  • 函数 → Debug(以查看输出消息)

输入流:

  • TCP In → Debug(以查看输入消息)

5.5 完整流程结构

最终流程应具备:

  • 注入 连接到 函数
  • 函数 连接到同时 TCP OutDebug
  • TCP In 连接到独立的 Debug 节点

结果: 通过点击注入按钮发送消息,并在调试面板中查看输出和输入消息。

第 6 步:配置消息格式

6.1 定义消息格式

保持消息结构简单:

消息类型格式示例
纯文本纯文本字符串"来自摄像机的文本"
状态更新带信息的文本"状态:就绪"
数据值键值对格式"温度:25.5"

6.2 自定义消息示例

您可以修改 function node 以适配不同类型的消息:

简单状态消息:

msg.payload = "Camera Ready";
return msg;

时间戳消息:

msg.payload = "Time: " + new Date().toLocaleString();
return msg;

带数值的数据:

msg.payload = "INSPECTION_COUNT: 42";
return msg;

第 7 步:部署与测试配置

7.1 部署 Node-RED Flow

  1. 点击 Deploy 按钮(右上角)
  2. 验证部署成功 信息
  3. 检查节点状态指示器:
    • Green dot: 已成功连接
    • Red dot: 连接错误
    • Yellow dot: 正在尝试连接

7.2 测试 TCP 通信

7.2.1 基本连通性测试

使用命令行工具:

# Test TCP connection (Linux/Mac)
telnet [camera-ip] [port]
# Example: telnet 192.168.0.100 49155

# Test with netcat
nc [camera-ip] [port]
# Example: nc 192.168.0.100 49155

Windows PowerShell:

Test-NetConnection -ComputerName 192.168.0.100 -Port 49155

7.2.2 发送测试消息

  1. 连接相机的 TCP 端口
  2. 发送测试命令:
    • "STATUS" → 应收到状态响应
    • "TRIGGER" → 应触发 inspection
    • "INVALID" → 应处理未知命令

7.2.3 监视调试输出

  1. 打开 Node-RED 调试面板(右侧边栏)
  2. 通过 TCP 发送测试消息
  3. 验证调试输出 显示:
    • 传入消息
    • 处理结果
    • 输出响应

7.3 验证清单

测试预期结果状态
TCP 连接成功连接到相机端口
消息接收调试显示传入消息
消息处理Function node 正确处理
响应发送目标设备接收响应
错误处理无效消息得到妥善处理

第 8 步:与 inspection 系统的集成

8.1 连接到 inspection triggers

将 TCP 通信与 inspection 工作流连接:

  1. 添加 "All Block Outputs" 节点(若尚不存在)
  2. 将 inspection results 连接到 TCP 输出
  3. 将 inspection data 格式化以进行 TCP 传输

8.2 Inspection Data Integration

用于处理 inspection 结果的 Function node:

// Get inspection results from All Block Outputs
const results = msg.payload;

// Extract key information
const inspectionSummary = {
result: results.pass ? "PASS" : "FAIL",
timestamp: new Date().toISOString(),
processing_time: results.processing_time,
roi_count: results.roi_results ? results.roi_results.length : 0
};

// Format for TCP transmission
msg.payload = JSON.stringify(inspectionSummary);
return msg;

8.3 双向控制

通过 TCP 启用远程控制:

// Handle remote commands
const command = msg.payload.toString().toUpperCase();

switch(command) {
case "START_INSPECTION":
// Trigger inspection sequence
global.set("trigger_inspection", true);
msg.payload = "INSPECTION_STARTED";
break;

case "STOP_INSPECTION":
// Stop inspection sequence
global.set("trigger_inspection", false);
msg.payload = "INSPECTION_STOPPED";
break;

case "CHANGE_RECIPE":
// Recipe change logic
msg.payload = "RECIPE_CHANGED";
break;
}

return msg;

第 9 步:故障排除常见问题

9.1 连接问题

问题症状解决方法
无法连接红色状态指示灯检查 IP 地址和端口
连接中断间歇性的黄色状态验证网络稳定性
超时错误响应延迟调整超时设置
端口冲突连接被拒绝使用不同的端口号

9.2 数据传输问题

问题症状解决方法
未接收到数据调试显示空消息检查数据格式设置
数据损坏调试中的文本混乱验证编码(UTF8/Buffer)
消息丢失缺少消息检查网络稳定性
大消息问题数据被截断使用更短的消息

9.3 调试技巧

系统化排查:

  1. 在每一步启用调试节点
  2. 监控 Node-RED 日志中的错误
  3. 先用简单的 TCP 客户端进行测试
  4. 使用 ping 验证网络连通性

成功!您的 TCP 通信已就绪

您的 TCP 通信系统现在可以:

  • 在摄像头与外部设备之间进行数据的发送与接收
  • 处理简单消息以实现基本通信
  • 使用调试节点监控数据流
  • 处理适用于您的应用的基础网络通信

持续维护

常规系统检查

  • 随时间监控连接稳定性
  • 验证数据传输是否持续稳定
  • 检查调试日志中是否有错误模式
  • 在网络变更后测试通信

下一步

在建立基本 TCP 通信后:

  1. 使用已建立的连接对外部系统进行测试
  2. 根据您的具体需求定制消息格式
  3. 随着需求增长,添加更复杂的逻辑
  4. 如 TCP 无法满足所有需求,请考虑其他通信方法

🔗 相关链接

对于高吞吐量应用:

  1. 降低消息频率
  2. 批量处理多条消息
  3. 对大数据使用二进制格式
  4. 实现压缩

调试技巧

系统化排除故障:

  1. 在每一步启用调试节点
  2. 监控 Node-RED 日志中的错误
  3. 使用网络监控工具(Wireshark)
  4. 先使用简单的 TCP 客户端进行测试

成功!您的 TCP 通信已就绪

您的 TCP 通信系统现在可以:

  • 在摄像头与外部设备之间进行数据的发送与接收
  • 处理指令(commands)实现远程控制
  • 实时传输检测结果
  • 通过适当的错误处理优雅地处理错误
  • 与生产系统集成以实现自动化工作流

持续维护

定期系统检查

  • 持续监控连接稳定性,随时间变化
  • 在生产中验证数据完整性
  • 根据需要更新安全配置
  • 根据使用模式优化性能

性能监控

  • 跟踪消息吞吐量与延迟
  • 监控错误率与连接故障
  • 分析数据模式以发现优化机会

下一步

在完成 TCP 通信设置后:

  1. 使用已建立的协议,将外部系统集成到现有环境中
  2. 为生产使用实现全面的错误处理
  3. 设置日志记录与监控以监控系统健康
  4. 为生产部署考虑安全增强措施

🔗 相关链接