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 通訊後:
- 使用已建立的協議與外部系統整合
- 為生產使用實施全面的錯誤處理
- 設定日誌記錄和監控 以確保系統健康
- 考慮生產部署的安全增強