"La période de temporisation du sémaphore a expiré" erreur de connexion USB

j'obtiens cette erreur...

la période de temporisation du sémaphore est Expirée.

sur cette ligne...

ThePorts.ActivePort1.Open ();

...mais je ne reçois de temps en temps. Quand il arrive, il arrive encore et encore. Le problème disparaît, pendant des heures ou des jours, puis il revient.

le port série est une USB avec un BlueTooth connecté.

je pense que ce type avait un problème très similaire, mais pas dans C#

Gel SerialPort.Open / DeviceIoControl / GetcommState avec usbser.sys

comme je peux le mieux estimer, j'ai lu tout son problème, et les commentaires qui en résultent, et la réponse, mais je ne peux vraiment pas comprendre qui a réglé son problème, ou si C# est significativement différent de ce qu'il était l'expérience.

Merci pour toute aide pour ceux qui n'en savent rien. C'est le code 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
}
30
demandé sur PatrikN 2012-12-22 06:07:48

3 réponses

OK, je me connecte maintenant sans problème de délai sémaphore.

si quelqu'un qui lit rencontre la même chose, j'espère que cette procédure fonctionne pour vous; mais pas de promesses; Hé, c'est windows.

dans mon cas, C'était Windows 7

j'ai eu un petit soupçon de Cette page sur eHow; pas sûr si cela peut aider quelqu'un ou pas.

donc, c'était la simple vingtaine procédure en trois étapes qui a fonctionné pour moi

  • cliquez sur le bouton Démarrer

  • Choisir Panneau De Configuration

  • à partir du Panneau de configuration, choisir le Gestionnaire de périphérique

  • de Device Manager, choisissez Universal Serial Bus Controllers

  • De La Part Des Contrôleurs Universels De Bus En Série, 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

  • commencer l'enquête pour déterminer lequel de ces membres de cette liste est le coupable...

    • sur chaque membre de la liste déroulante, droit-cliquez sur le nom

    • une liste s'ouvrira, choisissez Propriétés

    • temps D'attente: en utilisant les différents onglets près du haut de la fenêtre qui s'ouvre, faites une supposition si c'est le pilote USB adaptateur qui étouffe vos affaires avec des temps d'arrêt sémaphore

  • une fois que vous avez fait le bon choix, puis fermez la fenêtre des propriétés du noyau USB Root (mais laissez la fenêtre de gestionnaire de périphérique ouvrir.)

  • déconnecter physiquement n'importe quoi et tout de ce hub USB.

  • débranchez-le.

  • Retournez votre pointeur de souris à ce Hub USB dans la liste que vous avez identifié plus tôt.

  • clic droit à nouveau

  • Choisir Désinstallation

  • Laisser Windows faire sa chose

  • attendez un peu

  • éteignez tout l'ordinateur si vous avez le temps; certains disent que c'est nécessaire. Je pense que je suis parti sans elle.

  • branchez le hub USB de nouveau dans un connecteur USB sur le PC

  • si la liste dans le gestionnaire de périphérique clignote et fait quelques Flash-ampoules, c'est bon.

  • branchez le connecteur BlueTooth dans le hub USB

  • Laisser windows faire sa chose un peu plus

  • dans les deux minutes, j'ai eu un COM port de travail à nouveau, pas de temps mort sémaphore.

Espère que cela fonctionne pour n'importe qui d'autre qui a peut-être eu un problème similaire.

5
répondu User.1 2012-12-26 16:48:02

cette erreur peut également apparaître si vous avez des problèmes de latence du réseau ou d'internet ou de réseau local. Les raccords pontés qui ont une contrepartie défaillante peuvent aussi être le coupable.

5
répondu Rudy Hinojosa 2016-11-11 21:00:04

j'ai eu ce problème aussi bien sur deux ordinateurs Windows différents lors de la communication avec un Arduino Leonardo. La solution fiable était:

  • trouver le port COM dans device manager et ouvrir les propriétés de l'appareil.
  • ouvrez l'onglet" Port Settings " et cliquez sur le bouton advanced.
  • là, décocher la case" Utiliser des tampons FIFO (nécessaire UART 16550 compatible), et appuyez sur OK.

Malheureusement, je ne sais pas ce que cette fonctionnalité fait, ou comment elle affecte cette question. Après plusieurs redémarrages de PC et une douzaine de cycles de connexion d'appareils, c'est la seule chose qui a permis de régler le problème de manière fiable.

2
répondu Marcus10110 2017-04-29 22:08:11