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
- Наследование
- Атрибуты
- Реализации
Требования к 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
- Создайте строку расширенного синтаксиса запросов (AQS), содержащую условия поиска для поиска устройства в перечисленной коллекции устройств. Если у вас есть идентификаторы поставщика и продукта, вызовите Метод GetDeviceSelectorFromUsbVidPid.
- Передайте полученную строку в FindAllAsync. Вызов извлекает объект DeviceInformationCollection .
- Цикл по коллекции. Каждая итерация получает объект DeviceInformation .
- Возвращает значение свойства DeviceInformation.Id . Строковое значение — это путь к интерфейсу устройства. (например,
\\?\usb#vid_03eb&pid_2157&mi_01#7&1435ec7f&0&0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
). - Вызовите Метод FromIdAsync , передав строку интерфейса устройства и получите
SerialDevice
объект . Если при этом возникает исключение или возвращается значение NULL, скорее всего:- Недопустимый путь к интерфейсу устройства
- Путь к интерфейсу устройства не содержит повторного представления последовательного устройства
- В приложении отсутствует
serialCommunication
возможность - Серийное устройство недоступно. (см . Windows.Devices.SerialCommunication)
Чтение и запись данных
Затем можно использовать объект SerialDevice для чтения данных из последовательного порта или записи в нее с помощью пространства имен Windows.Storage.Streams .
- Получите ссылку на входной поток, получив свойство SerialDevice.InputStream .
- Создайте объект DataReader , указав входной поток в конструкторе DataReader .
- Получите ссылку на выходной поток, получив свойство SerialDevice.OutputStream .
- Создайте объект 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 |
Обработчик событий, вызываемый при изменении состояния сигнала или строки на последовательном порту. |