Récupérer données RS232 (multimètre) dans excel 2007

Jackfly Messages postés 3 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 20 mars 2009 - 20 mars 2009 à 13:49
zourajo Messages postés 6 Date d'inscription samedi 20 février 2010 Statut Membre Dernière intervention 10 mai 2012 - 10 mai 2012 à 12:40
Bonjour,

J'ai un multimètre TENMA 72-7745 qui permet de récupérer des données par le port série (le pgm fourni avec fonctionne très bien... )

Mais, j'aimerais bien "bidouiller" un peu de code pour pouvoir récupérer ces données directement dans excel 2007 et ainsi les exploiter.
J'ai installé le module MSCOMM dans excel et créé un userfom avec les données du port (j'utilise un adaptateur USB/série pour relier le multimètre au pc)

Voilà le code (basique) que j'ai :

MSComm1.InBufferCount = 0


MSComm1.CommPort = 1
MSComm1.Settings = "2400,O,7,1"
MSComm1.PortOpen = True
MSComm1.InputLen = 1


    Do
      DoEvents 
      tampon$ = tampon$ + MSComm1.Input
    Loop Until Len(tampon$) > 10
   
    ActiveCell.Value = tampon$
    Range("b" & ActiveCell.Row + 1).Select
    tampon$ = ""
MSComm1.PortOpen = False

Lorsque j'ouvre le port et lis les données, j'ai ceci : �17; 5E[k~�1;�1F; 0@Th  qui se répète "à l'infini"... En principe, cela devait mesurer une tension de 12.53V dc... !?

Est-ce que mon code est "trop" simpliste et qu'il manque des données essentielles pour la bonne réception et le décodage ?
Merci pour les commentaires et l'aide que vous pourrez m'apporter.

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mars 2009 à 16:41
Salut
Non, c'est la bonne méthode.
Il est logique que ton multimètre émette en permanence pour t'envoyer ses mesures.
Dans la Doc, ne disent-ils pas sous quelle forme sont envoyées les données ?
Les données que tu reçois ne sont apparemment pas de l'ASCII mais plutôt des chiffres que tu demandes à afficher sous sous forme ASCII.
Chaque caractère possède un code ASCII.
Quand tu lis MSComm1.Input, il va falloir faire un petit traitement :
   Dim r As Integer
   For r = 1 To Len(MSComm1.Input)
      Debug.Print Asc(Mid$(MSComm1.Input, r, 1))
   Next r
et regarde les chiffres qui vont défiler dans la fenêtre de debug (Ctrl-G)
Ca te parlera peut-être
Chez moi, ça donne ça, mais je me méfie des copier-coller :
 23
 32
 53
 69
 91
 107
 126
 1
 31
 32
 48
 64
 84
 104

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous