Problème d'affichage du méssage reçu par le modem sur un TextBox

Signaler
Messages postés
12
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
27 juin 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

11 réponses

Messages postés
12
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
27 juin 2009

Le type de Modem Utilisé est un Siemens MC35i
Merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
31
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. <
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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 ...
Messages postés
12
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
27 juin 2009

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 ?
Messages postés
12
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
27 juin 2009

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

Merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
12
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
27 juin 2009

merci encore


oui le TextBox que j'utilise est multiligne


après avoir testé le Debug.Print Actif, ça affiche dans la fenêtre d'éxécution et dans mon TextBox +CMTI:"MT",1


Merci 
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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.
Messages postés
12
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
27 juin 2009

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.

Merci.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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.