|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Problème d'envoi d'sms. [ Réseaux & Internet / Client - Serveur ] (zakaria616)
Informations & options pour cette discussion
|
samedi 31 mai 2008 à 16:59:05 |
Problème d'envoi d'sms.

zakaria616
|
Bonjour tout le monde, j'utilise un modem gsm pour envoyer les sms. Je dois envoyer l'ensemble des message contenu dans ma MSFlexGrid(2 colonnes : Numéro et message). Je dois faire une boucle.. j'ai fais une fonction send_sms : Code : PrivateFunction send_sms(num, body) ModemGSM.InBufferCount = 0'vider le buffer du modem Text2.text = ""'Text2 contient les réponse du modem ModemGSM.Output = "AT" & Chr$(13) PauseGetTickCount (1000)'permet d'attendre 1s(le temp pour que le modme répond) ModemGSM.Output = "AT+CMGF=1" & Chr$(13)'Format text PauseGetTickCount (1000) 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) EndFunction Voilà le bouton envoyer : Code : PrivateSub Envoyer_Click() 'nombre de lignes de la grille : lignes = grille.Rows - 1 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) For CRow = 1To lignes Call send_sms(grille.TextMatrix(CRow, 0), grille.TextMatrix(CRow, 1)) Next CRow EndSub voilà comment je récupère les réponses du modem : Code : PrivateSub Timer1_Timer()'interval = 100 If ModemGSM.InBufferCount <> 0Then Text2.text = Text2.text + ModemGSM.Input'Récupération des infos de communication avec le modem EndIf
EndSub quand je teste avec les même commandes AT dans l'hyperTerminal de windows ça marche impécable, le message s'envoi sans problème. Mais avec mon programme, le modem renvoi l'erreur suivante : Code : AT OK AT+CMGF=1 OK AT+CMGS="067******" > Mon message! +CMS ERROR: SIM busy 'Voilà ce que je comprend pas!!!!! pourquoi busy???occupée?? par quoi??? Si qq1 pourra m'aider j'en serai vraiment très reconnaissant... Merci.
|
|
|
|
lundi 2 juin 2008 à 11:27:49 |
Re : Problème d'envoi d'sms.

alligo
|
Salut,
Es-tu bien sur que ton modem est bien libre quand tu envoies ton message ?
essaye d'envoyer uniquement ton message, sans envoyer les commandes CFUN, CMGF et CMEE.
Ces commandes ne sont utiles que pour l'initialisation tu n'as pas besoin de lui repeter a chaque envoi. enfin je parle pour un modem siemens mc35i
|
|
|
|
dimanche 8 juin 2008 à 19:50:00 |
Re : Problème d'envoi d'sms.

