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

VB 6 et antérieur Discussion :

[VB]Probleme d'utilisation de la commande MSCOM


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut [VB]Probleme d'utilisation de la commande MSCOM
    Voila , j'ai une feuille MDI , ou j'ai déclaré l'ouverture de mon port dans le form load_MDI , et ensuite dans les feuilles filles , j'utilise l'objet MSCOMM de la feuille MDI par la commande nom_feuille_MDI.COMM1.output,etc...
    Mais le hic , c'est que dans ces feuilles filles , le port envoie rien vers l'alimentation de la carte electronique!Donc je vais vous laisser mes parties de code ou qu'à ou j'y aurais fait une erreur!
    FEUILLE MDI : form_load_MDI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     ' Utilise le numero du port COM du fichier ini.
       MSComm1.CommPort = Port_com
     
       ' 9600 bauds, pas de parité, 8 bits de données et 1 bit d'arrêt.
       MSComm1.Settings = "9600,N,8,1"
     
       ' Indique au contrôle qu'il doit lire la totalité
       ' du tampon si la propriété Input est utilisée.
       MSComm1.InputLen = 0
     
     
       ' Ouvre le port.
       MSComm1.PortOpen = True
     
       MSComm1.Output = "*RST" & Chr(10)
    FEUILLE TEST_CONNECT : form_load
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Monofilaments_10µ.MSComm1.Output = "CONF:RES 20,(@101:110)" & Chr(10)
    Sleep 500
    Monofilaments_10µ.MSComm1.Output = "READ?" & Chr(10)
     
    Sleep 1500
    c = Monofilaments_10µ.MSComm1.Input
     
    If Val(Mid(c, 1, 15)) < 3 Then
        t1 = "Court-circuit"
    Else
        If Val(Mid(c, 1, 15)) < 18 Then
            t1 = "OK"
        Else
        t1 = "Mauvais contact"
        End If
    End If
    'etc....
    Je precise que l'objet MScomm1 se situe uniquement dans la feuille MDI,les autres pages n'ont objet mscomm!
    J'espere que vous pourrez m'aider un peu!En attendant , vos reponses je vais me creuser les méninges plus serieusement sur ce souci technique!

  2. #2
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    dejà tu dois traiter la réception dans l'evenement MSComm1_OnComm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Static Sub MSComm1_OnComm()
        Select Case MSComm1.CommEvent
            ' Messages d'événement.
            Case comEvReceive
                buffer = MSComm1.Input
    ....
    sinon, pour l'envoi, y'a pas raison, si ta ligne est bien configurée

  3. #3
    Membre expérimenté Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Par défaut
    bonjour,
    juste 2-3 conseils
    - tester les trames avec hyperterminal branché sur un autre port com relié par un cordon (meme PC ou autre PC), cela permet déjà de voir si les trames partent bien avec le bon format etc etc
    - je ne suis pas sur que mettre un sleep juste après le output soit une bonne idée. utilise plutot une machine à etat et un timers. En plus dans ton cas tu peux gérer les attentes et les time-out
    - Contrairement à Thierry, j'evite d'utiliser MSComm1_OnComm, surtout quand deux applis font du question-reponse, par expérience, je sais que ces évenements peuvent etre "masqués" et si tu en manque un, c'est raté. En utilisant le InBufferCount avec un timer, on obtient une meilleure fiabilité. (Rmq: je sais que c'est contraire à la logique événementielle)
    - J'evite de démarrer (timers) ou d'ouvrir (socket, port com) des controles dans le form_load, je préfére charger ma forme, puis appeler une fonction d'initialisation qui s'en charge
    - si comme tu dit, le problème concerne juste les feuilles filles, essaye en utilisant une fonction de la feuille mere que tu appelle des feuilles filles, tu pourras mieux suivre le déroulement des opérations, notament voir si tu passe dedans.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme d'utilisation de la commande glob sur un montage NFS
    Par hfrass dans le forum Programmation et administration système
    Réponses: 9
    Dernier message: 10/06/2015, 14h29
  2. Commande "du" en C, probleme à l'utilisation
    Par Alba.1337 dans le forum C
    Réponses: 3
    Dernier message: 15/01/2012, 10h19
  3. Probleme d'utilisation de la commande osql
    Par cana13 dans le forum Outils
    Réponses: 1
    Dernier message: 01/02/2010, 20h10
  4. Probleme pour utiliser la commande "ppm" avec cygwin
    Par Premium dans le forum Modules
    Réponses: 2
    Dernier message: 31/10/2008, 13h39
  5. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18

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