このエラーが発生しています...
セマフォのタイムアウト期間が終了しました。
この行で...
ThePorts.ActivePort1.Open();
...しかし、私は時々それを取得します。それが起こるとき、それは何度も何度も起こります。その後、問題は数時間または数日間消え、その後再び発生します。
シリアルポートは、BlueToothが接続されたUSBです。
この男は非常に似た問題を抱えていたと思いますが、C#ではそうではありません
SerialPort.Open/DeviceIoControl/GetcommState on usbser.sysでフリーズ
私が推測できる限りでは、彼の問題全体、結果のコメント、および回答を読みましたが、どれが彼の問題を修正したのか、C#が彼が経験していたものと大きく異なるのか、本当に分かりません。
無知のための助けをありがとう。これが実際のコードです。
public static void Open_ActivePortWeWillUse(String Drone_StringNameFromUser)
{
SerialPort TempSerialPort = new SerialPort(Drone_StringNameFromUser, (int) SerialPortSpeed);
ThePorts.ActivePort1 = TempSerialPort;
ThePorts.ActivePort1.DataBits = 8;
ThePorts.ActivePort1.Parity = Parity.None;
ThePorts.ActivePort1.StopBits = StopBits.One;
ThePorts.ActivePort1.DataReceived += new SerialDataReceivedEventHandler(OurBackGroundSerialPortReceiver);
ThePorts.ActivePort1.Open(); // "Sometimes" Error hits here
}
このエラーは、ネットワーク遅延またはインターネットまたはローカルネットワークの問題がある場合にも表示される可能性があります。障害のある対応物があるブリッジ接続も同様に原因である可能性があります。
さて、セマフォのタイムアウト問題なしで接続しています。
読んでいる人が同じことを経験したことがあるなら、この手順があなたに役立つことを願っています。しかし、約束はありません。ちょっと、それは窓です。
私の場合、これはWindows 7でした
このページ on eHow;から少しヒントを得ました。それが誰かを助けるかどうかわからない。
とにかく、これは私のために働いたシンプルな23ステップの手順でした
スタートボタンをクリックしてください
コントロールパネルを選択
コントロールパネルから、デバイスマネージャーを選択します
デバイスマネージャーから、ユニバーサルシリアルバスコントローラーを選択します
ユニバーサルシリアルバスコントローラーから、小さな横向きの三角形をクリックします
コンピューターに何が表示されるかは予測できませんが、私の場合は長いドロップダウンリストが表示されます
このリストのこれらのメンバーのどれが犯人であるかを把握するために調査を開始してください...
ドロップダウンリストの各メンバーで、名前を右クリックします
リストが開き、プロパティを選択します
推測時間:表示されるウィンドウの上部近くにあるさまざまなタブを使用して、これがセマフォタイムアウトでデータを詰まらせているUSBアダプタドライバかどうかを推測します。
適切に推測したら、[USBルートハブプロパティ]ウィンドウを閉じます(ただし、[デバイスマネージャー]ウィンドウは開いたままにします)。
そのUSBハブから物理的にあらゆるものを切り離します。
プラグを抜きます。
前に特定したリスト内のそのUSBルートハブにマウスポインターを戻します。
もう一度右クリック
アンインストールを選択
Windowsに任せる
ちょっと待って
時間があれば、コンピューター全体の電源を切ります。これが必要だと言う人もいます。私はそれなしで逃げたと思います。
USBハブをPCのUSBコネクタに接続します
デバイスマネージャのリストが点滅し、いくつかのフラッシュバルブを実行する場合は、問題ありません。
BlueToothコネクターをUSBハブに差し込みます
ウィンドウにもう少しやらせてください
2分以内に、セマフォのタイムアウトなしで、COMポートが再び機能するようになりました。
同様の問題を抱えている可能性のある他の人に役立つことを願っています。
Arduino Leonardoと通信するときに、2台の異なるWindowsコンピューターでもこの問題が発生しました。信頼できるソリューションは次のとおりです。
残念ながら、この機能が何をするのか、またはこの問題にどのように影響するのかはわかりません。数回のPCの再起動と数十のデバイス接続サイクルの後、これが問題を確実に修正した唯一のものです。
一度にすべての大きなファイルが多すぎます。 Windows barfs。基本的に、コンピューターに多くの情報を要求し、ファイルのロックが長すぎるためにフラグをオフに設定したため、コピーに時間がかかりすぎました。フラグはセマフォエラーです。
コンピューターはそれ自体を詰め込み、それを詰まらせました。ここでRAMメモリがRAM内のキャッシュで徐々に満たされるのを見ました。その後、サブシステムがセマフォエラーで停止するまでいっぱいになりました。
回避策があります。 1つの巨大なブロックではなく、より少ないファイルをコピーまたは転送します。それをブロックのセットに分解し、一度に1つずつ、多分一度にいくつかのファイルを送信しますが、大量に送信することはありません。
参照:
https://appuals.com/how-to-fix-the-semaphore-timeout-period-has-expired-0x80070079/