Поделиться через


SerialDevice Класс

Определение

Представляет последовательный порт. Объект предоставляет методы и свойства, которые приложение может использовать для поиска последовательных портов в системе и взаимодействия с ними.

public ref class SerialDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class SerialDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class SerialDevice : System.IDisposable
Public NotInheritable Class SerialDevice
Implements IDisposable
Наследование
Object Platform::Object IInspectable SerialDevice
Атрибуты
Реализации

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Примеры

using System;
using Windows.Devices.Enumeration;
using Windows.Devices.SerialCommunication;
using Windows.Storage.Streams;

...

DeviceInformationCollection serialDeviceInfos = await DeviceInformation.FindAllAsync(SerialDevice.GetDeviceSelector());

foreach (DeviceInformation serialDeviceInfo in serialDeviceInfos)
{
    try
    {
        SerialDevice serialDevice = await SerialDevice.FromIdAsync(serialDeviceInfo.Id);

        if (serialDevice != null)
        {
            // Found a valid serial device.

            // Reading a byte from the serial device.
            DataReader dr = new DataReader(serialDevice.InputStream);
            int readByte = dr.ReadByte();

            // Writing a byte to the serial device.
            DataWriter dw = new DataWriter(serialDevice.OutputStream);
            dw.WriteByte(0x42);
        }
    }
    catch (Exception)
    {
        // Couldn't instantiate the device
    }
}

Комментарии

Для использования класса требуется возможность serialCommunicationпоследовательного SerialDevice устройства . Дополнительные сведения см. в разделе Windows.Devices.SerialCommunication.

Создание объекта SerialDevice

  1. Создайте строку расширенного синтаксиса запросов (AQS), содержащую условия поиска для поиска устройства в перечисленной коллекции устройств. Если у вас есть идентификаторы поставщика и продукта, вызовите Метод GetDeviceSelectorFromUsbVidPid.
  2. Передайте полученную строку в FindAllAsync. Вызов извлекает объект DeviceInformationCollection .
  3. Цикл по коллекции. Каждая итерация получает объект DeviceInformation .
  4. Возвращает значение свойства DeviceInformation.Id . Строковое значение — это путь к интерфейсу устройства. (например, \\?\usb#vid_03eb&pid_2157&mi_01#7&1435ec7f&0&0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}).
  5. Вызовите Метод FromIdAsync , передав строку интерфейса устройства и получите SerialDevice объект . Если при этом возникает исключение или возвращается значение NULL, скорее всего:
    • Недопустимый путь к интерфейсу устройства
    • Путь к интерфейсу устройства не содержит повторного представления последовательного устройства
    • В приложении отсутствует serialCommunication возможность
    • Серийное устройство недоступно. (см . Windows.Devices.SerialCommunication)

Чтение и запись данных

Затем можно использовать объект SerialDevice для чтения данных из последовательного порта или записи в нее с помощью пространства имен Windows.Storage.Streams .

  1. Получите ссылку на входной поток, получив свойство SerialDevice.InputStream .
  2. Создайте объект DataReader , указав входной поток в конструкторе DataReader .
  3. Получите ссылку на выходной поток, получив свойство SerialDevice.OutputStream .
  4. Создайте объект DataWriter , указав выходной поток в конструкторе DataWriter .

Свойства

BaudRate

Возвращает или задает скорость передачи данных.

BreakSignalState

Получает или задает состояние сигнала разрыва.

BytesReceived

Представляет количество байтов, полученных последней операцией чтения входного потока.

CarrierDetectState

Возвращает состояние строки Определения оператора (CD).

ClearToSendState

Возвращает состояние строки очистки и отправки (CTS).

DataBits

Число битов данных в каждом символьном значении, которое передается или получено, и не включает биты четности или стоп-биты.

DataSetReadyState

Получает или задает состояние сигнала готовности данных (DSR).

Handshake

Возвращает или задает протокол подтверждения для управления потоком.

InputStream

Входной поток, содержащий данные, полученные через последовательный порт.

IsDataTerminalReadyEnabled

Возвращает или задает значение, которое включает сигнал готовности терминала данных (DTR).

IsRequestToSendEnabled

Возвращает или задает значение, которое включает сигнал запроса на отправку (RTS).

OutputStream

Возвращает выходной поток, в который приложение может записывать данные для передачи через последовательный порт.

Parity

Возвращает или задает бит четности для проверки ошибок.

PortName

Возвращает имя порта для последовательных подключений.

ReadTimeout

Возвращает или задает значение времени ожидания для операции чтения.

StopBits

Возвращает или задает стандартное число стоп-битов на байт.

UsbProductId

Возвращает поле idProductдескриптора USB-устройства. Это значение указывает идентификатор продукта для конкретного устройства и назначается производителем.

UsbVendorId

Возвращает поле idVendorдескриптора USB-устройства. Значение указывает идентификатор поставщика устройства, назначенный комитетом по спецификациям USB.

WriteTimeout

Возвращает или задает значение времени ожидания для операции записи.

Методы

Close()

Освобождает ссылку на объект SerialDevice , который был ранее получен путем вызова Метода FromIdAsync.

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

FromIdAsync(String)

Запускает асинхронную операцию, которая создает объект SerialDevice .

GetDeviceSelector()

Возвращает строку расширенного синтаксиса запросов (AQS), которую приложение может передать в DeviceInformation.FindAllAsync для поиска всех последовательных устройств в системе.

GetDeviceSelector(String)

Возвращает строку расширенного синтаксиса запросов (AQS), которую приложение может передать в DeviceInformation.FindAllAsync , чтобы найти последовательное устройство, указав его имя порта.

GetDeviceSelectorFromUsbVidPid(UInt16, UInt16)

Получает строку расширенного синтаксиса запросов (AQS), которую приложение может передать в DeviceInformation.FindAllAsync , чтобы найти определенное устройство с последовательным подключением к USB, указав его VID и PID.

События

ErrorReceived

Обработчик событий, который вызывается при возникновении ошибки на последовательном порту.

PinChanged

Обработчик событий, вызываемый при изменении состояния сигнала или строки на последовательном порту.

Применяется к

См. также раздел