Envois d'une cote via rs 232

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 592 fois - Téléchargée 27 fois

Contenu du snippet

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....

A voir également

Ajouter un commentaire

Commentaires

NHenry
Messages postés
14594
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2019
137 -
Merci des explications, en recherchant un (long) petit moment, j'ai fini par trouver ce qui me fallait..
Merci de ta réponse.
cs_benbax
Messages postés
9
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2004
-
Ha en effet, ce n'est pas précisé ici, et il y a longtemps que j'ai fait ce code...

De mémoire "Comm" fait référence à une sorte de classe (en mémoire au C++) dans laquelle se trouve toute les méthode nécessaire à l'utilisation d'un port de communication. certains attributs de cette classe sont à initialiser au début du programme...

Maintenant, il y a longtemps que je ne programme plus, et j'ai même perdu le vocabulaire, donc, j'espère que mon explication, si succinte soit-elle, pourra te dépanner...
NHenry
Messages postés
14594
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2019
137 -
c'est quoi Comm1 (son type)?
Je cherche à envoyer des données sur un port COM de PocketPC avec C#.NET.
cs_SylMat
Messages postés
92
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
3 mai 2007
-
Personnellement je trouve que pour une première fois c'est pas mal du tout. bonne continuation Ben.

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.