我想将100KB数据发送到DA14580。但是我发现它非常慢。如何提高速度?非常感谢!
嗨dairylcs,
没有一个简单的答案如何提高发送数据的速度,而您的问题非常通用。一个简单的答案是增加设备的连接间隔,但这非常通用,因为每个连接间隔中传输的数据量取决于设备可以在每个连接间隔中发送的数据包的数量。同样,如果您在发送下一个指示之前使用指示,则传输数据的方式与速度相关。您可以查看DSP示例并检查实现。
谢谢mt_dialog
您从哪种设备发送数据?
iPhone或其他Anriod手机
如果您需要流量控制并将收到的数据转发到UART,则可以使用对话框的DSP。
否则,您可以自己做到这样做:
对于Android:您可以在一个连接事件中使用“无需响应”来发送多个数据包。在DA14580侧,设置特征性属性ATT_CHAR_PROP_WR_NO_RESP。在Android侧,使用特征。setWriteType(bluetoothgattcharacteristic.write_type_no_response)。然后使用特征。Writecharacteristic发送前20个字节。当您获得具有成功状态的onCharacteristicWrite回调时,您可以发送接下来的20个字节。继续这样做直到完成。注意:由于Android中的错误,如果连接在转移过程中意外丢失,请确保您在重新连接之前关闭GATT对象,否则您可能不会在重新连接后再次写信给它。您还应该使用gatt.requestConnectionPriority(bluetoothgatt.connection_priority_high)将连接间隔从默认的50毫秒降低到最小。如果要具有自定义参数,也可以使用DA14580侧的连接参数更新请求过程。您还可以使用gatt.requestmtu请求更大的MTU,以通过将碎片从应用转移到L2CAP层,从而稍微增加吞吐量,从而将一些标头卸下。
iOS有点困难,因为如果您发送数据太快,则核心蓝牙丢弃输出写入而无需响应命令。但是,您可以为每个第10个数据包插入带有响应的写入,以轻松解决此问题。
嗨dairylcs,
没有一个简单的答案如何提高发送数据的速度,而您的问题非常通用。一个简单的答案是增加设备的连接间隔,但这非常通用,因为每个连接间隔中传输的数据量取决于设备可以在每个连接间隔中发送的数据包的数量。同样,如果您在发送下一个指示之前使用指示,则传输数据的方式与速度相关。您可以查看DSP示例并检查实现。
谢谢mt_dialog
您从哪种设备发送数据?
iPhone或其他Anriod手机
如果您需要流量控制并将收到的数据转发到UART,则可以使用对话框的DSP。
否则,您可以自己做到这样做:
对于Android:
您可以在一个连接事件中使用“无需响应”来发送多个数据包。
在DA14580侧,设置特征性属性ATT_CHAR_PROP_WR_NO_RESP。
在Android侧,使用特征。setWriteType(bluetoothgattcharacteristic.write_type_no_response)。
然后使用特征。Writecharacteristic发送前20个字节。当您获得具有成功状态的onCharacteristicWrite回调时,您可以发送接下来的20个字节。继续这样做直到完成。注意:由于Android中的错误,如果连接在转移过程中意外丢失,请确保您在重新连接之前关闭GATT对象,否则您可能不会在重新连接后再次写信给它。
您还应该使用gatt.requestConnectionPriority(bluetoothgatt.connection_priority_high)将连接间隔从默认的50毫秒降低到最小。如果要具有自定义参数,也可以使用DA14580侧的连接参数更新请求过程。
您还可以使用gatt.requestmtu请求更大的MTU,以通过将碎片从应用转移到L2CAP层,从而稍微增加吞吐量,从而将一些标头卸下。
iOS有点困难,因为如果您发送数据太快,则核心蓝牙丢弃输出写入而无需响应命令。但是,您可以为每个第10个数据包插入带有响应的写入,以轻松解决此问题。