IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

"+CMS ERROR: SIM busy"


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 8
    Par défaut "+CMS ERROR: SIM busy"
    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 :
    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
    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
    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!")
    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
    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
    de l'aide SVP!

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Peut être que le destinataire n'est pas prêt ?
    Genre les premières lignes de la fonction servent à préparer le destinataire, celui-ci se prépare, mais les premiers sms sont trop rapidement envoyé et il n'est pas pret.
    Il faut environ un ou deux envois pour qu'ils soient pret, car cela correspond au temps dont le destinataire à besoin.

    Essaye de jouer avec le temps passé en paramètres de PauseGetTickCount.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo