Lire données RS232 en VBA
Bonjour à tous
Pour commencer une petite question : Quand j'avais des questions en VBA j'avais pour habitude de les poser sur un autre forum (dont j'ai oublié l nom, étant donné que j'y allais moins d'une fois par an) plutôt orienté VB, mais je n'arrive plus à le retrouver. Quelqu'un saurait si il a disparu ?
Je me suis donc réinscris ici pour venir vous poser mes questions...
Aujourd'hui je travaille sur une petite application qui permet de récupérer des pesées d'une balance.
Après de nombreux essais j'ai fini par trouver un activeX qui semble fonctionner : XMComm (http://home.comcast.net/~hardandsoftware/xmcomm.htm)
Toutefois je rencontre un problème étrange. Quand j'utilise le COM1 j'ai systématiquement un message d'erreur "port already open" au moment de l'ouvrir, bien qu'en exécutant mon appli pas à pas le port soit fermé juste avant d’en demander l'ouverture. Avec le COM3 je n'ai pas cette erreur.
Voici mon code récupéré d'une page, et pas encore adapté à mon besoin :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Private Sub CommandButton1_Click()
' Tampon devant contenir la chaîne d'entrée
Dim Instring As String
' Utilise COM1.
With UserForm1.XMComm1
.CommPort = 1
' 9600 bauds, pas de parité, 8 bits de données et 1 bit d'arrêt.
.Settings = "9600,N,8,1"
' Indique au contrôle qu'il doit lire la totalité
' du tampon si la propriété Input est utilisée.
.InputLen = 0
' Ouvre le port.
.PortOpen = True
' Envoie la commande Attention au modem.
.Output = "ATV1Q0" & Chr$(13) ' Vérifie que
'le modem répond "OK"
' Attend le retour des données vers le port série.
Do
DoEvents
Buffer$ = Buffer$ & .InputData
Loop Until InStr(Buffer$, "OK" & vbCrLf)
' Lit les données composant la réponse "OK" au niveau du port série.
' Ferme le port série.
.PortOpen = False
End With
End Sub |
L'application plante sur la ligne 15.
Merci d'avance pour vos réponses.
Piloter une balance via BillRedirect
Bonjour,
La meilleur façon que nous avons trouvé pour récupérer le poids d'une balance en VBA Excel c'est via le logiciel Bill Redirect de la société www.BillProduction.com . Leur logiciel offre la possibilité de rapidement communiquer avec une balance RS232 ou USB et de rediriger le poids vers Excel via un Plugin Excel offert gratuitement. Donc vous avez [Balance]--(RS232/USB)--[BillRedirect]--[Excel Plugin]--[Excel]
Le poids peut être envoyé vers Excel via:
- Une commande VBA
- Un bouton dans l'écran créer par l'application
- Une macro
- Automatiquement quand le poids est stable
...
J'espère vous avoir aider et que ce partage de technologie vous fera sauver du temps et de l'argent ;)