Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir ,
Je pense que j'ai mal exprimé mon probléme de compréhension ! je crois avoir trouvé l'explication en tout cas, à force de ruminer !
En fait le texte reçu est traiter à la volée et non comme une chaine de caractères. c'est pour cela qui peut détecter un "U" puis ensuite un "N", puis "R" etc ... jusqu' a trouver " UNREAD" dans une phrase. en fait le programme test chaque caractère 1 à 1 et non chaine par chaine..... .
Pas tout a fait , car des qu'un message est reçu donc "UNREAD" il est lu, donc passe tout de suite en "READ". Par contre, la ou le programme d'exemple est peut être mal foutu, c'est que la commande demande d’afficher TOUT les messages ( "AT+CMGL=\"ALL\""), les UNREAD, les READ etc .... et ca, ça peut être long !!!
Je pense toute façon refaire le programme d'exemple à ma sauce, et m'inspirant du tiens et celui de l'exemple.
Je pense que j'ai mal exprimé mon probléme de compréhension ! je crois avoir trouvé l'explication en tout cas, à force de ruminer !
En fait le texte reçu est traiter à la volée et non comme une chaine de caractères. c'est pour cela qui peut détecter un "U" puis ensuite un "N", puis "R" etc ... jusqu' a trouver " UNREAD" dans une phrase. en fait le programme test chaque caractère 1 à 1 et non chaine par chaine..... .
la lecture des messages UNREAD peut prendre beaucoup de temps et aussi en taille ...
Pas tout a fait , car des qu'un message est reçu donc "UNREAD" il est lu, donc passe tout de suite en "READ". Par contre, la ou le programme d'exemple est peut être mal foutu, c'est que la commande demande d’afficher TOUT les messages ( "AT+CMGL=\"ALL\""), les UNREAD, les READ etc .... et ca, ça peut être long !!!
Je pense toute façon refaire le programme d'exemple à ma sauce, et m'inspirant du tiens et celui de l'exemple.
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
Je reprend mes investigations sur ce module !
Je cherche avant de me lancer dans la refonte du programme exemple à ma sauce, à etre certains d'avoir tout bien compris sur le focntionnement de celui ci .
Une chose me chagrine cependant sur cette petite fonction, et peut-être que vous pourriez éclairer ma lanterne :
J'ai écris test de baud rate, mais en fait ce n'est pas un test ni une calibration, mais tout simplement un arrêt pour être sûr que l'on est bien à la même vitesse ?
Je dis ça car il n'y aucune modification du baud rate, et donc si on est pas à la vitesse, on ne pourra jamais continuer dans le programme !
J’ai bon ?
merci de m'avoir lu !
Je reprend mes investigations sur ce module !
Je cherche avant de me lancer dans la refonte du programme exemple à ma sauce, à etre certains d'avoir tout bien compris sur le focntionnement de celui ci .
Une chose me chagrine cependant sur cette petite fonction, et peut-être que vous pourriez éclairer ma lanterne :
Code : Tout sélectionner
//------------------------------------------------------------------------------
// Test du baud rate
while(1){
M95_Send(atc0); //On envoi la commande "AT" pour obtenir la réponse "OK" et verifier la com
Delay_ms(100); // Laisse le temps de recevoir la réponse
if (Get_response() == GSM_OK) // Si la réponse du M95 repond est "OK" au test baud rate le programme peut continuer
break; // On sort de la boucle de test baud rate
}
J'ai écris test de baud rate, mais en fait ce n'est pas un test ni une calibration, mais tout simplement un arrêt pour être sûr que l'on est bien à la même vitesse ?
Je dis ça car il n'y aucune modification du baud rate, et donc si on est pas à la vitesse, on ne pourra jamais continuer dans le programme !
J’ai bon ?
merci de m'avoir lu !
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Voila une semaine de galère, en avancant à tatons !
Puis je me suis dis, il faudrait qu'il existe un forum dédié aux PIC pour poser ma demande d'aide !!
Blague à part .
Voici une ébauche de mon programme en construction. Pas trés subtile comme méthode, mais c'est la mienne. J'optimiserais au fur et à mesure quand tout fonctionnera .
Je suis actuellement vers la fin mais je but sur un probléme.
Le déroulemetn du programme est celui ci :
- Je check si j’ai un nouveau message ( avec la commandeM95_Send("AT+CMGL=\"REC UNREAD\"");)
- Si j'en ai pas je fais une pause de 2 secondes.
- si j'en ai un, j'enregistre le numéro de téléphone et la date et l'heure. ( GDH pour groupe date heure).
- j'envoie un petit message sur l'uart pour visualiser cette étape sur l'ordi.
- Si je reçois le mot "Chrono" j'enregistre e t transforme les valeurs recuesp our les utiliser ( pour le moment c'est inutile). J'envoie un autre message pour visualiser et je lève un flag pour dire qu'il faut que j'envoie la réponse.
Et la le bat blesse.
je compose mon numéro de téléphone pour envoyer la réponse, la ca passe encore et ca fonctionne bien .
A la suite de cette commande le module doit me répondre par un > sans mettre de CR ni de LF . Donc le symbol devrait se trouver en [0] de mon buffer.
Mais a chaque fois j'ai un message d'erreur qui s'affiche sur l'ordi et je ne comprends pas pourquoi .
Si vous comprennez quelques choses a ma facon de faire, et à mon probléme je vous en serait reconnaissant.
Merci poar avance
Puis je me suis dis, il faudrait qu'il existe un forum dédié aux PIC pour poser ma demande d'aide !!
Blague à part .
Voici une ébauche de mon programme en construction. Pas trés subtile comme méthode, mais c'est la mienne. J'optimiserais au fur et à mesure quand tout fonctionnera .
Je suis actuellement vers la fin mais je but sur un probléme.
Le déroulemetn du programme est celui ci :
- Je check si j’ai un nouveau message ( avec la commandeM95_Send("AT+CMGL=\"REC UNREAD\"");)
- Si j'en ai pas je fais une pause de 2 secondes.
- si j'en ai un, j'enregistre le numéro de téléphone et la date et l'heure. ( GDH pour groupe date heure).
- j'envoie un petit message sur l'uart pour visualiser cette étape sur l'ordi.
- Si je reçois le mot "Chrono" j'enregistre e t transforme les valeurs recuesp our les utiliser ( pour le moment c'est inutile). J'envoie un autre message pour visualiser et je lève un flag pour dire qu'il faut que j'envoie la réponse.
Et la le bat blesse.
je compose mon numéro de téléphone pour envoyer la réponse, la ca passe encore et ca fonctionne bien .
A la suite de cette commande le module doit me répondre par un > sans mettre de CR ni de LF . Donc le symbol devrait se trouver en [0] de mon buffer.
Mais a chaque fois j'ai un message d'erreur qui s'affiche sur l'ordi et je ne comprends pas pourquoi .
Si vous comprennez quelques choses a ma facon de faire, et à mon probléme je vous en serait reconnaissant.
Code : Tout sélectionner
/*
Test du module GSM2 click
* Description:
Ce programme utilise le module GSM Quectel M95 pour envoyer et recevoir des SMS
Je controle ma carte easy PIC et envoie son état par SMS .
*configuration:
MCU: PIC18F46K22 : http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf
Carte: EasyPIC7 : http://www.mikroe.com/easypic/
Oscillateur: HS 8.0000 MHz, 8.0000 MHz Crystal PLL disable
modules ext.: gsm2 clickick : http://www.mikroe.com/click/gsm2/ z
Quectel M95 : https://www.soselectronic.hu/a_info/resource/c/quectel/M95_ATC_V1.0.pdf
SW: mikroC PRO for PIC : http://www.mikroe.com/mikroc/pic/
* NOTES:
- Le clignotement de la led rouge "NET" rapide pas de connexion , lentement Connexion
*/
#define PWRKEY RE1_bit
char Message_SMS[255]; // Tableau de "char" composant le SMS
char Numero_tel[20]; // tableau pour placer le numéro de téléphone en string format : {"+336********"}
char Gdh[50];
char Buffer[100];
char Val_Heures[3];
char Val_Minutes[3];
char Val_Secondes[3];
unsigned int Index =0;
unsigned int temp, DataReady, i, Timeout ;
char Flag_OK, Message_a_envoyer, Attente_Message, Message_recu, Message_lu, Message_Ok;
int Heures, Minutes, Secondes;
//------- On efface le Buffer -------------------------
void RAZ_Buffer()
{
Index = 0;
for (Index=0; Index<=100; Index++)
{
Buffer[Index]=0;
}
Index = 0;
}
//------- On efface le message à envoyer -------------------------
void RAZ_Message_SMS()
{
for (Index=0; Index<=254; Index++)
{
Message_SMS[Index]=0;
}
Index = 0;
}
//------------------------------------------------------------------------------
// Envoi de commande ou donnée
void M95_Send(char *p){
while(*p) {
UART1_Write(*p++);
}
UART1_Write(0x0D); // On termine par un CR
}
//------------------------------------------------------------------------------
// Creation du corps du message
void Creation_du_message()
{
Message_SMS[0] = 0; // Initialisation du début de tableau
strcat(Message_SMS, "Valeur recues :"); // Ecrit du texte à la suite du NULL de départ
strcat(Message_SMS, "\r\n"); // Passe à la ligne(CR + LF)
strcat(Message_SMS, "H:");
strcat(Message_SMS, Val_Heures);
strcat(Message_SMS, " M:");
strcat(Message_SMS, Val_Minutes);
strcat(Message_SMS, " S:");
strcat(Message_SMS, Val_Secondes);
strcat(Message_SMS, "\r\n");
strcat(Message_SMS, "\r\n");
strcat(Message_SMS, "Voulez-vous le lancer ?");
strcat(Message_SMS, 0);
}
//##############################################################################
// Lecture des données dans le buffer UART par INT
void interrupt(){
if (RCIF_bit == 1) { // Si INT UART détecté
temp = UART1_Read(); // On récupere et stock la donnée
if (temp == 10) // Si "LF" detecté fin du message
{
DataReady = 1; // On signale au main qu'un message est pret
Buffer[Index] = 0 ; // On rajoute un terminateur de string
Index = 0 ; // On se place au depart pour le mot suivant
}
else
{
Buffer[Index] = temp; // Sinon on rajoute la lettre au Buffer
Index++; // On incremente pour le caractere suivant
}
}
}
//##############################################################################
//################### MAIN #############################################
//##############################################################################
void main(){
ANSELA = ANSELB = ANSELC = ANSELD = ANSELE = 0; // Tous les PORT en Digital
SLRCON = 0; // Set output slew rate on all ports at standard rate
TRISB = 0XFF ; // Entrée
TRISD = 0X00 ; // Sortie
TRISE = 0x00 ; // Sortie
LATD = 0; // Mis à zéro des sorties
LATE = 0; // Mis à zéro des sorties
//------------------------------------------------------------------------------
// Réglages de l'interruption
RC1IE_bit = 1; // Enable Rx1 intterupts
PEIE_bit = 1; // Enable peripheral interrupts
GIE_bit = 1; // Enable global interrupts
//------------------------------------------------------------------------------
// Activation de l'alim avec la pin PWRKEY
PWRKEY = 0; // Mise à zéro
delay_ms(3000); // Maintenir à 0 pendant plus de 2S
PWRKEY = 1; // Allume le module
//------------------------------------------------------------------------------
UART1_Init(4800); // Initialisation de l'UART
Delay_ms(100);
Sound_Init(&PORTC, 2); // Initialisation du Sound
Delay_ms(100);
//------------------------------------------------------------------------------
// Parametrages du débit
while(1){
M95_Send("AT"); // Reglage des messages de type "texte"
delay_ms(200);
if ( (DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
{
DataReady = 0;
break;
}
}
delay_ms(8000); // Configuration du baud-rate , ensuite initilaistaion du module
//------------------------------------------------------------------------------
// Parametrages du module
while(1){
M95_Send("AT+CMGF=1"); // Reglage des messages de type "texte"
delay_ms(100);
if ( (DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
{
DataReady = 0;
break;
}
}
while(1){
M95_Send("ATE1"); // Désactivation de la commande "Echo"
delay_ms(100);
if ( (DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
{
DataReady = 0;
break;
}
}
while(1){
M95_Send("AT+QMGDA=\"DEL ALL\""); // Envoi la commande pour effacer tous les messages
delay_ms(100);
if ( (DataReady==1)&&(Buffer[0]=='O')&&(Buffer[1]=='K') )
{
DataReady = 0;
break;
}
}
//------------------------------------------------------------------------------
// 3 Bips pour signifier l'initialisation c'est bien passéee et finie
for (i=0;i<=2;i++){
Sound_Play(2000, 50); // On joue un son
delay_ms(50);
}
Flag_OK = Message_a_envoyer = Attente_Message = Message_recu = Message_lu = 0;
Heures = Minutes = Secondes = DataReady = Message_recu = 0;
RAZ_Buffer();
RAZ_Message_SMS();
//##############################################################################
//####################### BOUCLE PRINCIPALE ################################
//##############################################################################
while(1) {
M95_Send("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
while (DataReady == 0); // On attend une réponse
DataReady = 0; // RAZ du flag
if ( (Buffer[0]=='O') && (Buffer[1]=='K'))
{
delay_ms(2000);
}
//--------- Apres une demande de lecture de message non lu on le traite -----
if ( (Buffer[22]=='"') && (Buffer[23]=='+'))
{
for (i=0;i<=11;i++) // on enregistre le Numero de tel
Numero_tel[i] = Buffer[23+i];
Numero_tel[i]=0;
for (i=0;i<=18;i++) // On enregistre la date et l'heure
Gdh[i] = Buffer[41+i];
Gdh[i]=0;
M95_Send("Message recu");
}
//------- Si le message recu commence par "Ch" pour Chrono on enregistre les valeurs
if ( (Buffer[0]=='C') && (Buffer[1]=='h'))
{
RC1IE_bit = 0;
Heures = (((Buffer[8])-48)*10)+(((Buffer[9])-48));
Val_Heures[0]= Buffer[8] ;
Val_Heures[1]= Buffer[9] ;
Val_Heures[2]= 0;
Minutes = (((Buffer[12])-48)*10)+(((Buffer[13])-48));
Val_Minutes[0]= Buffer[12] ;
Val_Minutes[1]= Buffer[13] ;
Val_Minutes[2]= 0;
Secondes = (((Buffer[16])-48)*10)+(((Buffer[17])-48)) ;
Val_Secondes[0]= Buffer[16] ;
Val_Secondes[1]= Buffer[17] ;
Val_Secondes[2]= 0;
M95_Send("Message a envoyer");
Message_a_envoyer = 1; // On signale qu'il faut répondre
RC1IE_bit = 1;
}
if (Message_a_envoyer == 1)
{
Message_a_envoyer = 0; // RAZ le flag
RAZ_Message_SMS();
Message_SMS[0]=0;
strcat(Message_SMS, "AT+CMGS=\""); // rajoute la commande d'envoi de message(CMGS) et on ouvre les guillemets
strcat(Message_SMS, Numero_tel); // On rajoute le nuémro de tel, Ex: "AT+CMGS=06******xx\""
strcat(Message_SMS, "\""); // et on ferme les guillemets
strcat(Message_SMS, 0);
M95_Send(Message_SMS);
while(1)
{
Index = 0;
if (Buffer[0]=='>')
{
//delay_ms(1000);
//Creation_du_message(); // On va créer le message
//M95_Send(Message_SMS);
M95_Send("Envoi");
UART1_Write(0x1A); // Envoi CTRL + Z comme caractere de fin
UART1_Write(0x0D); // Envoi un "CR"
//RAZ_Message_SMS(); // Aprés l'envoi, on efface le message
break;
}
}
}
}
}
Merci poar avance
Module GSM2-Click
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Jeremy
cela sous-entend un if else quelque part ... pas vu dans ton code
Je ferais un RAZ_buffer() avant d'envoyer la cde
"M95_Send("AT+CMGL=\"REC UNREAD\""); de sorte que l'index soit bien en position 0
- Si j'en ai pas je fais une pause de 2 secondes.
- si j'en ai un, j'enregistre le numéro de téléphone et la date et l'heure. ( GDH pour groupe date heure).
cela sous-entend un if else quelque part ... pas vu dans ton code
Je ferais un RAZ_buffer() avant d'envoyer la cde
"M95_Send("AT+CMGL=\"REC UNREAD\""); de sorte que l'index soit bien en position 0
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour Paul,
merci d'avoir jeté un œil dessus.
Oui , comme le code est fait seulement pour une application je suis allé directement a l'essentiel. Il n'est pas encore optimisé j'essaye de le faire fonctionner avant toute chose .
On retrouve donc le IF juste après l'envoi de la commande .
J'envoie la commande pour voir si il y a un message reçu . dans tous les cas, j'aurais forcement une réponse du module, soit c'est "OK" donc je n'ai rien reçu, soit c'est +CGMI ....... avec un " en buffer [22] et un + en buffer[23]
ok je testerai ce soir . Mais le problème n'est pas vraiment la, il est vraiment sur la réception du caractère ">" pas détectable par interruption car sans " LF" à la fin .
Peut être que mon buffer se rempli entre temps et donc mon caractère ne se retrouve pas en Buffer[0] , mais j'ai essayé tellement de chose . je vais reprendre au départ je pense.
merci d'avoir jeté un œil dessus.
cela sous-entend un if else quelque part ... pas vu dans ton code
Oui , comme le code est fait seulement pour une application je suis allé directement a l'essentiel. Il n'est pas encore optimisé j'essaye de le faire fonctionner avant toute chose .
On retrouve donc le IF juste après l'envoi de la commande .
J'envoie la commande pour voir si il y a un message reçu . dans tous les cas, j'aurais forcement une réponse du module, soit c'est "OK" donc je n'ai rien reçu, soit c'est +CGMI ....... avec un " en buffer [22] et un + en buffer[23]
Code : Tout sélectionner
M95_Send("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
while (DataReady == 0); // On attend une réponse
DataReady = 0; // RAZ du flag
if ( (Buffer[0]=='O') && (Buffer[1]=='K'))
{
delay_ms(2000);
}
Je ferais un RAZ_buffer() avant d'envoyer la cde
"M95_Send("AT+CMGL=\"REC UNREAD\""); de sorte que l'index soit bien en position 0
ok je testerai ce soir . Mais le problème n'est pas vraiment la, il est vraiment sur la réception du caractère ">" pas détectable par interruption car sans " LF" à la fin .
Peut être que mon buffer se rempli entre temps et donc mon caractère ne se retrouve pas en Buffer[0] , mais j'ai essayé tellement de chose . je vais reprendre au départ je pense.
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Re,
je viens de tester cela ne change rien ....
j’ai donc décider de recommencer, mais dans l'autre sens !
D'entrée de jeu ça fonctionne pas !
je pense que je patauge dans la semoule avec la vitesse d’exécution....
En ,envoyant un sms directement en rentrant le numéro de téléphone dans le programme ca fonctionne parfaitement. Mais des que je veux faire réagir le module sur la reception d'un SMS, j'y arrive .
Je pense qu'au final la méthode de la machine est plus simple a mettre en œuvre....
PAr exemple voici seulement la bocule prinicipale. Je n'ai aucun probléme pour l'initialisation.
Voici le résultat sur realterm:
J'envoie un sms , je le recois : +CMTI: "SM",1
J'appui sur mon BP (RB0) , ce qui as pour but d'envoyer la commande : "AT+CMGL="REC UNREAD");
Le module répond en envoyant 3 lignes à la suite.
pendant la reception j'enregistre le numero de telephone et le Gdh(Groupe date heure).
Puis je l'affiche .
la ca fonctionne ...... Mais d'ou vient ce PUT.... de message ERROR Je comprends pas mais alors vraiment pas
je viens de tester cela ne change rien ....
j’ai donc décider de recommencer, mais dans l'autre sens !
D'entrée de jeu ça fonctionne pas !
je pense que je patauge dans la semoule avec la vitesse d’exécution....
En ,envoyant un sms directement en rentrant le numéro de téléphone dans le programme ca fonctionne parfaitement. Mais des que je veux faire réagir le module sur la reception d'un SMS, j'y arrive .
Je pense qu'au final la méthode de la machine est plus simple a mettre en œuvre....
PAr exemple voici seulement la bocule prinicipale. Je n'ai aucun probléme pour l'initialisation.
Code : Tout sélectionner
while(1) {
if (PORTB.B0 == 1)
{
delay_ms(50);
if (PORTB.B0 == 1)
{
while (PORTB.B0 == 1);
M95_Send("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
}
}
if (DataReady==1)
{
DataReady = 0;
//--------- Apres une demande de lecture de message non lu on le traite -----
if ( (Buffer[22]=='"') && (Buffer[23]=='+'))
{
for (i=0;i<=11;i++) // on enregistre le Numero de tel
Numero_tel[i] = Buffer[23+i];
Numero_tel[i]=0;
for (i=0;i<=18;i++) // On enregistre la date et l'heure
Gdh[i] = Buffer[41+i];
Gdh[i]=0;
}
if ( (Buffer[0]=='C') && (Buffer[1]=='h'))
{
M95_Send(Numero_tel);
M95_Send(Gdh);
}
}
Voici le résultat sur realterm:
J'envoie un sms , je le recois : +CMTI: "SM",1
J'appui sur mon BP (RB0) , ce qui as pour but d'envoyer la commande : "AT+CMGL="REC UNREAD");
Le module répond en envoyant 3 lignes à la suite.
pendant la reception j'enregistre le numero de telephone et le Gdh(Groupe date heure).
Puis je l'affiche .
la ca fonctionne ...... Mais d'ou vient ce PUT.... de message ERROR Je comprends pas mais alors vraiment pas
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour ,
Voici un bout de programme qui fonctionne en parti . Disons que je reçois bien le SMS .
Mais je comprends toujours pas le mot "ERROR" et certains caractères qui s'ajoute !
Voici un bout de programme qui fonctionne en parti . Disons que je reçois bien le SMS .
Mais je comprends toujours pas le mot "ERROR" et certains caractères qui s'ajoute !
Code : Tout sélectionner
//##############################################################################
while(1) {
if (PORTB.B0 == 1)
{
delay_ms(50);
if (PORTB.B0 == 1)
{
while (PORTB.B0 == 1);
Uart_Write_Text("AT+CMGL=\"REC UNREAD\""); // On demande si il y a un message non lu
UART_Write(13);
UART_Write(10);
}
}
if (DataReady==1)
{
DataReady = 0;
//--------- Apres une demande de lecture de message non lu on le traite -----
if ( (Buffer[22]=='"') && (Buffer[23]=='+'))
{
for (i=0;i<=11;i++) // on enregistre le Numero de tel
Numero_tel[i] = Buffer[23+i];
Numero_tel[i]=0;
for (i=0;i<=18;i++) // On enregistre la date et l'heure
Gdh[i] = Buffer[41+i];
Gdh[i]=0;
}
if ( (Buffer[0]=='C') && (Buffer[1]=='h'))
{
//RC1IE_bit = 0;
M95_Send(Numero_tel);
M95_Send(Gdh);
delay_ms(500);
RAZ_Message_SMS();
Message_SMS[0]=0;
strcat(Message_SMS, "AT+CMGS=\""); // rajoute la commande d'envoi de message(CMGS) et on ouvre les guillemets
strcat(Message_SMS, Numero_tel); // On rajoute le nuémro de tel, Ex: "AT+CMGS=06******xx\""
strcat(Message_SMS, "\""); // et on ferme les guillemets
strcat(Message_SMS, 0);
M95_Send(Message_SMS);
//RC1IE_bit = 1;
delay_ms(500);
Index = 0;
if (Buffer[0]=='>')
{
RC1IE_bit = 0;
UART_Write_Text("Enfin");
UART1_Write(0x1A); // Envoi CTRL + Z comme caractere de fin
UART1_Write(0x0D); // Envoi un "CR"
RC1IE_bit=1;
}
}
if ( (Buffer[0]=='O') && (Buffer[1]=='K'))
{
delay_ms(100);
}
}
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous,
Bon j'avance petit à petit, mais alors vraiment petit à petit .........
Pour visualiser sur mon écran mes valeurs, j’envoie des phrases clefs ! du genre :
Mais forcement ces phrases vont aussi sur le module QUECTEL qui ne les comprends pas ! donc il me renvoie ERROR !!
J'affine mon programme, mais y'aura de la grosse optimisation a faire !
Bon j'avance petit à petit, mais alors vraiment petit à petit .........
Mais je comprends toujours pas le mot "ERROR" et certains caractères qui s'ajoute !
Pour visualiser sur mon écran mes valeurs, j’envoie des phrases clefs ! du genre :
Code : Tout sélectionner
M95_Send(Numero_tel);
M95_Send(Gdh);
Mais forcement ces phrases vont aussi sur le module QUECTEL qui ne les comprends pas ! donc il me renvoie ERROR !!
J'affine mon programme, mais y'aura de la grosse optimisation a faire !
Module GSM2-Click
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
kiki connait la magie ?
Un truc de fou, comment voulez vous que je pète pas un câble avec ça .
Si j’enlève les lignes en commentaires ça me "reset" le module. Si je les mets en commentaires , ca fonctionne parfaitement !
Si j'en met qu'une en commentaire ca reset aussi ! J'ai essayé 5 fois de suite, même résultat a chaque fois . Je vais rajouter un smileys qui s’arrache les cheveux !
Franchement si vous trouvez la solution respect !!!!! je précise que ma RAM est utilisé a 16% et ma ROM a 8% .
La broche d'alimentation est sur la Broche RE1, quand je reçois un sms, elle s'éteint donc ca reset le module. Mais pourquoi elle s'éteint ????
Voici la partie du code incriminer :
Ce sont les reponse 5 et 6 qui me font foirer le programme ! si 'jen met une des deux ca plante quelque soit le message envoyé. Si je les mets en commentaires ça fonctionne impeccable quelques soit le message envoyé.
Un truc de fou, comment voulez vous que je pète pas un câble avec ça .
Si j’enlève les lignes en commentaires ça me "reset" le module. Si je les mets en commentaires , ca fonctionne parfaitement !
Si j'en met qu'une en commentaire ca reset aussi ! J'ai essayé 5 fois de suite, même résultat a chaque fois . Je vais rajouter un smileys qui s’arrache les cheveux !
Franchement si vous trouvez la solution respect !!!!! je précise que ma RAM est utilisé a 16% et ma ROM a 8% .
La broche d'alimentation est sur la Broche RE1, quand je reçois un sms, elle s'éteint donc ca reset le module. Mais pourquoi elle s'éteint ????
Voici la partie du code incriminer :
Ce sont les reponse 5 et 6 qui me font foirer le programme ! si 'jen met une des deux ca plante quelque soit le message envoyé. Si je les mets en commentaires ça fonctionne impeccable quelques soit le message envoyé.
Code : Tout sélectionner
if (Buffer[0]=='>')
{
delay_ms(100);
RC1IE_bit = 0;
switch (reponse) {
case 1: {
Creation_du_message();
M95_Send(Message_SMS);
break;
}
case 2: {
UART1_Write_text("Le Chrono est parti !");
UART1_Write(0x0D);
UART1_Write(0x0A);
break;
}
case 3: {
UART1_Write_text("La demande est annulée");
UART1_Write(0x0D);
UART1_Write(0x0A);
break;
}
case 4: {
UART1_Write_text("ERREUR DE FORMAT\r\nIl faut envoyer :\r\nChrono Hxx Mxx Sxx");
UART1_Write(0x0D);
UART1_Write(0x0A);
break;
}
/* case 5: {
UART1_Write_text("Le chrono a ete arreter !");
UART1_Write(0x0D);
UART1_Write(0x0A);
break;
}
case 6: {
UART_Write_text("Ceci est mon etat");
UART1_Write(0x0D);
UART1_Write(0x0A);
break;
}
*/
}
delay_ms(100);
UART1_Write(0x1A); // Envoi CTRL + Z comme caractere de fin
delay_ms(100);
RC1IE_bit = 1;
delay_ms(1000);
Attente_OK();
}
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 121 invités