嗨mt_dialog团队,
我的应用程序需要在服务器和客户端(或设备和主机)之间的瞬时数据传输,某些时候由于噪声或其他原因,缓冲区中累积的数据(数据不那么有用),以及旧数据将妨碍要传输的新数据。
我想知道在缓冲区中没有传输的数据,以及如何清除(取消传输)未传输的数据。
非常感谢
嗨Benjamindu,
我想你提到的缓冲区是低级堆栈缓冲区,我担心你要问的是不可能的(并且在某种程度上是违反规范),从你将数据发送到堆栈的时间,您不能撤消它们,他们发送到堆栈,BLE协议将照顾其余的,我也想谈论通知,那里通过设备的协议没有高级确认成功传输数据,这是根据数据包的序列号来处理BLE的低级协议。也许您应该考虑使用指示而不是通知,因为在这种情况下,中央设备有义务向外设发送确认数据发送确实收到的外围设备,因此您可以在放置新数据之前等待中央的确认应该发送,但是一旦你向堆栈发送数据,就无法缩回它们。此外,还有一种合理的方法来与通知执行相同的方法,并检查数据是否在另一侧发送数据,可以使用BLE_END_EVENT之前和之后使用L2CM_GET_NB_BUFFER_AVAILABLE()检查缓冲区,并注意已发送多少数据通过特定的连接间隔,但这只是一个想法。
谢谢mt_dialog.
谢谢,是,缓冲器我的意思是低级别堆栈缓冲区,如果没有高级呼叫(或功能)可用于缩回数据,那么我会找到解决问题的其他方法。
我要缩回数据的另一个原因如下:有时,当主速度和奴隶由于长距离而断开连接时,但在我置于一起后,他们很难再次连接,我怀疑这是因为当缓冲区完全饱满时,如果可能的话,如果可能,那么想要尝试,如果我提供数据,也许他们可以轻松连接。由于无法缩回数据,如果Tetraction可以连接它们,我无法尝试。所以我想知道,在分流数据时断开连接后的原因是什么,它在聚在一起时会再次连接。
我认为l2cm_get_nb_buffer_available()将是有用的,我会尝试这个函数。
再次感谢。
从内部重新连接时遇到问题的事实来看,您无法假设缓冲区填充了数据,我怀疑这是因为这是因为当设备断开时,缓冲区被堆栈刷新缓冲区。我也不能承担一个原因,在这种情况下,嗅探器日志可能是有用的(检查是否有连接,但由于故障,设备是否已断开连接)。最重要的是,这就是你的超时非常大,所以两个设备,如果没有来自另一方的活动它需要时间在他们认为自己断开之前,所以你可以使用较小的超时时间来解决它均比已断开连接速度更快,外围可以启动广告。
嗨Benjamindu,
我想你提到的缓冲区是低级堆栈缓冲区,我担心你要问的是不可能的(并且在某种程度上是违反规范),从你将数据发送到堆栈的时间,您不能撤消它们,他们发送到堆栈,BLE协议将照顾其余的,我也想谈论通知,那里通过设备的协议没有高级确认成功传输数据,这是根据数据包的序列号来处理BLE的低级协议。也许您应该考虑使用指示而不是通知,因为在这种情况下,中央设备有义务向外设发送确认数据发送确实收到的外围设备,因此您可以在放置新数据之前等待中央的确认应该发送,但是一旦你向堆栈发送数据,就无法缩回它们。此外,还有一种合理的方法来与通知执行相同的方法,并检查数据是否在另一侧发送数据,可以使用BLE_END_EVENT之前和之后使用L2CM_GET_NB_BUFFER_AVAILABLE()检查缓冲区,并注意已发送多少数据通过特定的连接间隔,但这只是一个想法。
谢谢mt_dialog.
嗨mt_dialog团队,
谢谢,是,缓冲器我的意思是低级别堆栈缓冲区,如果没有高级呼叫(或功能)可用于缩回数据,那么我会找到解决问题的其他方法。
我要缩回数据的另一个原因如下:
有时,当主速度和奴隶由于长距离而断开连接时,但在我置于一起后,他们很难再次连接,我怀疑这是因为当缓冲区完全饱满时,如果可能的话,如果可能,那么想要尝试,如果我提供数据,也许他们可以轻松连接。
由于无法缩回数据,如果Tetraction可以连接它们,我无法尝试。
所以我想知道,在分流数据时断开连接后的原因是什么,它在聚在一起时会再次连接。
我认为l2cm_get_nb_buffer_available()将是有用的,我会尝试这个函数。
再次感谢。
嗨Benjamindu,
从内部重新连接时遇到问题的事实来看,您无法假设缓冲区填充了数据,我怀疑这是因为这是因为当设备断开时,缓冲区被堆栈刷新缓冲区。我也不能承担一个原因,在这种情况下,嗅探器日志可能是有用的(检查是否有连接,但由于故障,设备是否已断开连接)。最重要的是,这就是你的超时非常大,所以两个设备,如果没有来自另一方的活动它需要时间在他们认为自己断开之前,所以你可以使用较小的超时时间来解决它均比已断开连接速度更快,外围可以启动广告。
谢谢mt_dialog.