Balance RS232 [RESOLU]

pitufo2804

XLDnaute Junior
Bonjour,
Apres quelques recherches sur google je ne trouve pas de solutions concrètes...
J'essaie de développer une "appli" permettant de récupérer des valeurs issue d'une balance connectée en RS232 au PC.
Ma balance est configurée de la sorte :
- 1200bauds
- 7 bits de données
- 1 bit de parité (paire)
- 1 bit de stop
J'ai ces quelques lignes de code afin de récupérer la valeur :
Code:
Private Sub CommandButton1_Click()

With MSComm1
    .InBufferCount = 0
    .CommPort = 1
    .Handshaking = comNone
    .Settings = "1200,o,7,1"
    .InputLen = 3
    .PortOpen = True
End With

Do While MSComm1.Input <> "   +"
Loop

MSComm1.InputLen = 5
    Label1.Caption = MSComm1.Input
    ActiveCell.Value = CSng(Label1.Caption)
    ActiveCell.Offset(1, 0).Select
    
MSComm1.PortOpen = False

End Sub

Mais j'ai une erreur à la ligne " Do While MSComm1.Input <> " +" "
qui me dit :
" Erreur d'éxécution '8020':
Error reading comm device."
J'ai quand même effectué des test avec l'hyper terminal et la com fonctionne sans soucis.
Enfin, sur la doc de la balance, la trame est comme ça :
123456789101112131415.........
BBBSD7D6D5D4D3D2D1DPD0BU...CRLF

BBlancCaractère blanc (espace)
SSignSigne (+,-,espace)
DPDecimal PointPoint décimal
D0...D7DigitsChiffres
UUnitUnité
CRCarriage ReturnRetour Chariot
LFLine FeedSaut de tr

[entete]Sigle[/entete]
[entete]Signification[/entete]
[entete]Descriptif[/entete]
 
Dernière édition:

pitufo2804

XLDnaute Junior
Re : Balance RS232 [RESOLU]

C'est pas bon.. c'est pour VB6 et sur le pc portable j'ai office 2007 avec VB7..

EDIT: Par contre je suis en train de me demandé s'il ne faut pas intégrer les fichiers du driver au projet...
J'ai testé sur la tour avec le module RS232 - USB et ça marche...

EDIT2: J'ai fais un test qui m'a paru très débile mais tellement désespéré que ça ne coutait rien... J'ai changé de port USB et miracle ça marche.... Et avec le dernier code :
Code:
'les Labels sont renommés ! c'est plus clair !
'exp Label1 = LbPds
Private KeyFinPesee As Boolean, PeseeEnCours As Boolean

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
KeyFinPesee = True
End Sub

Private Sub CommandButton1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 27 Then KeyFinPesee = True
End Sub

Private Sub CommandButton1_Click() 'test pour éviter plusieurs clic dessus
If PeseeEnCours = False Then SaisiePesees
End Sub
Private Sub SaisiePesees()
'test pesées en cours et init KeyFinPesee
PeseeEnCours = True: KeyFinPesee = False

'No du Port, vide buffer, initialise, ouverture
MSComm1.CommPort = 5: MSComm1.InBufferCount = 0: MSComm1.Settings = "1200,E,7,1": MSComm1.PortOpen = True

'init vars pour boucle des saisies
Dim Msg$, Pds$, LenBuffer As Integer
LenBuffer = 17 'longueur des données dans le buffer
On Error GoTo Sortie: Err.Clear
'init les labels et le texte+couleur du bouton
LbMsg.Caption = "": LbPds.Caption = ""
CommandButton1.Caption = "Appuyez sur Print" & vbLf & "Terminé sur Echap"
CommandButton1.ForeColor = &H8000&

Do
   MSComm1.InputLen = LenBuffer
   'boucle tant que toutes les données ne sont pas là
   Do While MSComm1.InBufferCount < LenBuffer
      DoEvents: If KeyFinPesee = True Then Exit Do 'ceci quand tape sur esc
   Loop
   If KeyFinPesee = True Then Exit Do Else Beep
   'Récupération des données, traitement de celles-ci, vide le buffer
   Msg$ = MSComm1.Input: LbMsg.Caption = Msg$
   Pds$ = Mid(Msg$, 8, 6): LbPds.Caption = Pds$
   MSComm1.InBufferCount = 0
   'Colle le Poids dans la Cellule Active et Active la suivante
   ActiveCell.Value = Pds$: ActiveCell.Offset(1, 0).Activate
