Как разобрать считыватель данных? - PullRequest
1 голос
/ 05 июня 2019

В моем приложении UWP я отвечаю на запросы записи BLE со следующим кодом:

private async void WriteCharacteristic_WriteRequested(GattLocalCharacteristic sender, GattWriteRequestedEventArgs args)
{
    string runStr = string.Empty;
    var deferral = args.GetDeferral();

    var request = await args.GetRequestAsync();
    var reader = DataReader.FromBuffer(request.Value);

    while (reader.UnconsumedBufferLength > 0)
    {
        var iRead = reader.ReadString(reader.UnconsumedBufferLength);
        runStr = runStr + iRead;

        // I tried this but it throws an exception
        //uint inBufferCnt = await reader.LoadAsync(20);
    }

    if (request.Option == GattWriteOption.WriteWithResponse)
    {
        request.Respond();
    }

    deferral.Complete();
}

Я следую официальной документации здесь

Эточитает запрос на запись, но если отправляемый / записываемый текст слишком длинный, он обрезается.Я думаю, что должен продолжить чтение устройства чтения данных, но оно вызывает исключение, когда я пытаюсь вызвать await reader.LoadAsync(20):

Идентификатор операции недопустим.

Если я не вызову эту функцию, моя переменная runStr будет содержать текст, но будет обрезана при слишком длинной.

...