Я пытаюсь сделать шаблон ответа на запрос к устройству, использующему платформу UWP.Я могу успешно получить запись с этим кодом, но чтение всегда возвращает 0 байтов.Я использовал кросс-кабель для подтверждения записи с другим последовательным портом.С примером UWP я могу возвращать и читать ответы, но приведенный ниже код никогда не читает никаких данных.
https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/CustomSerialDeviceAccess
Ниже приведен метод, который я использую, чтобы попытаться отправить запрос и получитьответ
async public void FindDevices()
{
string comDeviceSelector = SerialDevice.GetDeviceSelector("COM2");
var UsbDevices = await DeviceInformation.FindAllAsync(comDeviceSelector);
var device = await SerialDevice.FromIdAsync(UsbDevices.First().Id);
device.BaudRate = 115200;
device.DataBits = 8;
device.StopBits = SerialStopBitCount.One;
device.Parity = SerialParity.None;
device.Handshake = SerialHandshake.None;
device.BreakSignalState = false;
device.IsDataTerminalReadyEnabled = false;
device.IsRequestToSendEnabled = false;
device.WriteTimeout = TimeSpan.FromMilliseconds(50);
device.ReadTimeout = TimeSpan.FromSeconds(30);
var writer = new DataWriter(device.OutputStream);
var requestWriteAccess = new byte[] { 0xA5, 0x3F, 0x02, 0x07, 0x00, 0x01, 0xB3, 0xE7, 0x0F, 0x00, 0x10, 0x3E};
writer.WriteBytes(requestWriteAccess);
var bytesWritten = writer.StoreAsync().AsTask();
writer.DetachStream();
writer = null;
uint ReadBufferLength = 1024;
var reader = new DataReader(device.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
var readTask = reader.LoadAsync(ReadBufferLength).AsTask();
var bytesRead = await readTask;
}
В моем appxmanifest указано следующее:
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort"/>
</Device>
</DeviceCapability>