为什么啁啾';s的Windows.net库会丢失第二个、第四个、第六个等数据包吗?

为什么啁啾';s的Windows.net库会丢失第二个、第四个、第六个等数据包吗?,.net,windows,chirp,.net,Windows,Chirp,我尝试在ChirpSDK-.Net-3.4.0中构建并运行示例ChirpConnectConsoleDemo,发现当我运行Chirp的消息发送器(在Android设备上运行)时,它只能接收第一条、第三条、第五条等消息(Android Chirp message sender根据示例进行了修改,以其MaxPayloadLength对消息进行分段,并逐块发送数据)。换句话说,第二个、第四个、第六个等块将丢失 我曾经尝试过作为接收者的Android示例。在Android设备上使用相同的发送者应用程序,

我尝试在ChirpSDK-.Net-3.4.0中构建并运行示例ChirpConnectConsoleDemo,发现当我运行Chirp的消息发送器(在Android设备上运行)时,它只能接收第一条、第三条、第五条等消息(Android Chirp message sender根据示例进行了修改,以其MaxPayloadLength对消息进行分段,并逐块发送数据)。换句话说,第二个、第四个、第六个等块将丢失

我曾经尝试过作为接收者的Android示例。在Android设备上使用相同的发送者应用程序,并在另一个Android设备上作为接收者运行相同的Android应用程序,接收者可以成功接收所有消息(没有消息丢失)


我希望Windows示例也能成功接收Android Chirp应用程序发送的所有消息。但是,正如我所描述的,它总是丢失偶数消息。有人能帮我吗?谢谢。

问题可能是您发送有效负载的速度太快,这意味着有效负载之间没有足够的延迟。理想情况下,您应该至少发送一次有效负载ast延迟0.5秒


如果处理时间慢且内部音频缓冲区大小小,这可能会很快导致缓冲区溢出,这意味着SDK将丢失音频块。

我将这些测试应用程序配置为使用超声波属性。谢谢Dinu。我尝试将延迟设置为2秒,然后它就可以工作了。但是,我很好奇.Net库的p性能比Android版本差,因为在Android设备上运行的消息发送者应用程序是相同的。为什么Android receiver应用程序可以成功接收所有传递的消息块,但Windows版本不能。我最初的实现是设置200毫秒延迟,以便在收到通知回调后发送下一个消息块n Chirp示例应用程序。为了使Windows receiver应用程序能够接收所有消息块,我曾尝试将延迟设置为500毫秒和800毫秒。但直到我将延迟设置为2秒,它才按预期工作。这都是关于音频缓冲区大小和SDK解码速度的组合。如果缓冲区大小更大和/或解码速度比有效负载之间的延迟慢,SDK将错过下一个有效负载的前几毫秒,这意味着它将错过整个有效负载。虽然在大多数设备上解码速度非常快,但缓冲区大小会对延迟产生很大影响。在安卓SDK上,缓冲区大小由设备的最小缓冲区大小n定义我不确定Windows SDK,但是,2秒的延迟太多了。你在什么设备上运行SDK?抱歉,这与我之前所说的相反,缓冲区小加上处理速度慢的组合会导致缓冲区溢出,从而导致音频字节丢失,但同样,2秒太多,肯定是其他原因好了。很抱歉测试不准确。当我说我需要设置2秒延迟来接收所有消息块时,我只是尝试了0.2秒、0.5秒、0.8秒,然后是2秒延迟。今天我尝试设置0.1秒作为单位来检查应该设置多少延迟。然后我发现接收器客户端在设置为1.8秒之前无法接收所有消息块(I针对每个延迟设置测试5轮,如果5轮中有任何一轮失败,则处理失败。)。