У меня есть следующий код, я использую для подключения к модулю Bluetooth TruConnect Bobcat (https://ack.me/FAQs/What_are_the_UUID_s_used_by_TruConnect):Почему GattCharacteristic.ReadValueAsync() возвращает 20 нулевых байтов?
public async void Start()
{
Guid RX_UUID = Guid.Parse("1cce1ea8-bd34-4813-a00a-c76e028fadcb");
Guid TX_UUID = Guid.Parse("cacc07ff-ffff-4c48-8fae-a9ef71b75e26");
Guid ServiceGuid = Guid.Parse("175f8f23-a570-49bd-9627-815a6a27de2a");
var devices = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(ServiceGuid));
var service = await GattDeviceService.FromIdAsync(devices[0].Id);
var TXCharacteristic = service.GetCharacteristics(TX_UUID)[0];
GattReadResult result = await TXCharacteristic.ReadValueAsync(BluetoothCacheMode.Uncached);
byte[] buffer = (result.Value.ToArray());
}
Проблема заключается в том, что буфер в конце всегда заканчивается 20 нулевых байтами, хотя мой модуль ничего не отправляет. Все это несмотря на результат. Статус оказывается успешным.
Это то, что я сварил, чтобы попытаться запустить его в большом приложении и получить тот же результат.
Еще одна интересная вещь, которую я заметил, что я попробовал один и тот же подход на WindowsHubApplication, и она работала. Теперь в универсальном приложении это не так.
Я также пробовал как режимы кэширования, так и без кэширования.
Заранее благодарен
Попробуйте прослушивать OnCharacteristicChanged и OnCharacteristicRead, это работает для меня, я получаю различные размеры буфера до 20 байт. – pogorman