Не удалось отправить HidOutputReport - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу отправить отчет о выходе через hid на устройство.

var device = await HidDevice.FromIdAsync(deviceDescriptor.Id, Windows.Storage.FileAccessMode.ReadWrite);
HidOutputReport outReport = device.CreateOutputReport();
byte[] buffer = new byte[] { 10, 20, 30, 40 };
DataWriter dataWriter = new DataWriter();
dataWriter.WriteBytes(buffer);
outReport.Data = dataWriter.DetachBuffer();

Но происходит сбой за исключением.

Message: 
    System.ArgumentException : Value does not fall within the expected range.
  Stack Trace: 
    HidOutputReport.put_Data(IBuffer value)

Что с ним не так? Код копируется из образца формы в документах.

Если длина нового буфера совпадает со старым outReport.Data.Length, я получаю исключение при

await device.SendOutputReportAsync(outReport); 

// System.ArgumentException: 'Value does not fall within the expected range.'
 StackTrace:
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at MyMethod()

Я пытаюсь запустить этот метод в xunit тест.

1 Ответ

0 голосов
/ 17 апреля 2020

Оказывается, первый байт в буфере - reportId, и он не может быть случайным. После установки этого первого байта для исправления Id все работает.

Кроме того, buffer.Length должно быть точно такой же емкости, что и outReport.Data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...