Communiquer avec une balance via RS232

goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014 - 12 sept. 2006 à 17:14
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014 - 15 sept. 2006 à 14:55
Bonjour
J'aimerais
communiquer par RS232 avec une balance.
J'ai trouvé ca sur le net
http://cherbe.free.fr/rs232.html
Dans la partie "realisation du programme" à l'étape "
posez le contrôle MSCOMM sur le userform"
J'ai ce message "Le controle n'a pas été crée parce qu'il n'est pas correctement licencié".

Quelqu'un sait d'ou vient l'erreur?
Merci de votre aide ou suggestions.

12 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
12 sept. 2006 à 17:41
Salut
Tu es sous VB6 ? pas un message standard ... je pense que tu bosses sous le VBA de Excel ou Access (dixit ma boule de cristal)
Il faut que tu repères le fichier nommé MSCOMM32.OCX qui devrait se trouver dans le répertoire Windows\System32
Ensuite, tu ouvres une fenêtre DOS : Démarrer, Exécuter, CMD et entrée
Dans la fenêtre noire qui apparait, entre la commande suivante :
RegSvr32 C:\Windows\System32\MSCOMM32.OCX
Normalement, il doit te répondre en affichant une fenêtre qui te dit que ça s'est bien passé.
Cela devrait suffire à 'enregistrer' le composant.

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

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
12 sept. 2006 à 18:14
Après cousultation de ma boule de cristal ......

Ah tiens Jack, aurait-on le même modèle de boule tous les deux ?

En effet goodsayan, ce message est souvent aperçu sous vba (le controle mscomm ne faisant pas partie de vba,je crois bien), alors qu'il est plutot rare sous vb6 (le controle fait partie du pack de base de vb6. C'est pour cela que l'on suppose que tu es sous vba.

Cependant la solution de Jack devrait marché dans tous les cas.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014
12 sept. 2006 à 19:05
En effet la boule de cristal a raison... Je travaille sous le VBA d'excell.
Je teste demain au boulot et je vous tiens au courant.
Merci de votre aide.
0
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014
13 sept. 2006 à 14:20
Re
J'ai fait comme m'a conseillé Jack, sous DOS j'ai tapé la commande et une fenetre s'est ouverte disant que ca avait réussi!
Par contre j'ai une nouvelle fois testé et impossible de
poser le contrôle MSCOMM sur le userform. Toujours le même message "Le contrôle n'a pas été crée parce qu'il n'est pas correctement licencié"...
D'autres idées?
Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014
13 sept. 2006 à 15:46
Ca y est j'ai enfin pu le mettre! Par contre je sais pas comment j'ai fait...
Donc en double cliquant sur commandbutton, j'ai mis le programme que j'avais trouvé.
Par contre j'ai un soucis a cette ligne la:
MSComm1.Settings = "1200,o,7,2"
La j'ai changé vu que sur la doc j'ai baud 2400, parité none, 8 bits données, 1 bit d'arret.
MSComm1.Settings = "2400,n,8,1"
C'est bien ca qu'il faut mettre car ca marche pas....
Merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 sept. 2006 à 15:54
Tes settings sont corrects, à condition que ceux de la balance n'aient pas été changés par rapport à ce qui est indiqué dans la doc.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014
13 sept. 2006 à 17:17
Le probleme vient peut etre de la boucle   
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

J'en sais rien moi s'il y a un "+" qui arrive. Et s'il faut lire les 5 1ers caractères...
J'ai pas trouvé cette indication dans la doc. Tout ce qu'il y a c'est caractere: ASCII.
Une idée?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 sept. 2006 à 17:24
Alors déja :

MSComm1.InputLen = 1
Do While MSComm1.Input <> "+"
    DoEvents
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

Quant au + et aux 5 caractères je ne peux pas te dire, c'est spécifique à ta balance, mais ça resemble à quelque chose comme "+45.96" pour 45,96Kg. Ceci pourrait bien expliquer cela.

Tu n'as vraiment rien dans la doc sur le format des données ?

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014
13 sept. 2006 à 17:42
Merci pour les corrections. Je suis plus obligé de faire ctrl+alt+suppr pour arreter. Maintenant j'ai ce message "Erreur d'excution '8005' Port already open."
Pour le format la doc est vraiment somaire... J'ai ca par contre:
RS232C Format:
no. 1 2 3 4 5 6 7 8 9 10
SP/- X X X X X X X CR LF

Est ce que ca te dis quelquechose?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 sept. 2006 à 17:57
"Port already open" : C'est parce ton programme a été arreté avant de fermer le port série (plantage ou  Ctrl+Alt+Supp).

Au pire, enregistre tout, ferme VB proprement, puis réouvre VB et ton projet.

Pour le format, ce que je comprend :
C'est une trame de 10 caractères :
n° 1 : SP/- : veux dire je pense "Espace" ou signe "-"
n° 2 à 8 : X : surrement des données, un poid par exemple "45.9647"
n° 9 : CR : caractère "Retour Chariot", vbCR en langage VB
n°10 : LF : caractère "Saut de ligne", vbLF en langage VB

Si on associe les deux ça donne vbCRLF, couple de caractère souvent utilisé pour indiquer un passage à la ligne dans un fichier, ou la fin d'une donnée dans une communication, comme ici.

Si ce format représente le poid que tu dois lire, ça donnerait cela " 45.9647"+vbCRLF ou en négatif "-45.9647"+vbCRLF.
Dans ce cas, pour en revenir à ton code plus haut, c'est le caractère "+" que tu devrais attendre mais le caractère " ", sil s'agit bien de ce format là.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 sept. 2006 à 17:58
Oupsss

"....... c'est pas le caractère "+" que tu devrais attendre  ....."

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014
15 sept. 2006 à 14:55
Ok merci de m'aider mais c'est pas encore ca... J'ai remplacé le "+" par " ". Je vais essayer de faire l'acquisition avec Labview si j'arrive deja à l'installer car c'est un très vieux PC et je suis pas sur qu'il le supporte.
Merci encore!
0
Rejoignez-nous