跳到主要內容

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 地址

  1. 進入 系統設定
  2. 記下攝像頭 IP 地址(如 192.168.0.100
  3. 驗證子網掩碼 與網路配置

1.2 確認目標裝置網路

確保網路相容性:

  • 同一子網: 攝像頭與目標裝置必須在同一網路段
  • 可訪問埠: 目標裝置埠不得被防火牆阻塞
  • 網路連通性: 如有可能,使用 ping 測試

1.3 網路要求

需求攝像頭目標裝置備註
IP 範圍192.168.0.100192.168.0.xxx必須在同一子網內
子網掩碼255.255.255.0255.255.255.0標準配置
埠訪問49155(示例)49155(示例)避免保留埠
防火牆允許 TCP 流量允許 TCP 流量雙向

步驟 2:訪問 Node-RED 編輯器

2.1 導航至 IO Block

  1. 在配方的麵包屑導航中點選“IO Block”, 或者
  2. 從 Recipe Editor 選擇“Configure I/O”

2.2 開啟 Node-RED 編輯器

  1. 點選 Configure IO 進入 Node-RED 流編輯器
  2. 驗證 Node-RED 介面 是否正常載入

檢查點: 您應看到左側帶有節點調色盤的 Node-RED 流編輯器。

步驟 3:配置 TCP Input(接收資料)

3.1 新增 TCP Input 節點

  1. 在左側面板的網路分割槽中定位“tcp in”節點
  2. 將“tcp in”節點拖放到流程畫布上
  3. 雙擊節點 進行配置

3.2 配置 TCP Input 設定

節點配置:

設定項描述
型別監聽在(Listen on)攝像頭作為伺服器
49155攝像頭監聽的埠
資料模式流式(Stream)連續資料流
資料型別UTF8基於文字的通訊
主題(可選)訊息分類

3.3 TCP Input 配置步驟

  1. 伺服器配置:
    • 選擇 “Listen on port”(伺服器模式)
    • 輸入 埠號(例如 49155
  2. 資料處理:
    • 資料模式: 選擇 “Stream” 以實現連續資料
    • 資料型別: 選擇 “UTF8” 表示文字,或 “Buffer” 表示二進位制
  3. 高階設定:
    • 換行符: 除非需要特定分隔符,否則置空
    • Topic: 可選的訊息路由標識
  4. 點選 Done 儲存配置

3.4 埠選擇指南

埠範圍用途推薦
1-1023系統保留避免使用
1024-49151Registered ports檢查可用性
49152-65535Dynamic/private推薦使用

第4步:配置 TCP Output(傳送資料)

4.1 新增 TCP Output 節點

  1. 在左側面板(Network 部分)定位 "tcp out" 節點
  2. 將 "tcp out" 節點拖到流畫布上
  3. 雙擊節點 進行配置

image.png

4.2 配置 TCP Output 設定

節點配置:

設定描述
TypeConnect to相機充當客戶端
Host192.168.0.200目標裝置 IP 地址
Port49155目標裝置埠
ModeClient出站連線

4.3 TCP Output 配置步驟

  1. 連線設定:
    • Type: 選擇 "Connect to"(客戶端模式)
    • Host: 輸入 目標裝置 IP 地址
    • Port: 輸入 目標裝置埠號
  2. 連線選項:
    • Mode: 保持為 "Client"
    • End connection: 根據用例進行配置
  3. 資料格式:
    • Base64: 對文字資料通常禁用
    • TLS: 僅在需要安全連線時啟用
  4. 點選 Done 儲存配置

第5步:建立通訊流程

5.1 構建完整流程

建立一個既能傳送又能接收 TCP 資料的流程:

  1. 將以下節點新增到畫布:
    • Inject 節點(用於觸發訊息)
    • Function 節點(用於訊息處理)
    • TCP Out 節點(用於傳送資料)
    • TCP In 節點(用於接收資料)
    • Debug 節點(用於監控)

5.2 配置 Inject 節點

  1. 雙擊 Inject 節點
  2. 配置設定:
    • 名稱: "傳送訊息"
    • 有效載荷: 時間戳
    • Topic: (留空)
  3. 點選 Done

5.3 配置 Function 節點

該函式節點將格式化您的輸出訊息:

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

  1. 雙擊函式節點
  2. 將上面的程式碼複製到 "On Message" 標籤頁
  3. 名稱: "格式化訊息"
  4. 點選 Done

5.4 連線連線

按以下順序連線節點:

輸出流:

  • Inject → Function → TCP Out
  • Function → Debug(檢視輸出訊息)

輸入流:

  • TCP In → Debug(檢視輸入訊息)

5.5 完整流程結構

最終流程應包含:

  • Inject 連線到 Function
  • Function 連線到 TCP OutDebug
  • 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

  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" → 應觸發檢查
    • "INVALID" → 應處理未知命令

7.2.3 監控除錯輸出

  1. 開啟 Node-RED 除錯面板(右側邊欄)
  2. 透過 TCP 傳送測試訊息
  3. 驗證除錯輸出 顯示:
    • 傳入訊息
    • 處理結果
    • 傳出響應

7.3 驗證清單

測試預期結果狀態
TCP 連線成功連線到相機埠
訊息接收除錯顯示傳入的訊息
訊息處理Function node 正確處理
響應傳送目標裝置接收響應
錯誤處理無效訊息得到妥善處理

第8步:與檢查系統整合

8.1 連線檢查觸發器

將 TCP 通訊與檢查工作流連結:

  1. 新增 "All Block Outputs" 節點(若尚不存在)
  2. 將檢查結果連線到 TCP 輸出
  3. 為 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 除錯技巧

系統化排錯:

  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 通訊系統現在可以:

  • 在相機與外部裝置之間傳送和接收資料
  • 處理遠端控制命令
  • 實時傳輸檢測結果
  • 透過正確的錯誤處理機制,優雅地處理錯誤
  • 與生產系統整合,實現自動化工作流

持續維護

定期系統檢查

  • 隨時間監控連線穩定性
  • 在生產環境中驗證資料完整性
  • 按需更新安全配置
  • 根據使用模式最佳化效能

效能監控

  • 跟蹤訊息吞吐量和延遲
  • 監控錯誤率和連線失敗情況
  • 分析資料模式以發現最佳化機會

下一步

在完成 TCP 通訊設定後:

  1. 使用已建立的協議將外部系統整合
  2. 為生產使用實現全面的錯誤處理
  3. 建立用於系統健康的日誌記錄與監控
  4. 考慮生產部署的安全性增強措施

🔗 參見下文