Loop

'fermeture du port et sortie
Sortie:
If Err Then
   Msg$ = "Erreur " & Err.Source & "  No " & Err.Number & vbLf & vbLf & Err.Description
   MsgBox Msg$, vbCritical, "", Err.HelpFile, Err.HelpContext
End If
On Error GoTo 0: Err.Clear
MSComm1.InBufferCount = 0 'vide
MSComm1.PortOpen = False 'close
'reinit les labels et le texte+couleur du bouton
LbMsg.Caption = "": LbPds.Caption = ""
CommandButton1.Caption = "Pesées": CommandButton1.ForeColor = &H80000012
PeseeEnCours = False 'test fin pesées
End Sub
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Balance RS232 [RESOLU]

re

tu dis:
En fouinant sur le net j'ai cru comprendre que le fait de passer sur windows seven à la place de XP changeait qqch.. c'est vrai ou c'est du pipot ?

non ce n'est pas du pipot !
mais le problème vient souvent et surtout des mises à jour !
des fichiers écrasés remplacés ... et problèmes de compatibilité (propre à microsoft) !


EDIT: je viens seulement de voir ta modif EDIT2 !
suis très content pour toi !
je vais donc mettre de côté le nouveau code ! au cas où !?
il faut toujours penser à l'aide pour les autres "forumeurs" !
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Balance RS232 [RESOLU]

re

ne jamais oublier de vérifier si on a pas de manquant dans les références !

perso je n'ai pas Microsoft Comm Control 6.0

xxx.jpg
 

Pièces jointes

  • xxx.jpg
    xxx.jpg
    48.8 KB · Affichages: 111
  • xxx.jpg
    xxx.jpg
    48.8 KB · Affichages: 117

pitufo2804

XLDnaute Junior
Re : Balance RS232 [RESOLU]

Et un dernier UP apres j'y touche plus ( a moins de rencontrer un bug...)
J'ai rajouté une fenêtre de configuration pour la balance avec le choix du port, de la vitesse, de la parité, etc... et un bouton pour avoir accès au gestionnaire de périphériques afin de voir les ports COM disponibles.
 

Pièces jointes

  • Balance avec config.xls
    75.5 KB · Affichages: 109

pitufo2804

XLDnaute Junior
Re : Balance RS232 [RESOLU]

J'ai encore une question... (éternel insatisfait !)
alors, j'aimerai avoir 2 possibilité pour copier les poids dans les cellules, comme ça marche maintenant avec la cellule suivante qui se sélectionne et une autre en sélectionnant la cellule entre chaque pesée...
 

Roland_M

XLDnaute Barbatruc
Re : Balance RS232 [RESOLU]

bonjour,

je ne puis malheureusement pas t'aider !
je viens d'essayer ton classeur et il n'y a aucun test de sécurité dans ton code !
avec les accès aux ports il faut prévoir cela car c'est dangereux !
résultat, un plantage et blocage total de l'ordi !

j'ai dû me résoudre à couper le courant de l'ordi !

désolé !
 

Roland_M

XLDnaute Barbatruc
Re : Balance RS232 [RESOLU]

re

oui, mais la différence c'est que moi j'ai pas la librairie MScomm32.ocx
quand je fais compilation j'ai un message et là ok je reprend la main !
mais si je clic pour lancer l'userform et que je veux tester les ports, là c'est terminé !

et si je dis qu'il y a plantage, c'est qu'il y a plantage ! je sais de quoi je parle !
 

Roland_M

XLDnaute Barbatruc
Re : Balance RS232 [RESOLU]

re

excuses moi mais j'ai le même problème ! extinction de l'ordi !
mais c'est normal puisque je n'ai rien de branché !
donc ça bloque dans la boucle d'attente de données du port
et là il n'y a aucun recours, on n'a plus la main ! d'où plantage, en réalité bloquage !
 
Dernière édition:

Statistiques des forums

Discussions
312 201
Messages
2 086 172
Membres
103 152
dernier inscrit
Karibu