9

最近、SerialPort クラスを頻繁に使用しています。現在、アプリケーションが使用する通信ポートにデバイスが接続されているかどうかを確認する適切な方法を見つけようとしています。デバイスが通信ポートに接続されているかどうかを確認する適切な方法はありますか? 私の現在の方法は次のとおりです。

            while (isReading == true)
            {
                try
                {
                    received += serialPort.ReadExisting();

                    if (received.Contains('>'))
                        isReading = false;
                }
                catch (Exception e)
                {

                }
                if (tick == 10000)
                    if (received == "")
                    {
                        Console.WriteLine("No Data Received. Device isn't connected.");
                        isReading = false;
                    }
                tick++;
            }
            Console.WriteLine(received);

動作しますが、少しハックで信頼性が低いと感じています。必要に応じて保管できますが、これに代わる適切な方法があれば、保管したいと思います。

編集:信頼性を確保するために、実際にはティック値を約10,000に設定する必要があります。そうしないと、時々データを受信できません。1000 や 5000 に設定しても信頼できません。それでも、複数のマシンで信頼できるとは限りません。

4

3 に答える 3

4

残念ながら、シリアル ポートでは、特定のデバイスが接続されているかどうかを判断する適切な方法がありません。あなたのデバイスだけが正しく応答する魔法のメッセージを書くこともできますが、この回答で説明されているように、この方法は接続されている他のデバイスに問題を引き起こす可能性があります。

最終的には、ユーザーが正しいポートを選択することに依存する必要があります。

また、たまたまデバイスへの接続が失われた場合、読み取り/書き込みに失敗したときにのみわかります。この場合、単に LostConnection イベントをスローします。

于 2013-07-11T14:41:08.660 に答える