Bonjour,
j'essaie d'envoyer des sms à travers mon modem GSM et les commandes AT.
Mais ça donne cette erreur : "+CMS ERROR: SIM busy" à la fin! qq1 sait que peut être l'origine de cette erreur!??
En fait, cette erreur apparaît dans les premiers envois seulement! premier, et deuxième parfois... ensuite ça marche! je comprends pas pourquoi!
J'utilise la fonction suivante :
Voilà le bouton envoyer :
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 Private Function send_sms(num, body) ModemGSM.InBufferCount = 0 Text2.Text = "" ModemGSM.Output = "AT" & Chr$(13) PauseGetTickCount (1000) 'Fonction permettant d'attendre la valeur passé en paramètre en ms. Ici j'ai choisi une seconde comme temps d'attente de la réponse du modem. ModemGSM.Output = "AT+CMGF=1" & Chr$(13) 'Format text PauseGetTickCount (1000) ModemGSM.Output = "at+csca=" & Chr$(34) & "+21261000021" & Chr$(34) & ",145" & Chr$(13) 'Numéro du centre de service PauseGetTickCount (1000) Text2.Text = "" ModemGSM.Output = "at+cmgs=" & Chr$(34) & num & Chr$(34) & Chr$(13) 'Numéro destinataire PauseGetTickCount (1000) ModemGSM.Output = body + Chr$(26) 'Message (CTRL+Z) PauseGetTickCount (4000) 'Attente 4s(Estimation) End Function
J'utilise un timer pour récupérer le contenu du buffer :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 ModemGSM.Output = "AT+CFUN=1" & Chr(13) 'selects the level of functionality(1=Full functionality) PauseGetTickCount (150) ModemGSM.Output = "AT+CMEE=2" & Chr(13) 'Format des erreurs(2=text) PauseGetTickCount (150) OK = False 'nombre de lignes de la grille : lignes = grille.Rows - 1 'mettre les numéro de lignes coché dans un tableau : ReDim a_envoyer(lignes) As Integer With grille For CRow = 1 To .Rows - 1 .Col = 2 .Row = CRow If .Text = Chr(Checked) Then a_envoyer(CRow) = .Row Next CRow End With 'stocker le nombre de message coché dans une variable nbr_msg : nbr_msg = 0 For i = 1 To lignes If a_envoyer(i) <> 0 Then nbr_msg = nbr_msg + 1 Next i i = 0 'Procédure d'envoi des SMS For x = 1 To lignes If a_envoyer(x) <> 0 Then i = i + 1 OK = True StatusBar1.Panels(1) = "Envoi encours..." ligne = a_envoyer(x) Call send_sms(grille.TextMatrix(ligne, 0), grille.TextMatrix(ligne, 1)) If i = nbr_msg Then LngMess = MsgBox(nbr_msg & " Message(s) envoyé(s) avec succés.", vbInformation, "Informations...") End If Next x If OK = False Then LngMess = MsgBox("Veuillez sélectionner au moin un message à envoyer!", vbExclamation, "Attention!")
de l'aide SVP!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Timer1_Timer() 'Timer1.interval=60 If ModemGSM.InBufferCount > 0 Then ModemGSM.InputLen = ModemGSM.InBufferCount Text2.Text = Text2.Text + ModemGSM.Input 'Récupération des infos de communication avec le modem End If End Sub
Partager