この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

SerialPort.ReadLine メソッド ()

 

公開日: 2016年10月

入力バッファー内の NewLine 値まで読み取ります。

名前空間:   System.IO.Ports
アセンブリ:  System (System.dll 内)

public string ReadLine()

戻り値

Type: System.String

NewLine 値が最初に出現するまでの入力バッファーの内容。

Exception Condition
InvalidOperationException

指定したポートは開かれていません。

TimeoutException

タイムアウト期間が終了する前に、操作は完了しませんでした。

または

バイトが読み取られませんでした。

このメソッドは返しません中に注意してください、 NewLine 値、 NewLine 値が入力バッファーから削除します。

既定では、 ReadLine メソッドは、行を受信するまでブロックします。 この動作が望ましい場合は、設定、 ReadTimeout プロパティを強制的に、0 以外の値を ReadLine をスローするメソッド、 TimeoutException ポートでは、行が使用できない場合。

テキストを読むと、バイナリ データを読み取り、ストリームから間を切り替える必要がある場合は、慎重にテキストとバイナリ データを手動でバイトを読み取り、データのデコードなどの境界を定義するプロトコルを選択します。

System_CAPS_noteメモ

SerialPort クラスは、データをバッファーし、に、ストリームが含まれている、 BaseStream プロパティは、2 つまでのバイト数が読み取り可能の競合する可能性があります。 BytesToRead は読み取るには、バイトがありますが、これらのバイトに含まれているストリームにアクセスできない可能性がプロパティを示すことができます、 BaseStream プロパティにバッファリングされるされているため、 SerialPort クラスです。

次のコード例では、使用、 SerialPort ヌル モデム ケーブルで接続されている 2 つの別々 のコンピューターからのチャットを行う 2 人のユーザーを許可するクラス。 このコード例が示されている例のコードの一部は、 SerialPort クラスです。

public static void Main()
{
    string name;
    string message;
    StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
    Thread readThread = new Thread(Read);

    // Create a new SerialPort object with default settings.
    _serialPort = new SerialPort();

    // Allow the user to set the appropriate properties.
    _serialPort.PortName = SetPortName(_serialPort.PortName);
    _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
    _serialPort.Parity = SetPortParity(_serialPort.Parity);
    _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
    _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
    _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);

    // Set the read/write timeouts
    _serialPort.ReadTimeout = 500;
    _serialPort.WriteTimeout = 500;

    _serialPort.Open();
    _continue = true;
    readThread.Start();

    Console.Write("Name: ");
    name = Console.ReadLine();

    Console.WriteLine("Type QUIT to exit");

    while (_continue)
    {
        message = Console.ReadLine();

        if (stringComparer.Equals("quit", message))
        {
            _continue = false;
        }
        else
        {
            _serialPort.WriteLine(
                String.Format("<{0}>: {1}", name, message));
        }
    }

    readThread.Join();
    _serialPort.Close();
}

public static void Read()
{
    while (_continue)
    {
        try
        {
            string message = _serialPort.ReadLine();
            Console.WriteLine(message);
        }
        catch (TimeoutException) { }
    }
}

.NET Framework
2.0 以降で使用可能
トップに戻る
表示: