我遇到了一些奇怪的问题,当发送64字节的数据到一个特征。当客户端在数据发送后执行读取操作时,所有64字节都被正确接收。当客户端订阅了通知时,通知只接收到62个字节,但是如果执行额外的读取,则所有64字节都在那里。因此,由于某些原因,最后两个字节在通知中丢失了。
是什么导致了这种行为?
嗨Ulf Soderberg,
对于通知,一个设备可以通过一个特征发送的通知的字节数是由MTU (Maximum Transfer Unit)限制的,MTU默认为23字节,包括ATT层开销,所以一个通知的有效载荷是20字节。通过增加MTU大小,这意味着您可以在一个通知上发送更多字节,因此在您的情况下,最大传输单元应该是您想要发送的字节数量+ 3个额外字节。读取过程(当主机从外设读取一个值时)不受MTU大小的限制,这就是为什么您可以读取尽可能多的字节。
由于MT_dialog
啊。非常感谢。这就解释了它。
嗨Ulf Soderberg,
对于通知,一个设备可以通过一个特征发送的通知的字节数是由MTU (Maximum Transfer Unit)限制的,MTU默认为23字节,包括ATT层开销,所以一个通知的有效载荷是20字节。通过增加MTU大小,这意味着您可以在一个通知上发送更多字节,因此在您的情况下,最大传输单元应该是您想要发送的字节数量+ 3个额外字节。读取过程(当主机从外设读取一个值时)不受MTU大小的限制,这就是为什么您可以读取尽可能多的字节。
由于MT_dialog
啊。非常感谢。这就解释了它。