Ce code envoie une impulsion reçue en cm, via RS 232.
Une valeur supérieure à 255 sera decoupée, et envoyé, un checksum permet de vérifer la trame envoyée.
Source / Exemple :
Private Sub Send(impulsion As Integer)
Dim MSB As Byte, LSB As Byte, CHKSUM As Byte
Dim tmp, heure, I
Dim vdist As Integer, vdimmin As Integer
Dim recu, tmpstr As String
tmp = 0
vdist = dist / 10
vdimmin = dimmin
impulsion = (impulsion * 10) - vdimmin
impulsion = Int((200 / vdist) * impulsion)
'Decoupage de l'impulsion car > a 255
MSB = Int(impulsion / 256)
LSB = Int(impulsion - (MSB * 256))
If LSB = 0 Then
LSB = LSB + 1
End If
CHKSUM = MSB + LSB
'Pour eviter un Checksum erronné
While CHKSUM > 255
CHKSUM = CHKSUM - 256
Wend
'debug de verification
'MsgBox "MSB : " & MSB
'MsgBox "LSB : " & LSB
'MsgBox "Check Sum : " & CHKSUM
'J'effectue ici nu petite boucle d'envoi x10, car timeout non codé
Do While tmp <> 10
'Interdiction des interuptions sur le port
Comm1.RThreshold = 0
'Le caractere "D" symbolise le debut de la trame
Comm1.Output = "D"
Comm1.Output = Chr(MSB)
Comm1.Output = Chr(LSB)
Comm1.Output = Chr(CHKSUM)
tmp = tmp + 1
I = 0
Effectue = ""
'Attente d'une reponse (p'tite bidouille)
Do While I < 500
Effectue = Comm1.Input
If Effectue <> "" Then Exit Do
I = I + 1
Loop
'Remise en marche des interruptions sur le port
Comm1.RThreshold = 1
If Effectue = "O" Then Exit Sub
Loop
'si 10 envois ont été tentés sans réponse reçue : y'a un prob
If tmp = 10 Then
MsgBox "Un problème empêche la transmission.", vbCritical, "Delai d'attente dépassé !"
Exit Sub
End If
End Sub
Conclusion :
Un grand merci a b00mrang et BadProcESs sans qui mon programme ne tournerai pas aujourd'hui.
cette partie de code fonctionne avec mon programme, il peut donc manquer la définitions de certaine variable globale....
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.