Interface RS232 en VB6

Fermé
cneree Messages postés 7 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 6 février 2013 - 19 janv. 2013 à 20:00
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 21 janv. 2013 à 10:30
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

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
20 janv. 2013 à 10:58
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 janv. 2013 à 11:23
Bonjour, Bonjour fxx
Tu dois initialisé MSComm pour que la communication corresponde à ton instrument.
Bit parité... Baud etc..
A+

0
cneree Messages postés 7 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 6 février 2013
20 janv. 2013 à 11:27
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 janv. 2013 à 14:16
Quel est le protocole de communication de ton instrument ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cneree Messages postés 7 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 6 février 2013
20 janv. 2013 à 15:42
j'ai utilise le protocole COM
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 janv. 2013 à 18:27
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 21/01/2013 à 10:37
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