如何在C#中设置BLE最小连接间隔为7.5ms?
设置32feet InTheHand BLE库的连接间隔为7.5ms
InTheHand.Bluetooth库的Gatt.ConnectAsync方法提供了重载,允许通过GattConnectionParameters指定连接间隔等核心参数。要实现7.5ms的最小连接间隔,需利用BLE间隔的单位规则(1.25ms为一个单位),将间隔值设为6(7.5 ÷ 1.25 = 6)。
修改后的完整代码
using InTheHand.Bluetooth; IReadOnlyCollection<BluetoothDevice> discoveredDevices = await Bluetooth.ScanForDevicesAsync(); BluetoothDevice fooDevice = discoveredDevices.Single(d => d.Name == "fooDevice"); var gatt = fooDevice.Gatt; // 配置连接参数,强制使用7.5ms间隔 var connectionParams = new GattConnectionParameters { MinInterval = 6, // 最小间隔:6×1.25ms = 7.5ms MaxInterval = 6, // 最大间隔设为与最小一致,固定间隔 SlaveLatency = 0, // 从设备不允许跳过连接事件,确保每次间隔都传输数据 SupervisionTimeout = GattConnectionParameters.DefaultSupervisionTimeout // 保持默认超时 }; await gatt.ConnectAsync(connectionParams); GattService barService = await gatt.GetPrimaryServiceAsync(BleUuids.BAR_SERVICE); GattCharacteristic fooChar = await barService.GetCharacteristicAsync(Guid.Parse(BleUuids.FOO_CHAR));
关键说明
- 间隔单位规则:BLE连接间隔的配置值是1.25ms的倍数,取值范围为6(7.5ms)到3200(4000ms)。将
MinInterval和MaxInterval设为相同值可强制使用固定间隔。 - 平台兼容性:
- Windows:需Windows 10 1903及以上版本,部分蓝牙适配器可能存在硬件限制,无法支持最小间隔。
- Android:需Android 8.0+,实际间隔可能受系统调度影响,略高于设置值。
- 设备协商限制:最终连接间隔由主设备(你的控制台应用)和从设备(fooDevice)协商决定,如果从设备不支持7.5ms间隔,会自动调整为双方都支持的最小值。
- 功耗与性能:更小的连接间隔会提升传输速率,但同时会增加蓝牙模块功耗和系统资源占用,需平衡速率与设备续航需求。
内容的提问来源于stack exchange,提问作者Vincent S
相关产品推荐
相关产品推荐

