Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改Windows应用商店应用程序上的MTU_C#_Bluetooth Lowenergy - Fatal编程技术网

C# 更改Windows应用商店应用程序上的MTU

C# 更改Windows应用商店应用程序上的MTU,c#,bluetooth-lowenergy,C#,Bluetooth Lowenergy,如果这个问题在其他地方得到了回答,我将向您道歉,但我无法在网上找到列出的解决方案。(甚至知道从哪里开始) 我在Windows8.1操作系统(使用C#作为编程语言)上使用Visual Studio创建了一个Windows应用商店应用程序。作为与设备建立BLE连接的一部分,我使用Windows.Devices.Bluetooth.GenerictTributeProfile来执行建立和维护BLE连接的各个步骤 现在,我需要向连接的设备发送超过20字节的数据。我已经研究过如何更改MTU,但在如何更改W

如果这个问题在其他地方得到了回答,我将向您道歉,但我无法在网上找到列出的解决方案。(甚至知道从哪里开始)

我在Windows8.1操作系统(使用C#作为编程语言)上使用Visual Studio创建了一个Windows应用商店应用程序。作为与设备建立BLE连接的一部分,我使用Windows.Devices.Bluetooth.GenerictTributeProfile来执行建立和维护BLE连接的各个步骤

现在,我需要向连接的设备发送超过20字节的数据。我已经研究过如何更改MTU,但在如何更改Windows应用商店应用程序上的MTU方面,我找不到任何好的来源。如有任何有用的文件或答案,将不胜感激


谢谢

对于BLE4.0/4.1,链路层数据字段数据包长度减去4字节报头的最大值为23字节,对于BLE4.2,最大值为251字节。现在,您可以在应用程序中改变这一点。 另一个需要考虑的是,大多数简单的BLE设备只能连接20字节的数据包。
因此,如果您想发送超过20字节的数据,只需发送多个数据包,并且不要忘记在发送下一个数据包之前等待GattCommunicationStatus.Success

设备已在使用BLE4.2,但其默认大小似乎为23。是否有任何方法可以让应用程序和设备在发送消息的大小上妥协?如果可能的话,我不希望在多个数据包中发送数据,因为这会干扰设备的当前功能。只需对GrooverFromHolland的评论稍加更正,BLE的最小ATT_MTU为23字节,但没有理论上的最大值。至于原始的BLE数据包,最小值是27字节,最大值是251。@如果你说得对的话,。T.I.在这方面有一个重要的提示:由于内存和处理限制,并非所有蓝牙低能系统都支持更大的MTU尺寸。定义系统行为时,了解预期对等设备的功能。如果对等设备的功能未知,则将系统设计为使用默认的27字节L2CAP PDU/23字节ATT_MTU大小。例如,发送长度大于20字节(ATT_MTU-3)的通知会导致不支持更大MTU大小的设备上的数据被截断。这是一个合理的建议,我个人也遇到过这样的情况,即两台设备不知道对方的ATT_MTU,最终会出现数据丢失等问题。谢谢你提供的信息。这个声明是错误的。在任何蓝牙版本中,ATT MTU都没有限制。对于版本4.0及更新版本,ATT MTU可以高达65535,只要这两种设备都支持。我认为您可能会将其与LE数据长度扩展混淆,这是一种链路层优化,不会影响主机层。