嗨MT_dialog团队,
我的应用程序需要在服务器和客户端(或设备和主机)之间瞬时传输数据,有时由于噪声或其他原因,数据积累在缓冲区(数据将不那么有用,因为不是那么新鲜),旧的数据将阻碍新数据的传输。
我想知道有多少数据没有传输在缓冲区,以及如何清除(取消传输)未传输的数据。
非常感谢
嗨BenjaminDu,
我假设你提到的缓冲区是低水平堆栈缓冲区,恐怕你问什么是不可能的(并在某种程度上违反了规范),从你已经发送数据堆栈,你不能收回,他们发送到堆栈和BLE协议将其余的照顾,我也认为你在谈论通知,其中没有协议的高级别确认设备已经成功传输数据,这是基于数据包的序列号的BLE的低级别协议照顾的。也许你应该考虑使用适应症代替通知,因为在这种情况下,中央设备是有义务向外围数据发送一个确认发送确实收到,所以你可以等确认从中央放置应发送新数据之前,但是一旦你将数据发送到堆栈,就没有办法收回它们。另外有一个合理的方式做同样的通知和检查数据是否发送另一方面,你可以检查缓冲区使用l2cm_get_nb_buffer_available()之前和之后BLE_END_EVENT和注意有多少数据已经通过特定连接的时间间隔发送,但是这只是一个想法。
由于MT_dialog
谢谢,是的,我的意思是缓冲区是低层堆栈缓冲区,如果没有高级调用(或函数)可用来收回数据,那么我会找到其他方法来解决问题。
我想收回数据的另一个原因如下:有时,当主人和奴隶得到断开连接由于长途,但是在我把然后在一起,很难再次获得连接,我怀疑这是由于缓冲区满时断开连接,所以如果可能的话,我想尝试如果我trtract数据,也许他们可以轻松地连接。由于无法收回数据,我无法尝试是否能把它们连接起来。所以我想知道,是什么原因导致在传输数据的时候断开连接,然后分开,当他们在一起的时候很难再连接。
我认为l2cm_get_nb_buffer_available()将是有用的,我将尝试这个函数。
再次感谢。
从设备在重新连接时遇到麻烦的事实来看,你不能假设缓冲区被数据填满了,我怀疑这是因为缓冲区被数据填满了,因为当设备断开连接时,缓冲区被堆栈刷新。我也不能假设一个原因,一个嗅探日志可能在这种情况下是有用的(检查是否有一个连接,但设备由于故障断开)。最有可能的原因是你的超时是非常大的,所以这两个设备,如果没有活动从另一侧之前需要时间考虑自己断开连接,这样你就可以解决,使用较小的超时时间,所以他们都是断开连接的速度更快,外围可以开始宣传。
嗨BenjaminDu,
我假设你提到的缓冲区是低水平堆栈缓冲区,恐怕你问什么是不可能的(并在某种程度上违反了规范),从你已经发送数据堆栈,你不能收回,他们发送到堆栈和BLE协议将其余的照顾,我也认为你在谈论通知,其中没有协议的高级别确认设备已经成功传输数据,这是基于数据包的序列号的BLE的低级别协议照顾的。也许你应该考虑使用适应症代替通知,因为在这种情况下,中央设备是有义务向外围数据发送一个确认发送确实收到,所以你可以等确认从中央放置应发送新数据之前,但是一旦你将数据发送到堆栈,就没有办法收回它们。另外有一个合理的方式做同样的通知和检查数据是否发送另一方面,你可以检查缓冲区使用l2cm_get_nb_buffer_available()之前和之后BLE_END_EVENT和注意有多少数据已经通过特定连接的时间间隔发送,但是这只是一个想法。
由于MT_dialog
嗨MT_dialog团队,
谢谢,是的,我的意思是缓冲区是低层堆栈缓冲区,如果没有高级调用(或函数)可用来收回数据,那么我会找到其他方法来解决问题。
我想收回数据的另一个原因如下:
有时,当主人和奴隶得到断开连接由于长途,但是在我把然后在一起,很难再次获得连接,我怀疑这是由于缓冲区满时断开连接,所以如果可能的话,我想尝试如果我trtract数据,也许他们可以轻松地连接。
由于无法收回数据,我无法尝试是否能把它们连接起来。
所以我想知道,是什么原因导致在传输数据的时候断开连接,然后分开,当他们在一起的时候很难再连接。
我认为l2cm_get_nb_buffer_available()将是有用的,我将尝试这个函数。
再次感谢。
嗨BenjaminDu,
从设备在重新连接时遇到麻烦的事实来看,你不能假设缓冲区被数据填满了,我怀疑这是因为缓冲区被数据填满了,因为当设备断开连接时,缓冲区被堆栈刷新。我也不能假设一个原因,一个嗅探日志可能在这种情况下是有用的(检查是否有一个连接,但设备由于故障断开)。最有可能的原因是你的超时是非常大的,所以这两个设备,如果没有活动从另一侧之前需要时间考虑自己断开连接,这样你就可以解决,使用较小的超时时间,所以他们都是断开连接的速度更快,外围可以开始宣传。
由于MT_dialog