AI 驅動文件
您想了解什麼?
TCP 通訊設定
本指南演示如何透過 Node-RED 配置 OV10i 攝像頭與外部裝置之間的 TCP 通訊。TCP 通訊用於實時資料交換、遠端控制,或與自定義應用與系統的整合。
影片指南
請參閱此主題的實際演示:Auto-Integration Builder
跳過手動設定
用簡明的英文描述您的 TCP 整合,Auto-Integration Builder 將在幾秒鐘內為您生成一個完整的 Node-RED 流。
何時使用 TCP 通訊: 實時資料流、自定義應用整合、與外部系統的雙向通訊、高頻資料交換,或在 HTTP/REST API 不適用時。
先決條件
- OV10i 攝像頭系統已設定並連線
- 具備 TCP 通訊能力的目標裝置/系統
- 攝像頭和目標裝置之間的網路連線
- 對 IP 地址和埠號有基本瞭解
- 已配置活動 recipe(成像與檢驗設定完成)
步驟 1:驗證網路配置
1.1 檢查攝像頭 IP 地址
- 進入 系統設定
- 記下攝像頭 IP 地址(如
192.168.0.100) - 驗證子網掩碼 與網路配置
1.2 確認目標裝置網路
確保網路相容性:
- 同一子網: 攝像頭與目標裝置必須在同一網路段
- 可訪問埠: 目標裝置埠不得被防火牆阻塞
- 網路連通性: 如有可能,使用 ping 測試
1.3 網路要求
| 需求 | 攝像頭 | 目標裝置 | 備註 |
|---|---|---|---|
| IP 範圍 | 192.168.0.100 | 192.168.0.xxx | 必須在同一子網內 |
| 子網掩碼 | 255.255.255.0 | 255.255.255.0 | 標準配置 |
| 埠訪問 | 49155(示例) | 49155(示例) | 避免保留埠 |
| 防火牆 | 允許 TCP 流量 | 允許 TCP 流量 | 雙向 |
步驟 2:訪問 Node-RED 編輯器
2.1 導航至 IO Block
- 在配方的麵包屑導航中點選“IO Block”, 或者
- 從 Recipe Editor 選擇“Configure I/O”
2.2 開啟 Node-RED 編輯器
- 點選
Configure IO進入 Node-RED 流編輯器 - 驗證 Node-RED 介面 是否正常載入
檢查點: 您應看到左側帶有節點調色盤的 Node-RED 流編輯器。
步驟 3:配置 TCP Input(接收資料)
3.1 新增 TCP Input 節點
- 在左側面板的網路分割槽中定位“tcp in”節點
- 將“tcp in”節點拖放到流程畫布上
- 雙擊節點 進行配置
3.2 配置 TCP Input 設定
節點配置:
| 設定項 | 值 | 描述 |
|---|---|---|
| 型別 | 監聽在(Listen on) | 攝像頭作為伺服器 |
| 埠 | 49155 | 攝像頭監聽的埠 |
| 資料模式 | 流式(Stream) | 連續資料流 |
| 資料型別 | UTF8 | 基於文字的通訊 |
| 主題 | (可選) | 訊息分類 |
3.3 TCP Input 配置步驟
- 伺服器配置:
- 選擇 “Listen on port”(伺服器模式)
- 輸入 埠號(例如
49155)
- 資料處理:
- 資料模式: 選擇 “Stream” 以實現連續資料
- 資料型別: 選擇 “UTF8” 表示文字,或 “Buffer” 表示二進位制
- 高階設定:
- 換行符: 除非需要特定分隔符,否則置空
- Topic: 可選的訊息路由標識
- 點選
Done儲存配置
3.4 埠選擇指南
| 埠範圍 | 用途 | 推薦 |
|---|---|---|
| 1-1023 | 系統保留 | 避免使用 |
| 1024-49151 | Registered ports | 檢查可用性 |
| 49152-65535 | Dynamic/private | 推薦使用 |
第4步:配置 TCP Output(傳送資料)
4.1 新增 TCP Output 節點
- 在左側面板(Network 部分)定位 "tcp out" 節點
- 將 "tcp out" 節點拖到流畫布上
- 雙擊節點 進行配置
4.2 配置 TCP Output 設定
節點配置:
| 設定 | 值 | 描述 |
|---|---|---|
| Type | Connect to | 相機充當客戶端 |
| Host | 192.168.0.200 | 目標裝置 IP 地址 |
| Port | 49155 | 目標裝置埠 |
| Mode | Client | 出站連線 |
4.3 TCP Output 配置步驟
- 連線設定:
- Type: 選擇 "Connect to"(客戶端模式)
- Host: 輸入 目標裝置 IP 地址
- Port: 輸入 目標裝置埠號
- 連線選項:
- Mode: 保持為 "Client"
- End connection: 根據用例進行配置
- 資料格式:
- Base64: 對文字資料通常禁用
- TLS: 僅在需要安全連線時啟用
- 點選
Done儲存配置
第5步:建立通訊流程
5.1 構建完整流程
建立一個既能傳送又能接收 TCP 資料的流程:
- 將以下節點新增到畫布:
- Inject 節點(用於觸發訊息)
- Function 節點(用於訊息處理)
- TCP Out 節點(用於傳送資料)
- TCP In 節點(用於接收資料)
- Debug 節點(用於監控)
5.2 配置 Inject 節點
- 雙擊 Inject 節點
- 配置設定:
- 名稱: "傳送訊息"
- 有效載荷: 時間戳
- Topic: (留空)
- 點選
Done
5.3 配置 Function 節點
該函式節點將格式化您的輸出訊息:
msg.payload = "Hello from OV10i camera";
return msg;
- 雙擊函式節點
- 將上面的程式碼複製到 "On Message" 標籤頁
- 名稱: "格式化訊息"
- 點選
Done
5.4 連線連線
按以下順序連線節點:
輸出流:
- Inject → Function → TCP Out
- Function → Debug(檢視輸出訊息)
輸入流:
- TCP In → Debug(檢視輸入訊息)
5.5 完整流程結構
最終流程應包含:
- Inject 連線到 Function
- Function 連線到 TCP Out 和 Debug
- TCP In 連線到單獨的 Debug 節點
結果: 透過單擊注入按鈕即可傳送訊息,並在除錯面板中檢視輸出和輸入訊息。
第6步:配置訊息格式
6.1 定義訊息格式
保持訊息結構簡單:
| 訊息型別 | 格式 | 示例 |
|---|---|---|
| 簡單文字 | 純文字字串 | "Hello from camera" |
| 狀態更新 | 含資訊的文字 | "STATUS: 就緒" |
| 資料值 | 鍵值對格式 | "TEMPERATURE: 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 Flow
- 點選
Deploy按鈕(右上角) - 驗證部署成功 訊息
- 檢查節點狀態指示器:
- 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 傳送測試訊息
- 連線到相機 TCP 埠
- 傳送測試命令:
- "STATUS" → 應接收狀態響應
- "TRIGGER" → 應觸發檢查
- "INVALID" → 應處理未知命令
7.2.3 監控除錯輸出
- 開啟 Node-RED 除錯面板(右側邊欄)
- 透過 TCP 傳送測試訊息
- 驗證除錯輸出 顯示:
- 傳入訊息
- 處理結果
- 傳出響應
7.3 驗證清單
| 測試 | 預期結果 | 狀態 |
|---|---|---|
| TCP 連線 | 成功連線到相機埠 | ☐ |
| 訊息接收 | 除錯顯示傳入的訊息 | ☐ |
| 訊息處理 | Function node 正確處理 | ☐ |
| 響應傳送 | 目標裝置接收響應 | ☐ |
| 錯誤處理 | 無效訊息得到妥善處理 | ☐ |
第8步:與檢查系統整合
8.1 連線檢查觸發器
將 TCP 通訊與檢查工作流連結:
- 新增 "All Block Outputs" 節點(若尚不存在)
- 將檢查結果連線到 TCP 輸出
- 為 TCP 傳輸格式化檢查資料
8.2 檢查資料整合
用於處理檢查結果的 Function 節點:
// 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 通訊設定後:
- 使用已建立的協議將外部系統整合
- 為生產使用實現全面的錯誤處理
- 建立用於系統健康的日誌記錄與監控
- 考慮生產部署的安全性增強措施