2012-07-25 79 views
0

我是一名工程學學生,負責多個Ar無人機(簡單四旋翼無人機)的基於自主視覺的導航項目。以編程方式配置多個NIC

我已經在PC中連接了兩個WiFi卡。 Ar Drones都製作了自己的WiFi服務器。我將兩個NIC中的每一個同時連接到它們兩個(AR無人機)。兩個無人駕駛飛機都使用UDP端口傳輸視頻流。

我的問題是這樣的:

  1. 我可以同時接收視頻流同步?

  2. 如果是,那麼如何配置我的C#應用​​程序來接收這些視頻流並顯示它們?

我已經可以接收來自一個無人機的視頻流。如何重新配置​​該代碼以接收兩個視頻流?

+2

你能提供你已經有的代碼嗎?它可能有助於試圖瞭解限制的地方。 – mellamokb 2012-07-25 16:39:29

+1

我們需要更多細節。你在用什麼庫? – 2012-07-25 16:40:02

+0

我正在使用C#SDK ...鏈接是https://github.com/shtejv/ARDrone-Control-.NET ... – 2012-07-25 16:45:36

回答

0

您需要兩個套接字,並且您希望每個網絡接口的地址爲bind()

0

你不需要2個WiFi卡。

基本上,您的客戶端應用程序需要創建2個套接字。每個人都可以聽到不同的端口(例如:5000和5001)。然後,您必須將此信息傳達給您的無人機。可能通過將您的客戶端應用程序連接到TCP中的無人機併發送每個無人機的配置。第一臺無人機將接收端口5000,第二臺無人機將接收端口5001.

然後,無人機必須將UDP中的數據傳輸到客戶機的IP地址和配置中指定的端口。

編輯: 我檢查了庫,我看到一個用於發送UDP數據的UdpWorker類。在調用此類的構造函數時,您必須提供遠程IP地址(客戶端應用程序的地址)和端口號。

假設您的客戶端IP爲192.168.1.1,那麼Drone#1將初始化一個UdpWorker對象,其中remoteIpAddress = 192.168.1.1和port = 5000。對於Drone#2,UdpWorker對象將使用remoteIpAddress = 192.168.1.1和port = 5001進行初始化。

您的客戶端應用程序將接收來自不同套接字的流,因爲兩個套接字都綁定到不同的端口,因此很容易區分哪個套接字是哪個套接字。在你的C#應用​​程序中,你可以實例化兩個System.Net.Sockets.UdpClient類型的對象。第一個用端口號5000初始化,第二個用端口號5001.

+0

好的問題是,一旦一個無人機通過WiFi連接,該鏈接不能用於連接另一個無人機。由無人機創建的WiFi服務器只能連接到一個客戶端 – 2012-07-25 17:02:19

+0

每個無人機只與C#客戶端通信。每個無人機只有一個通信。只是C#客戶端應用程序偵聽同一地址上的兩個不同端口。無人機#1將數據發送到端口X上的客戶端,無人機#2將數據發送到端口Y上的客戶端。 – Absolom 2012-07-25 17:22:42

+0

我更新了我的答案,其中包含有關用於無人機的庫的信息。 – Absolom 2012-07-25 17:34:52