Communiquer avec une balance via RS232

Signaler
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
-
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014

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.
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014

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
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014

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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014

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?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014

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?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
"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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Oupsss

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

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014

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!