BLE Cycle Trainer 写入特征 UUID 2AD9 - 如何根据游戏中发生的情况调整阻力?

问题描述 投票:0回答:1

溢出的朋友们大家好,

如果这个论坛上的一位常驻 BLE 天才不介意帮助我,我将永远感激不已。我一直在尝试用 C# 构建一个小型自行车游戏,到目前为止,我已经成功地从自行车读取字节数组并成功转换功率和转速,并让它在游戏中执行操作。

但是,我在写入特性方面遇到了一些问题。我有一段来自 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);


那么问题是我们如何根据游戏中发生的情况相对增加阻力呢?例如,假设用户在游戏中已经处于 0% 的高速档,然后达到 7% 的坡度,则阻力需要相对于自行车当前的阻力增加(例如 +100),即发送电阻例如没有用=700,因为这甚至可能低于他们的负债水平。

这肯定意味着也许我应该读取当前阻力以便相对调整它,但我还没有设法从我的自行车中获取任何数据来告诉我当前阻力。除非我缺少一种相对设置阻力的 FTMS 方法,否则我不知道如何解决这个问题。如果有人有任何想法,我们期待与他们合作。

非常感谢您的浏览。

c# unity-game-engine bluetooth-lowenergy gatt bluetooth-gatt
1个回答
0
投票

我一直使用的设置目标功率方法适用于 ERG 模式 - 这是有道理的。您明确告诉自行车您想要的目标功率。

我没有意识到的是,您可以以不同的方式构造字节数组来发送和使用蓝牙文档中名为“设置室内自行车模拟参数 - 4.16.2.18”的程序并模拟不同的坡度!因此,字节数组中发送的斜率的变化应该会导致自行车阻力的变化。

© www.soinside.com 2019 - 2024. All rights reserved.