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

  • Votes
  • Date
  • Date décroissante
  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+
    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. Contributeur
        Quel est le protocole de communication de ton instrument ?
        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
            Bonjour, Bonjour fxx
            Tu dois initialisé MSComm pour que la communication corresponde à ton instrument.
            Bit parité... Baud etc..
            A+

            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+