在一个项目中,我一直在使用蓝牙模块(Panasonic PAN1321)以大约200Hz的速度将实时数据从某些传感器传输到Android平板电脑(这是数据包传输的速率)。现在我正在考虑使用WiFi。我的理解是它具有更长的范围并且更稳健。此外,许多无线系统都使用它,因此将我的系统与现有设置集成起来会更容易。我打算使用Bluegiga WF121作为我的WiFi节点。该模块提供TCP或UDP通信。我不知道TCP或UDP。如果有人对以下问题有答案,我将非常感激:
期待您的回答/讨论。干杯
答案 0 :(得分:3)
问题1:值得吗?对不起,一旦你理解了权衡(包括开发时间),你必须自己决定一个
问题2:点对点?是
问题3:以500 Hz的频率传输?每秒500 msg *每条消息200字节(允许协议开销)*每字节8位= 0.8 GHz。所以理论上它可以在1Ghz通道上实现。然而,这假设完美的发送者&接收器,所以你可能做得不那么好。如果你可以在10Ghz的WiFi,你应该没事。作为一般规则,由于协议开销较少,UDP比TCP快。
问题4:可靠性。 TCP保证按顺序交付,但您必须自己查找消息边界。 UDP是用于传递和排序消息的尽力而为协议,但数据包边界与消息边界匹配,简化了接收代码。可以在UDP之上构建可靠性,但您基本上是在重新发明TCP。也可以重新排序UDP数据包和/或跳过无序数据包,因此如果它们以错误的顺序出现,它们就会丢失。
问题4:TCP或UDP。我说UDP(已编辑)
问题5:平板电脑的WiFi,互联网的3G / 4G?在这一点上不确定。如果您使用IP寻址并且没有为WiFi配置DNS服务器,您可能会强制互联网流量进入电话网络,但这只是一种争议。
答案 1 :(得分:3)
如果您在本地网络上ping设备,通常会看到延迟低于1毫秒。到目前为止,在没有创建某种大缓冲区的情况下,在该频率上发送0字节数据没有问题。
关于带宽:
[WP]:802.11b的最大原始数据速率为11 Mbit / s实际上,使用TCP和7.1 Mbit,应用程序可以实现的最大802.11b吞吐量约为5.9 Mbit / s / s使用UDP。
如果你假设一个相当慢的过时的11MBit WiFi连接,你应该没有问题发送你的数据。蓝牙是低功耗,低带宽技术,因此much slower。 6Mbit / s意味着你可以在~4kHz传输。
我的理解是它具有更长的距离并且更强大。
正确,主要是因为它使用更多的电力。
是否值得从蓝牙转为Wifi?
是的,如果低范围&带宽限制了你。如果没有,为什么要实施新的东西。
我可以在WiFi模块和Android平板电脑之间进行点对点数据传输(就像我的蓝牙模块一样)吗?
在WiFi上我可以实现高达500Hz的数据传输速率,数据包大小约为80到120字节吗?
只要连接足够好就没问题。
数据包中包含时间戳,因此数据包的时序并不重要,但数据包的顺序更重要。
TCP保证数据包顺序。 UDP没有。 (UDP之上的实现就像TCP连接一样)
只要每秒最多可以获得500个数据包(最大60000字节/秒),数据包丢失也不重要。
TCP还保证在建立连接时不会丢失数据包。如果数据包丢失(在本地网络上已经很少见),TCP将重新请求它。您的应用程序除了有序数据包的常量流之外什么都看不到。 UDP无法保证。你的应用程序以它们到达的顺序获取数据包(我会假设在本地网络中有正确的顺序,基本上没有什么可以重新排序它们)并且如果它们丢失则不会看到它们。
我应该使用TCP还是UDP开始开发?
TCP听起来更好。如果你想要没有丢包/重新排序,那么实现起来也更简单,因为它是在TCP堆栈中实现的。
我想在Android平板电脑上使用WiFi,只能与传感器的WiFi模块通信,并在平板电脑上使用3G / 4G进行互联网连接。这可能吗?
您可以创建某种可通过互联网访问的服务器,并让设备连接到该服务器。然后,服务器可以将从传感器收到的数据中继到仅连接3G的设备。我不认为你可以将它实现到传感器中,但这并非不可能。 3G情况意味着服务器或传感器需要接受来自互联网的连接。您无法访问3G上的设备,因为移动网络通常是防火墙,在NAT后面等。移动带宽通常远低于您目标的60000字节/秒。取决于国家/提供商/位置/ ..如果您可以传输那么多。