0

Visual Studio C#でプロジェクトに取り組んでいます。

シリアルポート経由でPCに接続されたデバイスからデータを収集しています。まず、リクエストコマンドを送信し、応答を待ちます。リクエストコマンドを送信した後、デバイスが応答するまでに1秒の遅延があります。物事は、デバイスに到達しない可能性があり、時々応答しない可能性があります。応答(ある場合)を待機し、次のデータ要求コマンドを早期に送信しないようにするために、System.Threading.Threadメソッドによって遅延を作成します。

私の質問は、その遅延時間を長くすると、シリアルポートのデータ受信が失われるのでしょうか。

私が使用する遅延関数は次のとおりです。

    private void Delay(byte WaitMiliSec)
    {
        // WaitTime here is increased by a WaitTimer ticking at every 100msec

        WaitTime = 0;
        while (WaitTime < WaitMiliSec)
        {
            System.Threading.Thread.Sleep(25);
            Application.DoEvents();
        }
    }
4

1 に答える 1

2

いいえ-データを失うことはありません-シリアルポートには、アプリケーションにまったく依存しない独自のバッファーがあります。OS とハードウェアがこれを処理します。

データの送受信を独自のタスク/スレッドにリファクタリングすることをお勧めします。そうすれば、Application.DoEvents();

送信/受信コードをさらに投稿していただければ、私がお手伝いできるかもしれません。

PS: あなたのコードはとにかく動作しないようです (WaitTime は常にゼロです) が、それは単なるスニペットだと思いますか?

于 2011-09-09T17:59:07.110 に答える