Compartilhar via


SerialDevice Classe

Definição

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
Object Platform::Object IInspectable SerialDevice
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

  1. 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.
  2. Passe a cadeia de caracteres recuperada para FindAllAsync. A chamada recupera um objeto DeviceInformationCollection .
  3. Execute um loop pela coleção. Cada iteração obtém um objeto DeviceInformation .
  4. 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}, ).
  5. 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 .

  1. Obtenha uma referência ao fluxo de entrada obtendo a propriedade SerialDevice.InputStream .
  2. Crie um objeto DataReader especificando o fluxo de entrada no construtor DataReader .
  3. Obtenha uma referência ao fluxo de saída obtendo a propriedade SerialDevice.OutputStream .
  4. 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.

Aplica-se a

Confira também