Accueil > Forum > > > > Problème d'envoi d'sms.
Problème d'envoi d'sms.
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ée 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)
Utiliser une carte relai USB [ par DiabloduNord ]
Bonjour, Je cherche de l'aide car j'ai acheter depuis peu une carte comportant 8 relais et pour faire fonctionner ces derniers il faut brancher la ca
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
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|