Traitement du buffer MSCOMM + Extrait du code

moutaye_bis Messages postés 2 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 28 juin 2004 - 23 juin 2004 à 10:01
moutaye_bis Messages postés 2 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 28 juin 2004 - 28 juin 2004 à 10:44
Bonjour à tous

Je poste ce message car j'aimerais savoir comment récupérer "proprement" en vue d'une exploitation les données du buffer d'entrée lorsque l'on attaque un modem avec des commandes AT.

J'ai écrit un script qui attaque mon modem pcmcia GPRS avec une commande at+csq (commande qui retourne la valeur de l'atténuation du signal). Ensuite j'écris les données du buffer dans un fichier text mais je fais cela en bricolant car je connais peu VB et ses instruction. Voici la portion de code concernée :

---------------------------

Private Sub start1_Click()

'Déclaration des variables
Dim int1 As Integer
initstring$ = "at+csq" + vbCr
int1 = FreeFile

Open "C:\log_test.txt" For Output As #int1

'Configuration du port
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True

'Vide le tampon d'entrée.
MSComm1.InBufferCount = 0

'Envoie la commande AT
MSComm1.Output = initstring$

'Récupère le buffer dans une chaîne de caractères
Dim tampon$
tampon$ = tampon$ & MSComm1.Input

'Récupère les données du buffer et les stocke dans un fichier log
Do
DoEvents 'indispensable sinon ça marche pas!!!
tampon$ = tampon$ & MSComm1.Input
If InStr(tampon$, "+CSQ") Then
Print #int1, tampon$
End If
Loop Until InStr(tampon$, "OK" & vbCrLf)

'Fermeture du fichier d'écriture
Close #int1

'Fermeture du port
MSComm1.PortOpen = False

MsgBox ("Opération terminée")

End Sub

--------------------

En fait cette commande (AT+CSQ) renvoie au modem le résultat sous la forme (tel quel dans le fichier text): "at+csq
+CSQ: 17,0

OK
"
Ce qui m'intéresse c'est de récupérer la valeur (ici 17) afin de pouvoir l'exploiter proprement. Quelqu'un peut il m'indiquer un morceau de code ou une syntaxe de traitement de chaîne de caractères afin que je puisse réaliser cela proprement (vous le voyez dans mon code l'appel à la fonction instr(..) est vraiment du bricolage) ?

Merci d'avance pour votre aide et bonne journée à tous

2 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 25
26 juin 2004 à 10:49
salut

tu peux mettre à la place du If InStr(tampon$, "+CSQ") Then :
if tampon$ like "*at+csq*+CSQ:*OK*" 'ca teste si tampon est comme le modèle

puis
valeur = Val(Mid$(tampon$, InStr(tampon$, ":") + 1))

voilà

ShareVB
0
moutaye_bis Messages postés 2 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 28 juin 2004
28 juin 2004 à 10:44
merci pour cette syntaxe shareVB
0