Interface RS232 en VB6

cneree Messages postés 7 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

salam alaykoum
mes amis
J'ai programmé une application en VB6 qui nous permet d'acquérir des données de mesure instrument via l'interface RS232 le programme est exécuté, mais il ne me donne pas les valeurs mesurées (ça me donne des points interogations)
J'ai utilise exécution pas à pas j'ai montré que MSComm1.Input (voir sous-programme ci-dessous) ne reçois rien
S'il vous plaît aidez-moi
merci beaucoup

Private Sub Timer1_Timer()
Dim nval As Double
MSComm1.Output = "read?" & vbCrLf
txtTemps.Text = j
tampon$ = MSComm1.Input
txtMesure.Text = txtMesure.Text & tampon$ & vbCrLf
n = tampon$
If Option2.Value = True Then
' MsgBox M
m1 = Mid(n, 1, 5)
m2 = Mid(n, 18, 23)
m2 = Mid(m2, 1, 4)
m3 = Mid(n, 33, 35)
m3 = Mid(m3, 2, 4)
m4 = Mid(n, 50, 55)
m4 = Mid(m4, 1, 4)
c1.t3 = j
c1.m1 = m1 'voie 102
c1.m2 = m2 ' voie 103
c1.m3 = m3 'voie 104
c1.m4 = m4 'voie 105
ta = Val(c1.m1) * 10 'voie 102: temperature ambiente
Txta.Text = ta
tb = Val(c1.m2) * 10 'voie 103: temperature de la boite
Txtb.Text = tb
tc = Val(c1.m3) * 10 'voie 104: temperature chaude
Txtc.Text = tc
tf = Val(c1.m4) * 10 'voie 105: temperature froide
Txtf.Text = tf

7 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Il faudrait utiliser l'Hyperterminal pour verifier qu'il y a bien un echange avec votre boite de mesure.

    Un exemple de code pour votre appli. Je vous laisse gerer le depart initial du timer

    Private Sub UserForm_Initialize()
      '**************************************
      'Initialisation Port COM1:
        MSComm1.CommPort = 1
        'Parametrage ligne COM: (a adapter pour vous)
        MSComm1.Settings = "4800,N,8,1"
        'Ouvre le port de communication.
        On Error Resume Next
        MSComm1.PortOpen = True
        ' Vide le tampon d'entrée.
        MSComm1.InBufferCount = 0
        ' pas d'interruption
        MSComm1.RThreshold = 0
      '**************************************
    End Sub
    
    Private Sub Timer1_Timer()
      Dim nval As Double
      
      'Stop le timer
      Timer1.Enabled = False
      'Vide le tampon d'entrée.
      MSComm1.InBufferCount = 0
      
      MSComm1.Output = "read?" & vbCrLf
      txtTemps.Text = j
      
        'Attente nombre de caracteres prevu: a paramettrer
        LongueurAttendue = 55
        Port = 0
        Call AttenteNombreCaracteres(LongueurAttendue, Port)
        If Port = 0 Then
          MsgBox "Probleme reception!!!"
          'relance le timer
          Timer1.Enabled = True
          Exit Sub
        End If
        
      tampon$ = MSComm1.Input
      txtMesure.Text = txtMesure.Text & tampon$ & vbCrLf
      n = tampon$
      If Option2.Value = True Then
        ' MsgBox M
        m1 = Mid(n, 1, 5)
        m2 = Mid(n, 18, 23)
        m2 = Mid(m2, 1, 4)
        m3 = Mid(n, 33, 35)
        m3 = Mid(m3, 2, 4)
        m4 = Mid(n, 50, 55)
        m4 = Mid(m4, 1, 4)
        c1.t3 = j
        c1.m1 = m1 'voie 102
        c1.m2 = m2 ' voie 103
        c1.m3 = m3 'voie 104
        c1.m4 = m4 'voie 105
        ta = Val(c1.m1) * 10 'voie 102: temperature ambiente
        Txta.Text = ta
        tb = Val(c1.m2) * 10 'voie 103: temperature de la boite
        Txtb.Text = tb
        tc = Val(c1.m3) * 10 'voie 104: temperature chaude
        Txtc.Text = tc
        tf = Val(c1.m4) * 10 'voie 105: temperature froide
        Txtf.Text = tf
      End If
      'relance le timer
      Timer1.Enabled = True
    End Sub
        
        
    'SubRoutine attente caractere avec tempo: a adapter
    Sub AttenteNombreCaracteres(LongueurAttendue As Integer, Port As Integer)
      Dim TemPort As Single
      Port = 0
      TemPort = Timer
      Do While MSComm1.InBufferCount < LongueurAttendue And Timer - TemPort < 1.6: Loop
      If MSComm1.InBufferCount = LongueurAttendue Then Port = 1
    End Sub


    A+
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour, Bonjour fxx
    Tu dois initialisé MSComm pour que la communication corresponde à ton instrument.
    Bit parité... Baud etc..
    A+

    0
  3. cneree Messages postés 7 Statut Membre
     
    Bonjour,
    Merci pour cette réponse,
    j'ai déjà utilisé l'hyperterminal pour vérifier la communication entre le PC et notre instrument de mesure mais ca marche pas.
    SVP de m'aider pour l'utiliser la deuxième fois , par ce que peut être je ne sais pas comment l'utiliser.
    Merci bcp
    Cordialement.
    Mustapha.
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Quel est le protocole de communication de ton instrument ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cneree Messages postés 7 Statut Membre
     
    j'ai utilise le protocole COM
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Je vois que tu comprend pas...
    Tu clic sur le contrôl MSComm sur ta form pour le sélectionner et qu'il y ai des "poingnées" dessus.
    Tu tape F1.
    Et là je pense que tu comprendras.
    A+
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour a vous deux,

    Cneree:

    Si vous n'avez pas de communication en hyperterminal, pas le peine de continuer en VB6.0. Comme l'a ecrit lermite, avez-vous paramettrer la communication entre l'hyperterminal et votre boite de mesure avec les memes parametres (port,vitesse,bit de donnees, bits de stop etc...)

    Question: PC utilise---->Portable ou Tour??

    A+
    0