Forum Officiel du club Mécatronique ESTI
Vous êtes déconnecté du Forum, veuillez vous reconnecter pour accéder au site

Rejoignez le forum, c’est rapide et facile

Forum Officiel du club Mécatronique ESTI
Vous êtes déconnecté du Forum, veuillez vous reconnecter pour accéder au site
Forum Officiel du club Mécatronique ESTI
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Acquisition de données sur un port série (RS232)

Aller en bas

Acquisition de données sur un port série (RS232)  Empty Acquisition de données sur un port série (RS232)

Message par Admin-Cherni Koussay Dim 13 Mar - 16:01

Acquisition de données sur un port série (RS232)

Vous ne trouverez ici aucune théorie sur ce mode de communication. On se contente de lister les tâches à réaliser accompagnées d'un exemple de programme en VBA5.

Objectif: Collecter directement dans une feuille Excel des valeurs produites par un appareil externe
Moyens utilisés dans l'exemple:

Excel97 ou supérieur (version Windows exclusivement)
VBA5 ou supérieur
activeX MSComm32.ocx (*)
une balance munie d'une sortie RS232 avec sa documentation
un petit programme VB ou VBA
(*) Cet activeX n'est pas fourni avec Office2000 ou antérieur mais seulement avec Visual Basic. Recherchez d'abord dans votre dossier système les fichiers "mscom*.ocx". Si ils sont présent, passez au paragraphe suivant; sinon, vous pouvez enregistrer l'activeX en installant le programme XL_RS232 (seul exemplaire gratuit) La distribution contient le fichier "pesees.xls" avec l'exemple suivant.
Utilisation:
- télécharger le fichier XL_RS232.ZIP
- décompresser ce fichier
- exécuter SETUP.EXE
- ouvrir le fichier "pesees.xls"
- exécuter la macro pour tester le fonctionnement
- adapter le programme VBA de communication avec le port série dans le fichier "pesees.xls"
L'exemple qui suit utilise le port Com1. Il est possible de communiquer avec le port parallèle (non documenté ici) en utilisant le contrôle activeX IOport.ocx (shareware) pour win98 ou le contrôle NTport.ocx sous NT.
Réalisation du programme
Il est indispensable de disposer de la documentation de l'appareil à connecter pour connaître le paramétrage du port série.
Le programme peut-être adapté à n'importe quelle application MS-Office97 ou Visual Basic.
Depuis Excel, activez l'éditeur VBA (touches ALT + F11).

Insérez un module
insérez un userform
dans la fenêtre "Boite à outils", recherchez l'icône MSCOMM symbolisée par un téléphone. Si elle est absente, cliquez sur la boîte à outils avec le bouton droit de la souris puis sur "Contrôles supplémentaires et cochez "Microsoft Communication Control".
posez le contrôle MSCOMM sur le userform
posez un contrôle COMMANDBUTTON sur le userform
posez un contrôle LABEL sur le userform
double cliquez sur l'objet COMMANDBUTTON et entrez le code suivant:
Private Sub CommandButton1_Click()
'Vider le buffer
MSComm1.InBufferCount = 0
'choisir un port série
MSComm1.CommPort = 1 ' 1 est le n° de port que vous pouvez modifier
'Paramétrage du port; les valeurs sont fournies par le constructeur de l'appareil.
'Ces valeurs peuvent être entrées ici (pas très "propre"!)
'ou dans une procédure d'initialisation (c'est mieux)
'ou dans la propriété "Setting" du contrôle
'L'idéal étant d'offrir à l'utilisateur la possibilité de changer ces valeurs à partir d'un menu "Réglage"
'La balance utilisée dans cet exemple requiert les valeurs suivantes: 1200 bauds, bit de parité, 7 bits de données, bit d'arrêt
MSComm1.Settings = "1200,o,7,2"
' indique au contrôle qu'il doit lire 1 seul caractère
'ce caractère servira à repérer la stabilisation de la balance
MSComm1.InputLen = 1
'ouvre le port
MSComm1.PortOpen = True
'Boucle dans le vide tant que le caractère lu n'est pas un signe plus (+)
Do While MSComm1.Input <> "+"
Loop
'lecture sur le port des 5 1ers caractères et stockage dans la boite de dialogue et dans la feuille active
MSComm1.InputLen = 5
Label1.Caption = MSComm1.Input
ActiveCell.Value = CSng(Label1.Caption)
ActiveCell.Offset(1, 0).Select
'ferme le port
MSComm1.PortOpen = False
End Sub


Dans cet exemple, la balance émet les données en permanence. Le programme lit ces valeurs en recherchant le signe + qui dans ce cas sépare les envois successifs de données. Très souvent, il est possible de procéder autrement:
- l'appareil attend un ordre du programme
- le programme signale à l'appareil qu'il attend une valeur
- L'appareil répond en émettant une valeur puis se met en attente de l'ordre suivant.

Les ordres ou codes d'échange sont fourni par le fabriquant du matériel.

Admin-Cherni Koussay
Admin

Messages : 20
Date d'inscription : 11/03/2011
Age : 35

https://mecatroniqueclub.rigala.net

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum