Problème d'affichage du méssage reçu par le modem sur un TextBox
cs_hawish
Messages postés12Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention27 juin 2009
-
9 juin 2009 à 16:11
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
11 juin 2009 à 00:53
Bonjour
je suis débutante en VB 6.0
s'il vous plaît je voudrais afficher chaque message reçu dans mon modem sur le PC
Je programme en Visual Basic 6.0 et je voudrais qu'il s'affiche sur un TexTbox
lorsque je teste le code il affiche uniquement
+CMTI:"MT",1 sur le TextBox
le 1 correspond à l'index du méssage dans la puce
et varie
Voici le code
Private Sub Form_Load()
With MSComm1
If .PortOpen Then .PortOpen = False
.Settings = "9600,N,8,1"
.DTREnable = True
.RTSEnable = True
.Handshaking = comNone
.RThreshold = 1
.SThreshold = 0
.InBufferCount = 0
.PortOpen = True
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
Form_Exit ComM_GSM
End Sub
Private Sub MSComm1_OnComm() 'On attend une activité sur le port
Dim Actif As String
'Select Case MSComm1.CommEvent 'On détermine de quel type d'activité il s'agit
If MSComm1.CommEvent = comEvReceive Then
' Retrieve all available data.
MSComm1.InputLen = 0
'liste des erreurs possibles
' Check for data.
If MSComm1.InBufferCount Then
' Read data.
Actif = MSComm1.Input
'If Len(Actif) > 0 Then
Text1.Text = Text1.Text & Actif
'End If
End If
End If
End Sub
s'il vous plaît repondez moi le plus vite possible
Merci d'avance pour votre aide
A voir également:
Problème d'affichage du méssage reçu par le modem sur un TextBox
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 juin 2009 à 19:29
Salut
Quel navigateur utilises-tu pour écrire ici parce que le manque de saut de page est une vraie galère pour relire ...
Tu as un code.
Quel est ton problème ?
Reçois-tu des infos correctement ? ou rien ?
Les évènements se déclenchent-ils ?
S'agit-il d'un problème de découpage de chaine reçue ?
D'après le code que je recomposé à partir de cette pelotte de lignes, dans Form_Load, il manque un "End If" quelque part
A mon avis (voir la doc), le "MSComm1.InputLen = 0" devrait apparaitre dans l'Init du port et pas à chaque récéption (je ne sais pas si ça a une influence)
Le commentaire "'liste des erreurs possibles" n'a pas grand chose à voir avec le code
Es-tu sûr que l'engin connecté à ce port série gère le protocole matériel ?
Combien de fils pour ta connexion ?
Si tu n'en as que 3 (S-R-Grd), il vaut mieux utiliser le protocole Xon/Xoff
Comment est configurée la connexion de l'autre côté ?
Les paramètres que tu as utilisés sont-ils du pifomètre ?
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 9 juin 2009 à 21:41
Jack <= Juste pour infos les mauvaises mises en formes surviennent depuis l'installation de IE8, il possede un nouveau moteur (sensé être compatible avec FireFox et cie... bref), mais pour poster ici il faut passer en mode compatibilité (60% des sites que j'ai pu visiter avec IE8 posent des problèmes en mode normal).
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 juin 2009 à 23:42
Etonnant.
J'utilise IE8 depuis longtemps et sans jamais avoir posté ce genre de texte sans CR.
Le phénomène date d'avant IE8 public, je pensais plutôt à Opéra ou autre.
Faudra qu'on fasse de réel essais ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_hawish
Messages postés12Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention27 juin 2009 10 juin 2009 à 00:07
Merci Jack de m'avoir répondu aussi vite
Au fait lorsque j'ai posté ce message j'ai utilisé comme navigateur Opera et le End If oublié c'est par inattention
Oui éffectivement j'ai plusieurs codes malheuresement tous ceux qui fonctionnent me donnent toujours le résultat suivant :
+CMTI: "MT", 1 le chiffre 1 étant le numéro de l'index du méssage dans la puce
J'utilise Comme modem un Siemens MC35i
mais le code que je vous ai envoyé est le plus stable, je vous le renverrai plus bas.
Je suppose que les évènements se déclenchent puisqu'il affiche +CMTI:"MT",1
Au fait je pensais faire un découpage de chaîne justement après avoir reçu sur le textbox le méssage envoyé par le téléphone parceque l'application que je dois réaliser nécessite un traitement d'information pour pouvoir déclencher d'autres évènements.
Y'a t'il un type de puce (carte SIM) spécifique à utiliser pour ce genre d'application ?
cs_hawish
Messages postés12Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention27 juin 2009 10 juin 2009 à 02:08
J'ai écrit MSComm1.InputLen=0 à chaque reception parceque le code nécessite la reception de plusieurs SMS avant l'arrêt de l'exécution du programme.
J'ai justement une inquiétude sur les risques de saturation de la mémoire tampon du port série, je voudrais justement éviter qu'elle soit saturée, Comment faire?
Aussi n'ayant pas de documentation sur le Modem Siemens MC35i je programme un peu à taton. Je comptais justement changer de Modem, mais bon j'attends vos suggestions.
Le Modem Siemens MC35i à comme port série un connecteur RS232 DB 9.
Je vous ai dis que je suis débutante, donc je ne m'y connais pas très bien en matière de protocole de communication utilisé pour ce type d'échange de données mais j'ai eu à tester certains codes en configurant mon hyperterminal et mon code avec le protocol XOn/XOFF mais pas exactement le code qui est ci-dessous.
Qu'entendez -vous par comment est configuré la connexion de l'autre coté, j'utilise un téléphone GSM normal avec une carte SIM de l'opérateur où je suis abonnée ausi bien dans mon téléphone que dans le Modem relié à mon PC.
j'ai utilisé à chaque fois les paramètres les plus standard dans le Modem ainsi que dans le Code que vous trouverez ci-dessous.
Private Sub Form_Load()
With MSComm1
If .PortOpen Then .PortOpen = False
.Settings = "9600,N,8,1"
.DTREnable = True
.RTSEnable = True
.Handshaking = comNone 'Je suppose que c'est ce protocole ci-dessous que je dois utiliser
' .Handshaking = comXOnXoff
.RThreshold = 1
.SThreshold = 0
.InBufferCount = 0
'J'ai testé mon code avec InputLen =0 dans le Form_Load mais ce n'était pas stable
'.InputLen = 0
.PortOpen = True
End If
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
Form_Exit ComM_GSM
End Sub
Private Sub MSComm1_OnComm() 'On attend une activité sur le port
Dim Actif As String
If MSComm1.CommEvent = comEvReceive Then
MSComm1.InputLen = 0
If MSComm1.InBufferCount Then
Actif = MSComm1.Input
'If Len(Actif) > 0 Then
Text1.Text = Text1.Text & Actif
'End If
End If
End If
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 juin 2009 à 09:23
Ah, c'est une comm avec un tel portable, savais pô.
Au fait, ta TextBox est-elle Multiligne ?
Parce qu'il est possible que tu reçoives des retour chariots, mais si ta TextBox ne l'affiche pas correctement, tu as peut-être l'impression que c'est la comm qui déconne.
Après ton TextBox = TextBox + Actif, ajoute ceci pour vérifier :
Debug.Print Actif
et regarde le résultat dans la fenêtre de debug (Ctrl-G)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 10 juin 2009 à 12:27
C'est donc bien la seule chjose qu'envoie ton téléphone.
Alors, es-tu sûr qu'il est sensé envoyer autre chose ?
Attend-il que tu lui envoie quelque chose pour continuer ?
Pour t'assurer que ce n'est pas une histoire de programme, tu peux utiliser HyperTerminal pour communiquer : Démarrer, Tous les programmes, Accessoires, Communication, Hyper Terminal.
Tant que ne sera pas sûr que d'autres informations arrivent réellement, difficile de trouver un bug de programme ou de comm.
Ca, il n'y a que la doc de ton appareil qui pourra te le dire.
cs_hawish
Messages postés12Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention27 juin 2009 10 juin 2009 à 15:44
Ok merci
Justement à chaque fois que je lance l'application je configure mon Modem à partir de l'hyperterminal et j'ai aussi testé l'envoi et la reception des SMS mais à chaque fois il faut utiliser la commande
AT+CMGS="numéro_Index" pour visualiser le message en question.
Connaissez-vous une commande AT qui permet à chaque fois uniquement l'affichage du dernier méssage reçu?
Mon souci majeur est le suivant :
Supposons que vous ayez un téléphone ou que vous soyez et vous m'envoyez un SMS(méssage) à partir de votre téléphone, ce message parvient dans la carte SIM de mon Modem qui est relié à mon PC ou ce trouve mon application VB 6.0 en marche.
Je voudrai que dès l'arrivée du message que vous avez envoyé dans mon modem, qu'il s'affiche directement dans le TextBox et par la suite je vais tronçonner la chaine envoyée pour recupérer l'information utile qui servira à déclencher une autre action.
En me documentant j'ai lu qu'il y'a une commande AT(Hayes) qui me perméttrais de mettre le message dans la mémoire tampon du port série dès son arrivé dans le Modem et ainsi j'ai pensé pouvoir le recupérer simplement avec mon code.
J'ai tester celle qui suivent : AT+CNMI? réponse 1,1,0,0,1
AT+ CNMI=1,1,0,0,1 'elle est supposée transférer les données qui arrivent dans le modem directement dans le port série. Mais à ma grande surprise je me retrouve toujours avec le même résultat
à savoir +CMTI: "MT", 1
J'ai même éssayé tous les protocoles et toujours le même résultat.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 juin 2009 à 00:53
Ce que je n'arrive pas à piger, c'est si ton problème est une question de programme ou de comportement de ton téléphone ?
Est-ce que tu as besoin de lui envoyer un ordre pour recevoir des données ?
On n'est pas spécialiste des échanges avec les téléphones.
Mieux vaudrait te rapprocher des docs techniques du téléphone.