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 取得します。 これが例外をスローするか、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

Carrier Detect (CD) 行の状態を取得します。

ClearToSendState

Clear-to-Send (CTS) 行の状態を取得します。

DataBits

送受信される各文字値のデータ ビット数。パリティ ビットまたはストップ ビットは含まれません。

DataSetReadyState

DSR (Data Set Ready) シグナルの状態を取得します。

Handshake

フロー制御のハンドシェーク プロトコルを取得または設定します。

InputStream

シリアル ポートで受信したデータを含む入力ストリーム。

IsDataTerminalReadyEnabled

Data Terminal Ready (DTR) シグナルを有効にする値を取得または設定します。

IsRequestToSendEnabled

Request to Send (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

シリアル ポートでシグナルまたは回線の状態が変化したときに呼び出されるイベント ハンドラー。

適用対象

こちらもご覧ください