rs232を使用して温度コントローラからデータを取得する必要があります。 コントローラは、各完全コマンドの最後に、すべての文字に対してエコーを送信します。これは、 '§'と '。'を返します。コマンドが正常に適用されたかどうか。私のテストコードは次のようになります。C#SerialPortバッファ内に複数の改行があるReadline
static string GetData(int memoryAddress)
{
if (!_session.IsOpen)
return "No Connection";
string toSend = "*A_r_" + memoryAddress.ToString() + "_0" + (char)21;
foreach (char character in toSend)
_session.Write(character.ToString());
Thread.Sleep(100);
return _session.ReadExisting();
}
と、このようなものを返す:
*A_r_0_0§.250§
を今、私はまた、コントローラ内部のいくつかのデータを保存する必要があると上部を再利用したい利用することが可能です私は次の関数で(私はいろいろ書いを読むことを選択した場合に)返されたデータを読み取ることができるようにだけに
ReadNewline (with Newline-Symbol §)
は、エコーを取得し、それを確認しますか? どの値が最初に返されますか?最後に到着したものか最初に到着したものか?
Thread.sleep(100)の代わりにReadNewlineにタイムアウトを使用する方が良いでしょうか?
変更改行プロパティを使用すると良いです。 Sleep()を使用して問題を解決したり、ReadExisting()を避けたりしないでください。 ReadTo()を2回呼び出すだけで、最初にエコーを取得し、再度応答を取得する必要があります。実際にレスポンスを使用するかどうかは、あなた次第です。 –