Я пытаюсь преобразовать String в байт [], а затем в IBuffer, чтобы установить поле HidOutputReport.Data.Byte []. AsBuffer() копирует результаты в Exception: значение не попадает в ожидаемый диапазон
Когда я пытаюсь использовать byte []. AsBuffer() VS2015 генерирует исключение ArgumentException и предоставляет «Значение не входит в ожидаемый диапазон» в качестве дополнительной информации об исключении.
Если я пытаюсь использовать DataWriter, то такое же исключение вызывается при вызове DataWriter.DetachBuffer().
Если у кого-то есть идеи, почему это может происходить или альтернативные методы, я мог бы попытаться получить мою строку в IBuffer, это было бы весьма признательно.
EDIT: Код Добавлено
HidOutputReport outputReport = device.CreateOutputReport();
byte[] bytesToCopy = new byte[textBox.Text.Length];
bytesToCopy = System.Text.Encoding.ASCII.GetBytes(textBox.Text);
//DataWriter dataWriter = new DataWriter();
//dataWriter.WriteBytes(bytesToCopy);
outputReport.Data = bytesToCopy.AsBuffer();
//outputReport.Data = CryptographicBuffer.CreateFromByteArray(bytesToCopy);
//WindowsRuntimeBufferExtensions.CopyTo(bytesToCopy, 0, outputReport.Data, 0, bytesToCopy.Length);
uint bytesWritten = await proscannerSystem_device.SendOutputReportAsync(outputReport);
Вы можете увидеть некоторые из моих других методов я пытаюсь скопировать. Стоит отметить, что WindowsRuntimeBufferExtensions.CopyTo()
кажется для работы, однако мне не хватает самого первого байта (я пытался выяснить, была ли проблема с моей копией, и мне пришлось столкнуться с этой проблемой, на которую я склонен полагать, что это так).
Возможно ли обновить свой вопрос с кодом? –
Эй, @RogerHartley Я добавил код, но я не верю, что это обеспечит много понимания. –
Мне интересно, может ли быть проблема с кодировкой - вы используете кодировку ASCII, но строки UT16. Я не уверен, что это ответ, потому что AsBuffer() просто обертывает IBuffer вокруг кучки байтов, и ему все равно, каковы эти байты. Но попробовать что-то попробовать - попробуйте использовать Encoding.Unicode.GetBytes() и посмотрите, не имеет ли значения. –