SerialDevice Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa uma porta serial. O objeto fornece métodos e propriedades que um aplicativo pode usar para localizar e interagir com portas seriais no sistema.
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
- Herança
- Atributos
- Implementações
Requisitos do Windows
Família de dispositivos |
Windows 10 (introduzida na 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
|
Exemplos
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
}
}
Comentários
A funcionalidade do dispositivo serial, serialCommunication
, é necessária para usar a SerialDevice
classe . Para obter mais informações, consulte Windows.Devices.SerialCommunication.
Criar um objeto SerialDevice
- Gere uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada) que contém critérios de pesquisa para localizar o dispositivo na coleção de dispositivos enumerados. Se você tiver os identificadores de fornecedor e produto, chame GetDeviceSelectorFromUsbVidPid.
- Passe a cadeia de caracteres recuperada para FindAllAsync. A chamada recupera um objeto DeviceInformationCollection .
- Execute um loop pela coleção. Cada iteração obtém um objeto DeviceInformation .
- Obtenha o valor da propriedade DeviceInformation.Id . O valor da cadeia de caracteres é o caminho da interface do dispositivo. (por exemplo
\\?\usb#vid_03eb&pid_2157&mi_01#7&1435ec7f&0&0001#{86e0d1e0-8089-11d0-9ce4-08003e301f73}
, ). - Chame FromIdAsync passando a cadeia de caracteres da interface do dispositivo e obtenha o
SerialDevice
objeto . Se isso gerar uma exceção ou retornar nulo, provavelmente será:- O caminho da interface do dispositivo é inválido
- O caminho da interface do dispositivo não representa novamente um dispositivo serial
- O aplicativo não tem a
serialCommunication
funcionalidade - O dispositivo serial está inacessível. (consulte Windows.Devices.SerialCommunication)
Dados de leitura e gravação
Em seguida, você pode usar o objeto SerialDevice para ler ou gravar na porta serial usando o namespace Windows.Storage.Streams .
- Obtenha uma referência ao fluxo de entrada obtendo a propriedade SerialDevice.InputStream .
- Crie um objeto DataReader especificando o fluxo de entrada no construtor DataReader .
- Obtenha uma referência ao fluxo de saída obtendo a propriedade SerialDevice.OutputStream .
- Crie um objeto DataWriter especificando o fluxo de saída no construtor DataWriter .
Propriedades
BaudRate |
Obtém ou define a taxa de baud. |
BreakSignalState |
Obtém ou define o estado do sinal de interrupção. |
BytesReceived |
Representa o número de bytes recebidos pela última operação de leitura do fluxo de entrada. |
CarrierDetectState |
Obtém o estado da linha de CD (Detecção de Operadora). |
ClearToSendState |
Obtém o estado da linha CTS (Limpar para Enviar). |
DataBits |
O número de bits de dados em cada valor de caractere transmitido ou recebido e não inclui bits de paridade ou bits de parada. |
DataSetReadyState |
Obtém o estado do sinal DSR (Data Set Ready). |
Handshake |
Obtém ou define o protocolo de handshaking para o controle de fluxo. |
InputStream |
Fluxo de entrada que contém os dados recebidos na porta serial. |
IsDataTerminalReadyEnabled |
Obtém ou define um valor que habilita o sinal DTR (Pronto para Terminal de Dados). |
IsRequestToSendEnabled |
Obtém ou define um valor que habilita o sinal RTS (Solicitação de Envio). |
OutputStream |
Obtém um fluxo de saída para o qual o aplicativo pode gravar dados para transmitir pela porta serial. |
Parity |
Obtém ou define o bit de paridade para verificação de erros. |
PortName |
Obtém o nome da porta para comunicações seriais. |
ReadTimeout |
Obtém ou define o valor de tempo limite para uma operação de leitura. |
StopBits |
Obtém ou define o número padrão de bits de parada por byte. |
UsbProductId |
Obtém o campo idProduct do descritor de dispositivo USB. Esse valor indica o identificador de produto específico do dispositivo e é atribuído pelo fabricante. |
UsbVendorId |
Obtém o campo idVendor do descritor de dispositivo USB. O valor indica o identificador do fornecedor para o dispositivo conforme atribuído pelo comitê de especificação USB. |
WriteTimeout |
Obtém ou define o valor de tempo limite para uma operação de gravação. |
Métodos
Close() |
Libera a referência ao objeto SerialDevice que foi obtido anteriormente chamando FromIdAsync. |
Dispose() |
Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados. |
FromIdAsync(String) |
Inicia uma operação assíncrona que cria um objeto SerialDevice . |
GetDeviceSelector() |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada) que o aplicativo pode passar para DeviceInformation.FindAllAsync para localizar todos os dispositivos seriais no sistema. |
GetDeviceSelector(String) |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada) que o aplicativo pode passar para DeviceInformation.FindAllAsync para localizar um dispositivo serial especificando o nome da porta. |
GetDeviceSelectorFromUsbVidPid(UInt16, UInt16) |
Obtém uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada) que o aplicativo pode passar para DeviceInformation.FindAllAsync para localizar um dispositivo serial para USB específico especificando sua VID e PID. |
Eventos
ErrorReceived |
Manipulador de eventos que é invocado quando ocorre um erro na porta serial. |
PinChanged |
Manipulador de eventos que é invocado quando o estado de um sinal ou linha é alterado na porta serial. |