BLE骑行训练器写入特征UUID 2AD9:如何根据游戏场景调整阻力?
如何基于FTMS协议实现骑行台阻力的相对调整?
我用C#开发了一款小型骑行游戏,目前已经成功读取自行车的字节数组并转换为功率和转速数据,实现了游戏内的基础交互。
但在写入BLE特征调整阻力时遇到了问题:我从Git仓库拿到的代码只能写入0-1000范围内的绝对值阻力,代码如下:
BleApi.SubscribeCharacteristic_Write(selectedDeviceId, selectedServiceId, write_characteristic = "{00002ad9-0000-1000-8000-00805f9b34fb}", false); Write("00"); byte resistance1 = Convert.ToByte(val % 256); byte resistance2 = Convert.ToByte(val / 256); byte[] payload = { 0x11, 0x00, 0x00, resistance1, resistance2, 0x00, 0x00 }; BleApi.BLEData data = new BleApi.BLEData(); data.buf = new byte[512]; data.deviceId = selectedDeviceId; data.serviceUuid = selectedServiceId; data.characteristicUuid = write_characteristic; for (int i = 0; i < payload.Length; i++) { data.buf[i] = payload[i]; } data.size = (short)payload.Length; BleApi.SendData(in data, false);
我的需求是根据游戏场景相对调整阻力:比如用户当前处于高档位(对应阻力可能高于700),游戏内坡度从0%变为7%时,需要基于当前阻力值提升100,而不是直接写入绝对值700——后者可能比当前档位阻力还低,完全达不到场景要求。
问题在于我无法从自行车读取当前阻力值,所以想请教:FTMS协议是否支持相对设置阻力的指令?如果没有,有没有其他可行的解决方案?
内容的提问来源于stack exchange,提问作者SAMYTHEBIGJUICY
相关产品推荐
相关产品推荐

