1

StreamWriter.WriteLine を使用して書き込むと、CRLF が文字列に追加されて (SerialPort に) 送信されます。

以下のようなデータで StreamReader.ReadLine を使用して同じ C# プログラムで文字列を読み取ると、(char) で表される CRLF ではなく、最初の (char)13.ToString() で表される最初の CR までしか読み取れません。 13.ToString() + (char)10.ToString() の組み合わせ。

string messageHeader = ((char)2).ToString() + 
      @"1H|\^&|REMISOL|P|1|20010212161505SS" + 
      ((char)13).ToString() + 
      ((char)3).ToString() + 
      "E5" + 
      ((char)13).ToString() + 
      ((char)10).ToString();

最後にあるCRLFブロックまで読み取って、CRで停止しないようにするにはどうすればよいですか?

ありがとう。

4

3 に答える 3

4

StreamReader.ReadLine のドキュメント ノート: 行は、一連の文字の後にライン フィード ("\n")、キャリッジ リターン ("\r")、またはキャリッジ リターンの直後にライン フィード ("\r") が続くものとして定義されます。 \n")

\r\n に手動で遭遇するまで、Read and read を使用する必要があります。

于 2010-01-25T18:38:21.287 に答える
1

StreamReader.ReadLine()次の CR、LF、または CRLF まで読み取りますが、次の CR、LF、または CRLF は含まれません。サンプルコードで試してみたところ、2行が返され、末尾のCRLFまで読み取られ、含まれていません。これが表示されていない場合はStreamReader、問題が発生しているため、問題を再現する完全なコードを提示する必要があります。

これはあなたが見ているものであり、あなたが望んでいるものではありませんか? 問題をより詳細に説明する必要があります.

于 2010-01-25T19:01:01.110 に答える
0

SerialPort クラスを使用している場合は、 NewLine プロパティを必要なものに手動で設定できます (ただし、デフォルトでは LF (char 10) です)。

于 2010-01-25T18:45:45.840 に答える