Interface RS232 en VB6

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. 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+
    1. Contributeur
      Bonjour, Bonjour fxx
      Tu dois initialisé MSComm pour que la communication corresponde à ton instrument.
      Bit parité... Baud etc..
      A+

      1. 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.
        1. Contributeur
          Quel est le protocole de communication de ton instrument ?
          1. Contributeur
            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+
            1. 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+