fouding69
Messages postés10Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention24 novembre 2011
-
26 oct. 2007 à 20:32
julienexam
Messages postés21Date d'inscriptionmardi 3 avril 2012StatutMembreDernière intervention12 avril 2012
-
5 avril 2012 à 16:11
Bonjour
Pour me mettre "le pied à l'étrier", je voudrais réaliser une application très simple sous Excel : envoyer une commande ASCII vers le port RS232 de mon PC, lorsque je clique sur un bouton créé via le mode développeur.
Je sais que je dois installer l'application XL_RS232 et que je dois écrire du code derrière le bouton, mais mes compétences (un peu étendu en language Excel) s'arrête la en VB et macro !
la trame à expédier sur le port série est du genre "#01010D". je dois travailler sur COM1 en 9600bds, sans parité, 1 stop.
Quelu'un aurait-il la gentillesse de m'adresse un fichier excel avec ce micro exemple afin que je comprenne bien le mécanisme (codes, utilisation de XL_RS232, ouverture du port série .....)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 27 oct. 2007 à 02:10
Salut
L'utilisation de MSComm32 est facile pour l'émission :
-1- Paramétrage du composant :
MSComm1.CommPort = 1 ' Com1
MSComm1.Settings = "9600,N,8,1" ' 9600 bauds, pas de parité, 8 bits de données et 1 bit d'arrêt.
MSComm1.PortOpen = True ' Ouvre le port.
-2- Envoi de données :
Tu dis vouloir envoyer #01010D.
En fait, cela ressemble à un format hexadécimal : 3 caractères : 01, 01 et 0D (décimal 1, 1 et 13).
La solution la plus simple est d'envoyer les codes ASCII correspondant à ces codes :
MSComm1.Output Chr$(01) & Chr$(01) & Chr$(13)
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)
fouding69
Messages postés10Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention24 novembre 2011 27 oct. 2007 à 07:48
Merci de cette réponse rapide jack (couche-tard dis donc ...)
Bon, ça commence :
j'ai donc écrit ça derrière mon bouton :
Sub Bouton1_Clic()
MSComm1.CommPort = 1 ' Com1
MSComm1.Settings = "9600,N,8,1" ' 9600 bauds, pas de parité, 8 bits de données et 1 bit d'arrêt.
MSComm1.PortOpen = True ' Ouvre le port.
MSComm1.Output Chr$(1) & Chr$(1) & Chr$(13)
End Sub
et j'ai un message d'erreur 424 : "Objet requis"
et cette ligne est surlignée en jaune :
MSComm1.CommPort = 1 ' Com1
MSComm ne doit-il pas être installé ou activé ?
Merci d'avance ... désolé de ces questions plus que basique ...
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 27 oct. 2007 à 14:30
Re
Oui, bien sûr, il faut avoir chargé le composant MSComm32 :
- Il faut avoir chargé une UserForm - obligatoire pour supporter le composant
- Une fois le UserForm affiché, tu vas dans le menu "Outils", "Contrôles supplémentaires"
- Dans la fenêtre qui s'est ouverte, tu recherches "Microsoft Communications Control, version 6.0" qui correspond au fichier MSComm32.OCX qui est sous System32
- Dans la mini-fenêtre nommée "Boîte à outils" qui s'est ouverte à la création de ta UsertForm, une nouvelle icône est apparue : un petit téléphone jaune.
- Tu cliques dessus puis tu vas sur ta UserForm pour dessiner un carré dans lequel le composant s'inscrira (le dessin n'est pas visible en mode Run)
- Par défaut, cette occurence du composant s'appelle "MSComm1" (fenêtre des propriétés) et tu peux choisir de faire les réglages de port, vitesse ... dans la fenêtre de propriétés au lieu de les faire dans le code (le code écrase ceux prévus dans les propriétés).
Voilà, Les lignes de programme doivent se trouver dans la UserForm qui supporte le MSComm1 que tu viens de créer.
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
julienexam
Messages postés21Date d'inscriptionmardi 3 avril 2012StatutMembreDernière intervention12 avril 2012 5 avril 2012 à 16:11
Je sais que le sujet date mais je n'arrive pas à appliquer la solution donnée par jack.
En effet quand je pose le " téléphone jaune " sur ma UserForm, cela m'indique : " Le sujet n'est pas approuvé pour l'action spécifié ".