AI 驱动文档
您想了解什么?
TCP 通信设置
本指南将向您展示如何使用 Node-RED 配置 OV80i 相机与外部设备之间的 TCP 通信。使用 TCP 通信进行实时数据交换、远程控制或与自定义应用程序和系统的集成。
视频指南
查看此主题的实际操作:自动集成构建器
何时使用 TCP 通信: 实时数据流、与自定义应用程序的集成、与外部系统的双向通信、高频数据交换,或当 HTTP/REST API 不适用时。
先决条件
- 已设置并连接的 OV80i 相机系统
- 具有 TCP 通信能力的目标设备/系统
- 相机与目标设备之间的网络连接
- 对 IP 地址和端口号的基本理解
- 已配置的活动配方(成像和检测设置完成)
第一步:验证网络配置
1.1 检查相机 IP 地址
- 导航到系统设置
- 记录相机 IP 地址(例如,
10.250.0.100) - 验证子网掩码和网络配置
1.2 确认目标设备网络
确保网络兼容性:
- 同一子网: 相机和目标设备必须在同一网络范围内
- 可访问端口: 目标设备的端口不得被防火墙阻塞
- 网络连接: 如果可能,使用 ping 命令进行测试
1.3 网络要求
| 要求 | 相机 | 目标设备 | 备注 |
|---|---|---|---|
| IP 范围 | 10.250.0.100 | 10.250.0.xxx | 必须在同一子网 |
| 子网掩码 | 255.255.255.0 | 255.255.255.0 | 标准配置 |
| 端口访问 | 49155(示例) | 49155(示例) | 避免保留端口 |
| 防火墙 | 允许 TCP 流量 | 允许 TCP 流量 | 双向 |
第二步:访问 Node-RED 编辑器
2.1 导航到 IO 块
- 在配方面包屑菜单中点击 "IO Block",或者
- 从配方编辑器中选择 "Configure I/O"
2.2 打开 Node-RED 编辑器
- 点击
Configure IO进入 Node-RED 流编辑器 - 验证 Node-RED 界面是否正常加载
检查点: 您应该看到带有节点调色板的 Node-RED 流编辑器。
第三步:配置 TCP 输入(接收数据)
3.1 添加 TCP 输入节点
- 在左侧面板(网络部分)中找到 "tcp in" 节点
- 将 "tcp in" 节点拖到流画布上
- 双击节点进行配置
3.2 配置 TCP 输入设置
节点配置:
| 设置 | 值 | 描述 |
|---|---|---|
| 类型 | 监听 | 相机作为服务器 |
| 端口 | 49155 | 相机监听的端口 |
| 数据模式 | 流 | 持续数据流 |
| 数据类型 | UTF8 | 基于文本的通信 |
| 主题 | (可选) | 消息分类 |
3.3 TCP 输入配置步骤
- 服务器配置:
- 选择 "Listen on port"(服务器模式)
- 输入 端口号(例如,
49155)
- 数据处理:
- 数据模式: 选择 "Stream" 以实现持续数据
- 数据类型: 选择 "UTF8" 进行文本通信或 "Buffer" 进行二进制通信
- 高级设置:
- 新行字符: 除非需要特定分隔符,否则留空
- 主题: 可选的消息路由标识符
- 点击
Done保存配置
3.4 端口选择指南
| 端口范围 | 用途 | 建议 |
|---|---|---|
| 1-1023 | 系统保留 | 避免使用 |
| 1024-49151 | 注册端口 | 检查可用性 |
| 49152-65535 | 动态/私有 | 推荐使用 |
第 4 步:配置 TCP 输出(发送数据)
4.1 添加 TCP 输出节点
- 在左侧面板(网络部分)中找到 "tcp out" 节点
- 将 "tcp out" 节点拖到流程画布上
- 双击节点进行配置
4.2 配置 TCP 输出设置
节点配置:
| 设置 | 值 | 描述 |
|---|---|---|
| 类型 | 连接到 | 相机作为客户端 |
| 主机 | 192.168.0.200 | 目标设备 IP 地址 |
| 端口 | 49155 | 目标设备端口 |
| 模式 | 客户端 | 出站连接 |
4.3 TCP 输出配置步骤
- 连接设置:
- 类型: 选择 "连接到"(客户端模式)
- 主机: 输入 目标设备 IP 地址
- 端口: 输入 目标设备端口号
- 连接选项:
- 模式: 保持为 "客户端"
- 结束连接: 根据用例进行配置
- 数据格式:
- Base64: 文本数据通常禁用
- TLS: 仅在需要安全连接时启用
- 点击
完成保存配置
第 5 步:创建通信流程
5.1 构建完整流程
创建一个可以同时发送和接收 TCP 数据的流程:
- 将以下节点添加到画布上:
- 注入节点(用于触发消息)
- 功能节点(用于消息处理)
- TCP 输出节点(用于发送数据)
- TCP 输入节点(用于接收数据)
- 调试节点(用于监控)
5.2 配置注入节点
- 双击注入节点
- 配置设置:
- 名称: "发送消息"
- 有效负载: 时间戳
- 主题: (留空)
- 点击
完成
5.3 配置功能节点
功能节点将格式化您的出站消息:
msg.payload = "Hello from OV80i camera";
return msg;
- 双击功能节点
- 将上面的代码复制到 "消息处理" 标签中
- 名称: "格式化消息"
- 点击
完成
5.4 连接节点
按以下顺序连接节点:
出站流程:
- 注入 → 功能 → TCP 输出
- 功能 → 调试(查看出站消息)
入站流程:
- TCP 输入 → 调试(查看入站消息)
5.5 完整流程结构
您的最终流程应包含:
- 注入 连接到 功能
- 功能 连接到 TCP 输出 和 调试
- TCP 输入 连接到单独的 调试节点
结果: 您可以通过点击注入按钮发送消息,并在调试面板中查看出站和入站消息。
第 6 步:配置消息格式
6.1 定义消息格式
保持消息结构简单:
| 消息类型 | 格式 | 示例 |
|---|---|---|
| 简单文本 | 普通字符串 | "来自相机的问候" |
| 状态更新 | 带信息的文本 | "状态:准备就绪" |
| 数据值 | 键值格式 | "温度:25.5" |
6.2 自定义消息示例
您可以修改功能节点以适应不同的消息类型:
简单状态消息:
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 流程
- 点击
Deploy按钮(右上角) - 验证部署成功 消息
- 检查节点状态指示器:
- 绿色点: 成功连接
- 红色点: 连接错误
- 黄色点: 正在尝试连接
7.2 测试 TCP 通信
7.2.1 基本连通性测试
使用命令行工具:
# Test TCP connection (Linux/Mac)
telnet [camera-ip] [port]
# Example: telnet 10.250.0.100 49155
# Test with netcat
nc [camera-ip] [port]
# Example: nc 10.250.0.100 49155
Windows PowerShell:
Test-NetConnection -ComputerName 10.250.0.100 -Port 49155
7.2.2 发送测试消息
- 连接到相机 TCP 端口
- 发送测试命令:
- "STATUS" → 应该收到状态响应
- "TRIGGER" → 应该触发检查
- "INVALID" → 应该处理未知命令
7.2.3 监控调试输出
- 打开 Node-RED 调试面板(右侧边栏)
- 通过 TCP 发送测试消息
- 验证调试输出 显示:
- 传入消息
- 处理结果
- 传出响应
7.3 验证清单
| 测试 | 预期结果 | 状态 |
|---|---|---|
| TCP 连接 | 成功连接到相机端口 | ☐ |
| 消息接收 | 调试显示传入消息 | ☐ |
| 消息处理 | 功能节点正确处理 | ☐ |
| 响应发送 | 目标设备接收到响应 | ☐ |
| 错误处理 | 无效消息得到妥善处理 | ☐ |
第 8 步:与检查系统集成
8.1 连接到检查触发器
将 TCP 通信与检查工作流程链接:
- 添加 "All Block Outputs" 节点(如果尚未存在)
- 将检查结果 连接到 TCP 输出
- 格式化检查数据 以进行 TCP 传输
8.2 检查数据集成
处理检查结果的功能节点:
// 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 调试技巧
系统化故障排除:
- 在每一步启用调试节点
- 监控 Node-RED 日志以查找错误
- 首先使用简单的 TCP 客户端进行测试
- 使用 ping 验证网络连接
成功!您的 TCP 通信已准备就绪
您的 TCP 通信系统现在可以:
- 在相机和外部设备之间发送和接收数据
- 处理简单消息以进行基本通信
- 使用调试节点监控数据流
- 处理应用程序的基本网络通信
持续维护
定期系统检查
- 监控连接稳定性随时间变化
- 验证数据传输是否始终有效
- 检查调试日志以查找任何错误模式
- 在网络更改后测试通信
后续步骤
在设置基本 TCP 通信后:
- 使用已建立的连接测试您的外部系统
- 根据您的具体需求自定义消息格式
- 随着需求的增长添加更复杂的逻辑
- 如果 TCP 无法满足所有需求,考虑其他通信方法
🔗 另请参阅
对于高吞吐量应用:
- 减少消息频率
- 批量处理多个消息
- 对大数据使用二进制格式
- 实现压缩
调试技巧
系统化故障排除:
- 在每一步启用调试节点
- 监控 Node-RED 日志以查找错误
- 使用网络监控工具(Wireshark)
- 首先使用简单的 TCP 客户端进行测试
成功!您的 TCP 通信已准备就绪
您的 TCP 通信系统现在可以:
- 在相机和外部设备之间发送和接收数据
- 处理命令以进行远程控制
- 实时传输检查结果
- 优雅地处理错误并进行适当的错误处理
- 与生产系统集成以实现自动化工作流
持续维护
定期系统检查
- 监控连接稳定性 随时间变化
- 验证生产中的数据完整性
- 根据需要更新安全配置
- 根据使用模式优化性能
性能监控
- 跟踪消息吞吐量 和延迟
- 监控错误率 和连接失败
- 分析数据模式 寻找优化机会
下一步
在设置 TCP 通信后:
- 使用已建立的协议与外部系统集成
- 为生产使用实施全面的错误处理
- 设置日志记录和监控 以确保系统健康
- 考虑生产部署的安全增强