Envoi trame multiple RS232 port serie

jerome57440 Messages postés 40 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 8 juillet 2008 - 12 mars 2008 à 15:52
jerome57440 Messages postés 40 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 8 juillet 2008 - 12 mars 2008 à 15:53
bonjour,
je communique avec une carte microprogrammé CEPR et je doit lui envoyer plusieur trame d'une centaine d'octets chacune consecutives.
voici un exemple:
evoie trame1
attente reponse1
si reponse1=envoi1
alors envoi trame2
attente reponse2.............

Je connais les fonction a utiliser tel que mscomm1.input ou output....
Dans ce cas de figure la , serait il possible d'utiliser l'evenement OnComm et si ui si quelqun a une petite idée ca serait sympatique.
L'envoi de trame n'est pas un pb c'est plutot la reception de la reponse d ela carte qui me pose pb car ensuite je doi la comparer avec ce que j'ai envoyer pour passer a l'etape suivante c'est a dire l'envoi d'une nouvelle trame
Merci d'avance

1 réponse

jerome57440 Messages postés 40 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 8 juillet 2008
12 mars 2008 à 15:53
voici mon code:
Public Sub Form_Load()
MSComm1.CommPort = 1              'Definition des paramètres de configuration du port série
MSComm1.Settings = "9600,O,8,1"
MSComm1.SThreshold = 1
MSComm1.InputLen = 0
MSComm1.PortOpen = True
End Sub
Public Sub Command1_Click()
Call tram1
End Sub
Private Sub Command2_Click()
MSComm1.PortOpen = False
Unload Me
End Sub
Public Sub tram1()
Dim envoi1 As String
Dim donnee(1000) As String
envoi1 = ""


For i = 0 To 199                    'preparation tableau donnee
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For j = 0 To 100                    '1ere trame
    envoi1 = envoi1 & Chr(donnee(j))
Next j
trame1 = Chr(1) & Chr(34) & Chr(255) & Chr(109) & Chr(152) & Chr(0) & Chr(100) & envoi1 & Chr(4)
MSComm1.Output = trame1
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer1.Interval = 500
Timer1.Enabled = True
End Sub


Private Sub Timer1_Timer()


reponse1 = MSComm1.Input
'If reponse1 = trame1 Then
Timer1.Enabled = False
MsgBox ("trame1 envoyé")
Call tram2
'Else
'Timer1.Enabled = False
'MsgBox ("erreur reception trame1")
'End If
End Sub


Public Sub tram2()
Dim donnee(1000) As String
Dim envoi2 As String
envoi2 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For k = 101 To 201              '2eme trame
    envoi2 = envoi2 & Chr(donnee(k))
Next k
trame2 = Chr(1) & Chr(34) & Chr(255) & Chr(109) & Chr(152) & Chr(101) & Chr(201) & envoi2 & Chr(4)
MSComm1.Output = trame2
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer2.Interval = 500
Timer2.Enabled = True
End Sub
Private Sub Timer2_Timer()
reponse2 = MSComm1.Input
'If reponse2 = trame2 Then
Timer2.Enabled = False
MsgBox ("trame2 envoyé")
Call tram3
'Else
'Timer2.Enabled = False
'MsgBox ("erreur reception trame2")
'End If
End Sub
Public Sub tram3()
Dim donnee(1000) As String
Dim envoi3 As String
envoi3 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For l = 202 To 255              '3eme trame
    envoi3 = envoi3 & Chr(donnee(l))
Next l
trame3 = Chr(1) & Chr(34) & Chr(255) & Chr(62) & Chr(152) & Chr(202) & Chr(255) & envoi3 & Chr(4)
MSComm1.Output = trame3
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer3.Interval = 500
Timer3.Enabled = True
End Sub
Private Sub Timer3_Timer()
reponse3 = MSComm1.Input
'If reponse3 = trame3 Then
Timer3.Enabled = False
MsgBox ("trame3 envoyé")
Call tram4
'Else
'Timer3.Enabled = False
'MsgBox ("erreur reception trame3")
'End If
End Sub
Public Sub tram4()
Dim donnee(1000) As String
Dim envoi4 As String
envoi4 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For m = 256 To 356              '4eme trame
    envoi4 = envoi4 & Chr(donnee(m))
