Невозможно прочитать последовательный ответ от COM-порта - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь сделать шаблон ответа на запрос к устройству, использующему платформу 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...