0

我是一名工科学生,正在做一个基于自主视觉的多个 Ar 无人机(简单的四旋翼无人机)导航项目。

我在我的 PC 中连接了两个 WiFi 卡。两款 Ar Drones 都有自己的 WiFi 服务器。我将两个 NIC 中的每一个都同时连接到它们(AR 无人机)。两架无人机都使用 UDP 端口传输视频流。

我的问题是这样的:

  1. 我可以同时接收两个视频流吗?

  2. 如果是,那么如何配置我的 C# 应用程序以接收这两个视频流并显示它们?

我已经可以从一架无人机接收视频流。如何重新配置​​该代码以接收两个视频流?

4

2 回答 2

0

你需要两个socket,并且你希望bind()每个socket都有对应网络接口的地址。

于 2012-07-25T16:44:07.467 回答
0

您不需要 2 个 WiFi 卡。

基本上,您的客户端应用程序需要创建 2 个套接字。每个都可以监听不同的端口(例如:5000 和 5001)。然后,您必须将此信息传达给您的无人机。可能是通过使用 TCP 将您的客户端应用程序连接到您的无人机并发送每个无人机的配置。第一架无人机将接收端口 5000,第二架无人机将接收端口 5001。

然后,无人机必须将数据以 UDP 传输到您的客户端机器的 IP 地址和配置中的指定端口。

编辑: 我检查了库,我看到了一个用于发送 UDP 数据的 UdpWorker 类。调用此类的构造函数时,必须提供远程 IP 地址(客户端应用程序的地址)和端口号。

假设您的客户端的 IP 为 192.168.1.1,那么 Drone#1 将使用 remoteIpAddress=192.168.1.1 和 port=5000 初始化一个 UdpWorker 对象。对于 Drone#2,将使用 remoteIpAddress=192.168.1.1 和 port=5001 初始化 UdpWorker 对象。

您的客户端应用程序将从不同的套接字接收两个流,因为两个套接字都绑定到不同的端口,因此很容易区分哪个是哪个。在您的 C# 应用程序中,您可以实例化 2 个 System.Net.Sockets.UdpClient 类型的对象。第一个初始化为端口号 5000,第二个初始化为端口号 5001。

于 2012-07-25T16:51:36.597 回答