IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Utilisation TComPort et convertisseur USB/Série


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut Utilisation TComPort et convertisseur USB/Série
    Bonjour,

    Voilà mon problème (qui commence à durer) et pour lequel je ne trouve pas de solution.

    Mon programme communique (bidirectionnel) avec des appareils via des ports COM (RS232), pour cela j'utilise simplement le composant TComPort. Seulement voilà sur plusieurs postes mon programme s'arrête de fonctionner aléatoirement. Si je "log" les erreurs je m'aperçois que l'erreur est la suivante :

    "Exception "EComPort" lors de l'appel à "Cpt_DrvCom.write", message = WriteFile function failed (win error code: 5)!!!!"

    En fait en recherchant plus longuement (j'en ai eu le temps) les erreurs sont diverses mais le résultat est le même : plus de communication entre l'appareil et mon programme.

    De temps en temps je récupère d'abord un code d'erreur 31 ("ERROR_GEN_FAILURE" = "A device attached to the system is not functioning") puis ensuite des codes erreur = 5 (ERROR_ACCESS_DENIED).

    Le problème est que si je redémarre mon programme, j'obtient toujours la même erreur = 5 (ERROR_ACCESS_DENIED) lorsque j'essai d'ouvrir le port COM. J'ai essayé de débrancher/rebrancher physiquement le port com (puisqu'il s'agit d'un convertisseur sur USB) mais cela ne règle pas le problème, il faut redémarrer l'ordinateur pour que le port COM devienne fonctionnel à nouveau.

    J'ai essayé avec deux modèles différents de convertisseur USB/RS232, un modèle isolé optiquement (Optobridge) et un modèle non isolé plus classique : et j'ai le problème sur les deux !! A noter que sur le modèle non isolé le fait de débrancher/rebrancher le convertisseur semble régler le problème, pas besoin de rebooter la machine).

    Pour l'instant je n'ai pas assez de recul mais il semblerait que le problème ne se produit pas si je me branche directement sur un port COM intégré à l'unité centrale, mais cela n'est pas une solution car l'unité centrale n'a pas suffisament de port COM disponible et surtout il faut que ceux-ci soient isolés optiquement, ce qui n'est pas le cas des ports COM standards des PCs.

    Ma question est : Qu'est-ce qui cause ce problème ? Est-ce un mauvais drivers USB ? un processus qui arriverait à me prendre le port COM (alors que je suis en train de communiquer dessus, cela me semble peu probable) ? Une incompatibilité matérielle (mais là encore bizarre car j'ai le même symptôme avec deux modèles différents). Je suis un peu perdu, j'ai tenté de monitorer les événements sur le port COM avec un logiciel spécifique mais pour le moment je n'ai pas réussi à le faire au moment où l'erreur a lieu, car celle-ci ne se manifeste pas régulièrement (tantôt plusieurs fois par jour, tantôt une fois en 2 ou 3 jours).

    Merci d'avance pour quiconque pourra m'aider !

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Un test à effectuer serait de mettre un hub usb (alimentation externe). Pour être sûr de l'alimentation du port.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    J'ai vraiment pas moyen de faire ce test dans l'immédiat, mais pour un simple convertisseur USB/Série ça m'étonne que l'alimentation puisse être faiblarde, surtout qu'il s'agit d'UCs et pas de portables, qu'on a le problème sur toutes les UCs de ce type et sur 2 types de convertisseurs différents.

    Dans le cas d'une alimentation insuffisante il me semblait que Windows affichait un message en conséquence, non ?

    Merci en tout cas pour ta participation :-) !

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    L'alimentation n'est peut-être pas la bonne explication, mais on avait eu le problème (windows ne reconnaissait plus le port com au bout d'un temps aléatoire) chez un client, (je ne connais pas la marque des adaptateurs, il les avaient fourni), et on l'a résolu par un hub usb auto-alimenté.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse.
    Vous avez mis combien de temps à trouver le problème juste par curiosité ?
    Moi je log tout ce qui se passe avec "PortMon" et au bout d'un moment sur une écriture dans le port COM j'obtiens le résultat "0xc0000001" (STATUS_UNSUCCESSFULL), ensuite toutes les commandes envoyées au port COM retournent "DELETE_PEND".... je ne sais pas trop quoi penser pour le moment, on dirait bien un problème hardware quand même, pourtant ces convertisseurs fonctionnent sans problème sur beaucoup d'autres machines... en plus on le problème avec deux modèles différents, étonnant...

    Je continue mes recherches sur ce qui peut causer cette erreur (STATUS_UNSUCCESSFULL).

  6. #6
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Rapidement (moins d'une semaine, pas le choix enregistrement de machines temps réel, avec watchdog, si le port com plante, la machine sarrête) mais on l'a fait au feeling.

    Une solution intéressante techniquement aussi est un serveur de port série (mais bon d'autres contraintes se posent).
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Linkin Voir le message
    Rapidement (moins d'une semaine, pas le choix enregistrement de machines temps réel, avec watchdog, si le port com plante, la machine sarrête) mais on l'a fait au feeling.

    Une solution intéressante techniquement aussi est un serveur de port série (mais bon d'autres contraintes se posent).

    Te rappeles-tu si les ports COM disparaissaient du gestionnaire de périphériques ? Moi ce n'est pas le cas, et par moment (rarement) le port COM redevient fonctionnel tout seul, vraiment bizarre

  8. #8
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    J'ai dit une bétise, ça n'avait pas réglé le problème.

    Je recherche dans nos informations ce que l'on a. (le suivi des incidents était assez rudimentaire à l'époque, il y a 3 ans).
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  9. #9
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    La seule solution qui avait été trouvée était de rajouter des cartes série (2 ou 4 ports) pci.

    C'est ça qui avait résolu le problème.

    Pour la disparition dans le gestionnaire de périphériques, je n'ai pas d'informations sûres, ce ne sont que des souvenirs, il me semble que ça disparaissainet des fois et des fois non.

    Par contre le redémarrage du pc réglait le problème.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Linkin Voir le message
    La seule solution qui avait été trouvée était de rajouter des cartes série (2 ou 4 ports) pci.

    C'est ça qui avait résolu le problème.

    Pour la disparition dans le gestionnaire de périphériques, je n'ai pas d'informations sûres, ce ne sont que des souvenirs, il me semble que ça disparaissainet des fois et des fois non.

    Par contre le redémarrage du pc réglait le problème.
    Ce que tu me dis ne me rassure pas, le hub alimenté n'avait donc pas réglé les problèmes. Cela dit même si cela réglait le problème j'aimerai bien comprendre ce qui cause ce dysfonctionnement afin d'agir réellement à la source, mais au train où vont les choses j'ai peur que cela prenne vraiment beaucoup de temps.
    Les PCs sont d'ores et déjà équipés de cartes PCI avec des ports COM additionnels (on va dire que le service info a anticipé un risque avec les convertisseurs, ce qui nous met d'ailleurs dans une position un peu délicate). Mais tout de même les convertisseurs non isolés n'ont jamais posés de problème ailleurs, je me demande vraiment ce qui peut poser le problème ici. Jj'ai tenté de désactivé d'ailleurs les ports COM de la carte PCI afin de voir si cela règle ou non le problème. Je ne vais tout de même pas désinstaller tous les softs et les drivers qu'on utilise pas (c'est surtout compliqué dans mon contexte de test).... Pour l'instant j'en suis toujours au point de ce retour "STATUS_UNSUCESSFUL" dont je ne comprend pas la cause.

    J'aimerai vraiment éviter de changer le matos (surtout qu'on doit mettre une isolation, donc on devra les rajouter sur les ports COM en PCI) sans savoir pour quelle raison ça ne fonctionne pas, c'est surtout qu'après ça je ne pourrai plus être sûr que tel ou tel matos va fonctionner...


    Merci en tout cas pour ton aide.

  11. #11
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    J'ai bien compris ton problème.

    On n'a pas cherché d'où venait vraiment le problème, vu que ça bloquait une production, on est passé directement vers la solution que nous validons (les convertisseurs avaient été fourni par le client).

    Désolé, je n'ai pas de piste.

    Bon courage.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 149
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Linkin Voir le message
    J'ai bien compris ton problème.

    On n'a pas cherché d'où venait vraiment le problème, vu que ça bloquait une production, on est passé directement vers la solution que nous validons (les convertisseurs avaient été fourni par le client).

    Désolé, je n'ai pas de piste.

    Bon courage.
    Merci, la prochaine étape pour moi est d'utiliser un logiciel qui monitore les événements sur les périphériques USB...

    [Edit]
    L'erreur vient de se reproduire, mais cette fois j'ai loggué les ports USB également. C'est un peu pénible de le faire sans gêner les utilisateurs mais cela en valait la peine : la première erreur interne qui me déclenche tout ce bazar est "USBD_STATUS_BUFFER_OVERRUN" sur le port USB en question lors d'un "bulk or Interrupt Transfert (UP)"... voilà voilà je continue mes recherches.

Discussions similaires

  1. Ecran bleu a l'utilisation d'une Clé USB
    Par lemotard dans le forum Windows XP
    Réponses: 10
    Dernier message: 11/11/2006, 19h07
  2. erreur d'execution avec l'utilisation TCOMPORT
    Par thony76 dans le forum C++Builder
    Réponses: 10
    Dernier message: 27/07/2006, 15h47
  3. Utiliser TComPort sans TComDataPacket
    Par giloutho dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/04/2006, 09h25
  4. utilisation d'un driver USB
    Par AiSpirit dans le forum Windows
    Réponses: 8
    Dernier message: 07/01/2006, 01h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo