SerialDevice 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
직렬 포트를 나타냅니다. 개체는 앱이 시스템에서 직렬 포트를 찾고 상호 작용하는 데 사용할 수 있는 메서드 및 속성을 제공합니다.
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
}
}
설명
클래스를 사용 SerialDevice
하려면 직렬 디바이스 기능인 serialCommunication
가 필요합니다. 자세한 내용은 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
. 예외를 throw하거나 null을 반환하는 경우 다음과 같습니다.- 디바이스 인터페이스 경로가 잘못되었습니다.
- 디바이스 인터페이스 경로가 직렬 디바이스를 다시 표시하지 않음
- 애플리케이션에
serialCommunication
기능이 없습니다. - 직렬 디바이스에 액세스할 수 없습니다. ( Windows.Devices.SerialCommunication 참조)
데이터 읽기 및 쓰기
그런 다음, SerialDevice 개체를 사용하여 Windows.Storage.Streams 네임스페이스를 사용하여 직렬 포트에서 읽거나 쓸 수 있습니다.
- SerialDevice.InputStream 속성을 가져와 입력 스트림에 대한 참조를 가져옵니다.
- DataReader 생성자에서 입력 스트림을 지정하여 DataReader 개체를 만듭니다.
- SerialDevice.OutputStream 속성을 가져와 출력 스트림에 대한 참조를 가져옵니다.
- 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 |
직렬 포트에서 신호 또는 선의 상태가 변경될 때 호출되는 이벤트 처리기입니다. |