Je reçois cette erreur ...
Le délai d'expiration du sémaphore a expiré.
Sur cette ligne ...
ThePorts.ActivePort1.Open ();
... mais je ne l'obtiens que de temps en temps. Quand cela se produit, cela se produit encore et encore. Ensuite, le problème disparaît, pendant des heures ou des jours, puis il revient.
Le port série est un port USB avec un BlueTooth connecté.
Je pense que ce gars avait un problème très similaire, mais pas en C #
Geler sur SerialPort.Open/DeviceIoControl/GetcommState avec usbser.sys
Autant que je puisse en juger, j’ai lu l’ensemble de son problème, ainsi que les commentaires qui en résultent, ainsi que la réponse, mais je ne sais vraiment pas lequel a résolu son problème, ni si C # est très différent de ce qu’il éprouvait.
Merci pour toute aide pour les désemparés. C'est le code réel où ça se passe.
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
}
Cette erreur peut également apparaître si vous rencontrez des problèmes de latence du réseau ou de problèmes liés à Internet ou au réseau local. Les connexions pontées dont la contrepartie est défaillante peuvent également en être la cause.
D'accord, je me connecte maintenant sans le problème de délai d'attente de sémaphore.
Si quelqu'un qui lit rencontre jamais la même chose, j'espère que cette procédure fonctionnera pour vous; mais pas de promesses; hé, ce sont les fenêtres.
Dans mon cas, c'était Windows 7
J'ai eu un petit indice de Cette page sur eHow; Je ne sais pas si cela pourrait aider quelqu'un ou non.
En tout cas, c’était la procédure simple en vingt-trois étapes qui fonctionnait pour moi
Cliquez sur le bouton de démarrage
Choisissez Panneau de configuration
Dans le Panneau de configuration, choisissez Gestionnaire de périphériques.
Dans le Gestionnaire de périphériques, choisissez Contrôleurs de bus universels
Depuis les contrôleurs de bus série universels, cliquez sur le petit triangle latéral
Je ne peux pas prédire ce que vous verrez sur votre ordinateur, mais sur le mien, je reçois une longue liste déroulante.
Commencez l’enquête pour déterminer lequel de ces membres de cette liste est le coupable ...
Sur chaque membre de la liste déroulante, cliquez avec le bouton droit sur le nom.
Une liste s'ouvrira, choisissez Propriétés
Temps de devinette: en utilisant les différents onglets situés près du haut de la fenêtre résultante qui s'ouvre, essayez de deviner s'il s'agit du pilote de l'adaptateur USB qui étouffe vos données avec des délais d'attente de sémaphore
Une fois que vous avez fait votre choix, fermez la fenêtre Propriétés du concentrateur racine USB (mais laissez la fenêtre du Gestionnaire de périphériques ouverte).
Débranchez physiquement tout ce qui se trouve sur ce concentrateur USB.
Débranchez-le.
Ramenez le pointeur de la souris sur le concentrateur USB racine dans la liste identifiée précédemment.
Faites un nouveau clic droit
Choisissez désinstaller
Laisse Windows faire son travail
Attends un peu
Éteignez tout l'ordinateur si vous en avez le temps; Certains disent que c'est nécessaire. Je pense que je me suis enfui sans elle.
Rebranchez le hub USB dans un connecteur USB du PC.
Si la liste dans le gestionnaire de périphériques clignote et fait quelques flashes, c'est bon.
Rebranchez le connecteur BlueTooth dans le concentrateur USB.
Laissez les fenêtres agir un peu plus
En moins de deux minutes, je disposais de nouveau d’un port COM opérationnel, sans délai d’expiration du sémaphore.
J'espère que cela fonctionne pour quiconque ayant un problème similaire.
J'ai eu ce problème aussi sur deux ordinateurs Windows différents lors de la communication avec un Arduino Leonardo. La solution fiable était:
Malheureusement, je ne sais pas ce que cette fonctionnalité fait ou comment elle affecte ce problème. Après plusieurs redémarrages de l’ordinateur et une douzaine de cycles de connexion d’appareils, c’est la seule solution au problème.
Trop de gros fichiers en une fois. Barfs Windows. Essentiellement, la copie a pris trop de temps parce que vous avez demandé trop d’ordinateur et que le verrouillage du fichier a été verrouillé trop longtemps et que vous avez activé un indicateur, ce dernier est une erreur de sémaphore.
L'ordinateur s'est bourré et étouffé. J'ai vu la mémoire RAM ici se remplir progressivement avec un cache dans la RAM. Ensuite, lorsque le sous-système est rempli, le sol est bloqué avec une erreur de sémaphore.
J'ai une solution de contournement; copier ou transférer moins de fichiers, pas un seul bloc. Découpez-le en ensembles de blocs et envoyez les fichiers un par un, peut-être plusieurs à la fois, mais jamais le lot.
Les références:
https://appuals.com/how-to-fix-the-semaphore-timeout-period-has-expired-0x80070079/