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 :
L'application plante sur la ligne 15.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci d'avance pour vos réponses.
Partager