Next m
trame4 = Chr(1) & Chr(34) & Chr(255) & Chr(109) & Chr(153) & Chr(0) & Chr(100) & envoi4 & Chr(4)
MSComm1.Output = trame4
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer4.Interval = 500
Timer4.Enabled = True
End Sub
Private Sub Timer4_Timer()
reponse4 = MSComm1.Input
'If reponse4 = trame4 Then
Timer4.Enabled = False
MsgBox ("trame4 envoyé")
Call tram5
'Else
'Timer4.Enabled = False
'MsgBox ("erreur reception trame4")
'End If
End Sub
Public Sub tram5()
Dim donnee(1000) As String
Dim envoi5 As String
envoi5 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For n = 357 To 457              '5eme trame
    envoi5 = envoi5 & Chr(donnee(n))
Next n
trame5 = Chr(1) & Chr(34) & Chr(255) & Chr(109) & Chr(153) & Chr(101) & Chr(201) & envoi5 & Chr(4)
MSComm1.Output = trame5
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer5.Interval = 500
Timer5.Enabled = True
End Sub
Private Sub Timer5_Timer()
reponse5 = MSComm1.Input
'If reponse5 = trame5 Then
Timer5.Enabled = False
MsgBox ("trame5 envoyé")
Call tram6
'Else
'Timer5.Enabled = False
'MsgBox ("erreur reception trame5")
'End If
End Sub
Public Sub tram6()
Dim donnee(1000) As String
Dim envoi6 As String
envoi6 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For o = 458 To 511              '6eme trame
    envoi6 = envoi6 & Chr(donnee(o))
Next o
trame6 = Chr(1) & Chr(34) & Chr(255) & Chr(62) & Chr(153) & Chr(202) & Chr(255) & envoi6 & Chr(4)
MSComm1.Output = trame6
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer6.Interval = 500
Timer6.Enabled = True
End Sub
Private Sub Timer6_Timer()
reponse6 = MSComm1.Input
'If reponse6 = trame6 Then
Timer6.Enabled = False
MsgBox ("trame6 envoyé")
Call tram7
'Else
'Timer6.Enabled = False
'MsgBox ("erreur reception trame6")
'End If
End Sub
Public Sub tram7()
Dim donnee(1000) As String
Dim envoi7 As String
envoi7 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For p = 512 To 612              '7eme trame
    envoi7 = envoi7 & Chr(donnee(p))
Next p
trame7 = Chr(1) & Chr(34) & Chr(255) & Chr(109) & Chr(154) & Chr(0) & Chr(100) & envoi7 & Chr(4)
MSComm1.Output = trame7
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer7.Interval = 500
Timer7.Enabled = True
End Sub
Private Sub Timer7_Timer()
reponse7 = MSComm1.Input
'If reponse7 = trame7 Then
Timer7.Enabled = False
MsgBox ("trame7 envoyé")
Call tram8
'Else
'Timer7.Enabled = False
'MsgBox ("erreur reception trame7")
'End If
End Sub
Public Sub tram8()
Dim donnee(1000) As String
Dim envoi8 As String
envoi8 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For q = 613 To 713              '8eme trame
    envoi8 = envoi8 & Chr(donnee(q))
Next q
trame8 = Chr(1) & Chr(34) & Chr(255) & Chr(109) & Chr(154) & Chr(101) & Chr(201) & envoi8 & Chr(4)
MSComm1.Output = trame8
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer8.Interval = 500
Timer8.Enabled = True
End Sub
Private Sub Timer8_Timer()
reponse8 = MSComm1.Input
'If reponse8 = trame8 Then
Timer8.Enabled = False
MsgBox ("trame8 envoyé")
Call tram9
'Else
'Timer8.Enabled = False
'MsgBox ("erreur reception trame8")
'End If
End Sub
Public Sub tram9()
Dim donnee(1000) As String
Dim envoi9 As String
envoi9 = ""


For i = 0 To 199
donnee(i) = i
donnee(200 + i) = i
donnee(400 + i) = i
donnee(600 + i) = i
Next i


For r = 714 To 740              '9eme trame
envoi9 = envoi9 & Chr(donnee(r))
Next r
trame9 = Chr(1) & Chr(34) & Chr(255) & Chr(35) & Chr(154) & Chr(202) & Chr(228) & envoi9 & Chr(4)
MSComm1.Output = trame9
'MSComm1.RThreshold = MSComm1.InBufferCount
Timer9.Interval = 500
Timer9.Enabled = True
End Sub
Private Sub Timer9_Timer()
reponse9 = MSComm1.Input
'If reponse9 = trame9 Then
Timer9.Enabled = False
MsgBox ("trame9 envoyé")
MsgBox ("donnee transmise")
'Else
'Timer9.Enabled = False
'MsgBox ("erreur reception trame9")
'End If
End Sub
0
Rejoignez-nous