다음을 통해 공유


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
    }
}

설명

클래스를 사용 SerialDevice 하려면 직렬 디바이스 기능인 serialCommunication가 필요합니다. 자세한 내용은 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 . 예외를 throw하거나 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(Carrier Detect) 줄의 상태를 가져옵니다.

ClearToSendState

CTS(Clear-to-Send) 줄의 상태를 가져옵니다.

DataBits

전송되거나 수신되며 패리티 비트 또는 중지 비트를 포함하지 않는 각 문자 값의 데이터 비트 수입니다.

DataSetReadyState

DSR(Data Set Ready) 신호의 상태를 가져옵니다.

Handshake

흐름 제어에 대한 핸드셰이크 프로토콜을 가져오거나 설정합니다.

InputStream

직렬 포트에서 받은 데이터를 포함하는 입력 스트림입니다.

IsDataTerminalReadyEnabled

DTR(데이터 터미널 준비) 신호를 사용하도록 설정하는 값을 가져오거나 설정합니다.

IsRequestToSendEnabled

RTS(보내기 요청) 신호를 사용하도록 설정하는 값을 가져오거나 설정합니다.

OutputStream

앱이 직렬 포트를 통해 전송할 데이터를 쓸 수 있는 출력 스트림을 가져옵니다.

Parity

오류 검사에 대한 패리티 비트를 가져오거나 설정합니다.

PortName

직렬 통신의 포트 이름을 가져옵니다.

ReadTimeout

읽기 작업의 제한 시간 값을 가져오거나 설정합니다.

StopBits

바이트당 표준 중지 비트 수를 가져오거나 설정합니다.

UsbProductId

USB 디바이스 설명자의idProduct 필드를 가져옵니다. 이 값은 디바이스별 제품 식별자를 나타내며 제조업체에서 할당합니다.

UsbVendorId

USB 디바이스 설명자의idVendor 필드를 가져옵니다. 값은 USB 사양 위원회에서 할당한 디바이스의 공급업체 식별자를 나타냅니다.

WriteTimeout

쓰기 작업의 제한 시간 값을 가져오거나 설정합니다.

메서드

Close()

FromIdAsync를 호출하여 이전에 가져온 SerialDevice 개체에 대한 참조를 해제합니다.

Dispose()

관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.

FromIdAsync(String)

SerialDevice 개체를 만드는 비동기 작업을 시작합니다.

GetDeviceSelector()

시스템에서 모든 직렬 디바이스를 찾기 위해 앱이 DeviceInformation.FindAllAsync 에 전달할 수 있는 AQS(고급 쿼리 구문) 문자열을 가져옵니다.

GetDeviceSelector(String)

포트 이름을 지정하여 직렬 디바이스를 찾기 위해 앱 이 DeviceInformation.FindAllAsync 에 전달할 수 있는 AQS(고급 쿼리 구문) 문자열을 가져옵니다.

GetDeviceSelectorFromUsbVidPid(UInt16, UInt16)

VID 및 PID를 지정하여 특정 직렬-USB 디바이스를 찾기 위해 앱 이 DeviceInformation.FindAllAsync 에 전달할 수 있는 AQS(고급 쿼리 구문) 문자열을 가져옵니다.

이벤트

ErrorReceived

직렬 포트에서 오류가 발생할 때 호출되는 이벤트 처리기입니다.

PinChanged

직렬 포트에서 신호 또는 선의 상태가 변경될 때 호출되는 이벤트 처리기입니다.

적용 대상

추가 정보