philippe laschweng 1
|
Bonjour,
J'ai eu un peu le même genre de problème en utilisant un modem GSM. C'était intermittent et j'ai remarqué que mon modem n'aimait pas trop quand j'envoyais les commandes les unes derrière les autres sans TEMPO. Hé oui c'est un dialogue, si il comprends pas la commande précédente, pas la peine de lui renvoyer une nouvelle commande.
C'est pourquoi j'ai utilisé un Select Case pour temporiser le tout. J'envoie une commande, j'attends que le modem la reçoive et l'assimile puis je continu. c'est un peu plus lourd à gérer mais plus propre à mon avis. J'ai analysé ton code et ça me paraît tout bon.
Ci-dessous tu verras l'exemple de mon séquencement, mais tu peux essayer de lui intercaler une tempo entre le moment où tu balances ton numéro et le message du SMS pour voir si c'est bien ça.
'Ce Timer permet de voir la communication avec le modem. On recopie dans T_Rx.text
'ce que répond le modem. C'est obligatoire car on envoie une commande AT et pour pouvoir
'continuer, il faut attendre que le modem réponde
'Ce Timer ne se préocupe donc que de 'voir' ce que l'on fait
Private Sub Timer1_Timer()
If MSComm.InBufferCount > 0 Then
MSComm.InputLen = MSComm.InBufferCount
T_Rx.Text = T_Rx.Text + MSComm.Input
End If
End Sub
'Dans ce Timer, on utilise un séquencement avec le Select Case.
'Je le répéte, mais le principe est simple :
' --> D'abord on envoie une commande AT au modem
' --> Pour continuer, on va attendre que le modem ai compris la commande et qu'il nous réponde
'On ne peut pas tout lui balancer à la suite !!!
Private Sub Timer2_Timer()
Select Case Etp_Seq
Case 0
T_Rx.Text = ""
MSComm.Output = "AT" & Chr$(13) 'On vérifie que le modem est connecté (il doit répondre OK)
Etp_Seq = 1 'On passe à l'étape suivante ou l'on va attendre que le modem réponde (fait rien si pas le cas car ca ne sert à rien de continuer)
Case 1
'UCase permet d'obtenir systèmatiquement des majuscules
'10 ==> saut de ligne
'13 ==> retour charriot (CR)
'Attende que le modem réponde AT et OK
'La syntaxe est peut être un peu lourde mais le Chr$(13) & Chr$(10) veut juste dire que l'on saute à la ligne
If UCase$(T_Rx.Text) = "AT" & Chr$(13) & Chr$(13) & Chr$(10) & "OK" & Chr$(13) & Chr$(10) Then
T_Rx.Text = ""
Etp_Seq = 2 'Modem à répondu OK on continu (étape 2)
Else: mess = MsgBox("Communication avec le terminal Impossible ! Revérifiez les branchements !", vbCritical, "Erreur") 'Si modem réponds pas OK, il n'est pas branché et message d'erreur
If (mess = vbOK) Then
Etp_Seq = -1
TxtNuméro.Text = ""
TxtMessage.Text = ""
End If
End If
Case 2
T_Rx.Text = ""
'Chr$(34) --> caractère ASCII de (")
'On envoi au terminal le numéro de téléphone (pour bien faire les choses j'ai géré l'indicatif pays qui est +33 pour la France)
MSComm.Output = "at+cmgs=" & Chr$(34) & "+33" & Right(TxtNuméro, 9) & Chr$(34) & Chr$(13)
Etp_Seq = 3 'On continue à l'étape 3
Case 3
'Pareil : on attend que le message est compris la commande précédente (numéro) en nous répondant à la fin le symbole >
If UCase$(T_Rx.Text) = "AT+CMGS=" & Chr$(34) & "+33" & Right(TxtNuméro, 9) & Chr$(34) & Chr$(13) & Chr$(13) & Chr$(10) & "> " Then
T_Rx.Text = ""
Etp_Seq = 4 'On continu (étape 4)
End If
Case 4
T_Rx.Text = ""
'Chr$(26) --> caractère ASCII de la combinaison de touches CTRL+Z (permet
'de valider l'envoi du SMS aprés y avoir entré le texte du message => propre
'au terminal)
MSComm.Output = TxtMessage & Chr$(26) 'On rentre le message du SMS et on envoi
Etp_Seq = 5 'Etape 5
Case 5
TxtMessage.Text = ""
TxtNuméro.Text = ""
T_Rx.Text = ""
Etp_Seq = -1 'Dévalide l'envoi du SMS (Select Case inactif)
End Select
End Sub
C'est peut être autre chose mais si tu me dis que c'est OK avec l'hyperterminal je vois pas !!!
Bon courage,
Philippe
|
|
|
|
lundi 9 juin 2008 à 12:38:36 |
Re : Problème d'envoi d'sms.

alligo
|
@Philippe
j'ai procédé de la meme maniere avec mon modem.
tout fonctionne tres bien et j'ai ajouté un truc : en cas d'erreur je lui renvoie la derinere commande effectuée
un autre problem avec lequel j'ai du me battre : c'est la suppression automatique des messages. mon modem recoit un message, le traite, mais je n'ai pas besoin de le regarder. et j'ai eu des problemes avec la sequence, donc la pas le choix il fallait faire une pause relativement longue.
|
|
|
|
lundi 9 juin 2008 à 20:17:44 |
Re : Problème d'envoi d'sms.

philippe laschweng 1
|
Ok bah c'est tout bon si ça fonctionne !!
C'est souvent une histoire de temporisation quand on communique avec un périphérique plus ou moins lent à assimiler les commandes...
Bonne continuation !
Bien à toi,
Phil
|
|
|
|
lundi 9 juin 2008 à 20:27:17 |
Re : Problème d'envoi d'sms.

zakaria616
|
@Philippe votre méthode de séquancement dois marcher trés bien si on veux envoyer un seul sms. le problème se pose lorqu'on veut envoyer plusieurs sms succèssivement l'un après l'autre. Mon tableau(Msflexgrid) contient un ensemble d'sms à envoyer...donc je dois utiliser une boucle pour parcourir tout le tableau. j'ai testé celà avec votre méthode et ça marche pas..la boucle FOR pose beaucoup de problème pour moi à l'intérieur d'un Timer. J'ai essayé de remplacé le role du timer par la fonction PauseGetTickCount (), qui permet d'attendre le nombre passé en paramère en milliseconde...mais ça donne ce que vous voyez tout au dessus. Y'a t il moyen d'utiliser la boucle FOR à l'intérieur du timer??!!
|
|
|
|
lundi 9 juin 2008 à 20:36:05 |
Re : Problème d'envoi d'sms.

