Я связываюсь с устройством с последовательным интерфейсом и хочу иметь возможность читать данные, когда они поступают в потоке. Поступающие данные не будут иметь фиксированной длины. Тем не менее, вышеупомянутые функции возвращают значение только тогда, когда «считать» количество байтов было получено. Согласно документации, он должен возвращаться при получении любого количества байтов и загружать количество «байтов» в промежуточный буфер для чтения.
IInputStream stream = EventHandlerForDevice.Current.Device.InputStream;
var buffer = new Byte[100];
IBuffer bufferResult = await stream.ReadAsync(
buffer.AsBuffer(),
(uint)buffer.Length,
InputStreamOptions.Partial).AsTask().ConfigureAwait(false);
buffer = bufferResult.ToArray();
if (bufferResult.Length == 0)
{
LoggingServices.Instance.WriteLine<App>("something ", LogLevel.Info);
}
или
DataReaderObject.InputStreamOptions = InputStreamOptions.Partial;
bytesRead = await DataReaderObject.LoadAsync(ReadBufferLength);
Оба они возвращаются только тогда, когда получено число байтов длины буфера. В противном случае это работает только тогда, когда я передаю счетчик 1 и обрабатываю ввод для каждого байта.