VBA6 : plantage aléatoire Serialport
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

VBA6 : plantage aléatoire Serialport



  1. #1
    Crashaan

    VBA6 : plantage aléatoire Serialport


    ------

    Bonjour a tous,

    je travaille actuellement sur un mini-banc de test qui pilote une alimentation stabilisé.
    Le but est d'envoyer via port USB des ordres à l'alimentation stabilisé pour avoir différents niveau de tension à différents intervalles de temps.

    Pour cela, j'utilise VBA6 car c'est avec ce langage de programmation que le 1er banc de test utilisé dans mon entreprise à été réalisé.

    Tout fonctionne pour le mieux mais sans savoir pourquoi, j'ai de temps en temps ma communication sur le port "COM" qui plante.
    Avant chaque commande avec l'alimentation, j'effectue un test du style : Serialport.isopen == false ? avant de l'ouvrir si la condition est vrai avec un Serialport.open(). Si la condition est fausse, et bien je réalise un Serialport.close() puis je l'ouvre avec le Serialport.open().

    Il se trouve que de manière aléatoire, le test Serialport.isOpen == false est vrai mais que l'exécution du Serialport.open() rate. Lorsque j'insère une ligne Serialport.close() ensuite, le programme me lance un exception comme quoi le port est déjà fermé.

    Lorsque je relance l'application sans éteindre l'appareil ou redémarrer l'ordinateur, tout refonctionne normalement avant un nouveau plantage aléatoire pas du tout régulier.

    je suis a la recherche d'un conseil pour me mettre sur une piste pour le dépannage voir la solution si c'est un problème connue.

    Dans l'attente de vos retour =)

    -----

  2. #2
    umfred

    Re : VBA6 : plantage aléatoire Serialport

    VBA ou VB6 ?
    VBA, c'est VB for Application présent dans la suite office (Word, Excel, ...)
    VB6 c'est indépendant d'office, donc on peut créer des applications classiques (.exe)
    donc c'est le 1er point à éclaircir

    SerialPort n'existe comme tel dans aucun de ces langages mais ça peut être un composant ou une classe ajoutée. (sous VB6, il y a MSComm32, qui peut aussi être utilise sous VBA si office en 32 bits).

    Si ça plante, ça veut dire que tu as un code d'erreur ? quel est-il?

    Sinon la logique serait plutôt tant que le port est ouvert, je le ferme; puis je l'ouvre.
    Le mieux serait peut-être aussi d'ouvrir le port au début (avec la logique du dessus) et de le fermer à la fin (ou en cas d'interruption).

    Ce qu'il peut se passer, c'est que à un endroit on oublie de le fermer

  3. #3
    Crashaan

    Re : VBA6 : plantage aléatoire Serialport

    Bonjour,

    Je confirme VB6 et non VBA.

    Je complète mon histoire =) :
    -> Test SerialPort.IsOpen == false est true lors du plantage
    -> Je réalise alors un SerialPort.open() avec un try/catch.
    -> Ici sa me sort une erreur : Accés au port "COM5" est refusé.

    Le COM5 est la ou est branché mon alimentation.

  4. #4
    pm42

    Re : VBA6 : plantage aléatoire Serialport

    Un cas classique est si un autre programme accède déjà au port en question.

    Cela peut arriver si tu as lancé un test avant et qu'il n'est pas terminé ou potentiellement s'il n'a pas refermé proprement.
    Ou si tu as un truc qui tourne en tâche de fond et qui vérifie le port de temps en temps mais c'est moins probable.

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : VBA6 : plantage aléatoire Serialport

    j'ai aussi l'impression que ce n'est pas non plus du VB6, mais du VB .NET (comme je l'ai plus haut, dans VB6, on utilise en principe MSComm, alors qu'en .NET, c'est SerialPort.
    et il n'y a pas vraiment de try/catch non plus en vb6 c'est du "On Error goto ..".
    Mais bon ça ne change pas le problème.

    comme l'a dit pm42, ça veut dire que le port est utilisé, soit par une autre instance de ton application (dans une autre session utilisateur ou qui aurait crashé sans relâcher le port COM, donc encore présent dans le gestionnaire des tâches, donc à tuer pour pouvoir utiliser le port COM)

  7. #6
    piep62110

    Re : VBA6 : plantage aléatoire Serialport

    Bonjour, comme dit plus haut, je te conseille d'ouvrir le port 1 fois au début du process et fermer le port à la fin de l'utilisation. Le port peur rester ouvert des heures.
    => Parfois, fermer puis ouvrir immédiatement à nouveau le port peut ne pas fonctionner suite à de séquencements internes à la librairie utilisée.

    Autres pistes:
    Un mauvais maintien de l'adaptateur USB-A dans le port du PC peut provoquer un dysfonctionnement du driver.
    Vérifie que le driver de ton adaptateur est la dernière, sait-on jamais.
    Vérifie aussi que ton adaptateur usb utilise un chipset original, dans mon activité professionnelle j'ai été confronté à des fournitures de ce genre de cordon avec des chip prolific contrefait. Ils fonctionnaient mais posait des problèmes.

Discussions similaires

  1. plantage ram
    Par aslan dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 19/07/2018, 00h50
  2. variable aléatoire discrète vs variable aléatoire continue.
    Par invite0731164c dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 05/12/2016, 21h05
  3. SerialPort .net micro Framework
    Par invitecd6742e1 dans le forum Programmation et langages, Algorithmique
    Réponses: 12
    Dernier message: 19/12/2013, 10h10
  4. c# SerialPort Invoke EventHandler probleme
    Par invitec871b1d7 dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 09/10/2012, 13h42
  5. Plantage PC
    Par invite4056b889 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 2
    Dernier message: 04/07/2012, 21h03