philippe laschweng 1
|
Ma méthode fonctionne aussi pour envoyer plusieurs SMS mais faut les envoyer un après l'autre. C'est sûrement plus long mais je n'ai jamais eu de plantage !!! J'ai installé ça sur une machine de supervision en Afrique vers la France et jamais loupé un SMS
Il suffit de détecter le numéro de séquencement pour savoir quand il a finit d'envoyer le SMS.
Là ooù c'est plus embêtant je l'admets, c'est quand tu reçois un SMS quand est entrain d'en envoyer un autre...
|
|
|
|
lundi 9 juin 2008 à 20:44:12 |
Re : Problème d'envoi d'sms.

zakaria616
|
Mais comment?? aidez moi svp, je vois pas comment je peux envoyer plusieurs messages l'un après lautre...c pas grave si c long.. je vous ai expliquer mon cas... j'espère que vous me mettrez du code : comment utiliser votre méthode avec une boucle FOR?? merci d'avance.
|
|
|
|
lundi 9 juin 2008 à 20:47:28 |
Re : Problème d'envoi d'sms.

philippe laschweng 1
|
L'indice de séquencement correspond à la variable Etp_Seq.
Au démarrage du projet, dans le Form Load je mets cette variable à -1.
Dés que tu veux envoyer un SMS, tu passes la variable à 0, et ça démarre tout seul vu que tu as un Timer qui tourne en boucle. A toit de t'en faire une fonction !!
Ensuite tu scrutes, tant que Etp_Seq n'est pas égal à -1 c'est que ton appli est en train d'envoyer un SMS. Dés que Etp_Seq passe à -1, tu peux balancer le deuxiéme SMS, et ainsi de suite !!!
|
|
|
|
lundi 9 juin 2008 à 20:53:37 |
Re : Problème d'envoi d'sms.

zakaria616
|
Oui apparement c ça, logique :) je vais essayer ça et vous dire ce que ça donnera. merci bcp ;)
|
|
|
Cette discussion est classé dans : sms, output, at, chr, modemgsm
Répondre à ce message
Sujets en rapport avec ce message
impression codebar + prix a coter [ par petiflamand ]
voici mon codeMSComm1.PortOpen = TrueOn Error Resume Next titre = Text1If Text2 "" Then prix = Text2 'Text2 + " F / " + Format((Text2 / 6.55957)
GSM USSD [ par khouja_mustapha ]
Bonjour j'ai connecté mon gsm à mon PC via un port COM j'utilise les commandes AT pour communiquer par exp : MSComm1.Output = "AT+CUSD=1," & Chr(34)
envoi SMS [ par khouja_mustapha ]
Bonjour, J'essai d'envoyer des SMS par une appli. VB, j'utilise les commandes AT. Ma question est ce que AT+CMGS="N° du destinataire" ou bien AT+CMG
Comment envoyer des SMS [ par khouja_mustapha ]
Salut tout le monde, Je cherche un code pour envoyer des SMS à partir de VB, j'en ai trouvé plusieurs sur internet mais ils sont des Demos et des Shar
Problème avec l'évenement OnComm de l'objet MSComm [ par politorichard ]
Voila je vous explique brievement mon problème :J'ai un capteur qui envoie en continu des données sur un port série, ce sont des strings de 6 caractèr
biblio introuvable [ par mannanaesc ]
bj à tous. svp g un probleme avec la biblio et jarrive pa à le resoudre. en fait à chake foi g le msg derreur "projet ou bibliotheque introuvable". vo
envoi de sms via modem d'un mobile [ par sysye ]
Bonjour a tousje dévéloppe une application qui envoi des sms à partir d'un PC via un modem à un telephone mobile.Pour le moment j'utilise un Nokia 520
Envoyer SMS via le VB6.0 [ par erriyadimounir ]
Bonjour,j'ai un projet dont lequel je dois envoyer un sms à un numéro portable entré,si qlq'un a des idées merci de me les envoyer,Merci d'avanceCordi
aide:envoie sms entre pc et telephone en java [ par gadbil ]
Bonjour,je suis en train de faire un stage.on m'a demendé de faire un pg qui permettra ,parmis d'autres, d'envoyer des sms d'un ordinateur vers un te
Help !! bin2hex avec multi-threading !! Urgent !! [ par XelectroX ]
Bonjour,Je cherche quelqu'un qui serait capable de me faire fonctionner cela correctement (problème décrit à la fin) :Public Class bin2hex <font co
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|