ABCelectronique : portail d'information dans le domaine de l'électronique

Merci de ne pas poster des messages en relation avec le piratage.


    Forums de Abcelectronique > Software / Péri-informatique
  » problème de routine avec mplabX
Identifiant Se souvenir de moi ?
Mot de passe
Répondre     Nouvelle discussion
problème de routine avec mplabX

 

babasse
babasse ★★☆☆☆☆☆ 22/04/2017, 15h56 #1  
Je suis sur un programme compilé avec mplabX et XC8 géneré avec mplab code configurateur(MCC) pour faire fonctionner un récepteur GSM(GSM Click).
mon programme ce déroule du début à la fin sans problème(vérifier sur écran LCD) sauf que j ai aucune transmission est faite.
voilà j ai une routine pour envoyer une chaine de caractères et sa bloque(composée avec mcc).

void putch(char txData)
{
EUSART1_Write(txData);
}

le programme quand a lui est écrit a l'origine est déjà teste avec mikroC sur pic.
est-qu' il y aurait une autre méthode pour envoyer les chaines de caractères?
voilà sur quoi je l'utilise:
void SMSbegin(char *phoneNo){
char reply = 0;
int timeout = 1;
putch("AT+CMGS=\"");
putch(phoneNo);
GSMcmd("\"");
}
Merci
maî
maî ★★★★★☆☆ 22/04/2017, 16h47 #2  
bonjour

Je ne comprend pas très bien ce que tu as écris .
Déja, ce qui et fait pour microc , ne va pas pour X8.
Ta fonction void putch(char txData) attend 1 caractère, txData, la fonction void SMSbegin(char *phoneNo) est un pointeur, phoneNo.
Je ne vois pas comment cela peu fonctionner de plus dans les transmissions de chaîne il y a en principe un fin de chaine, un 0D H ou un retour page ou rien si rien on compte le NB a envoyer.

et la on ne sait pas trop..

A+
__________________
le souffle du vent passe ...........
babasse
babasse ★★☆☆☆☆☆ 22/04/2017, 17h26 #3  
C est un coup à fermer boutique!
SMSbegin est utiliser dans une autre routine qui elle s'occupe d'écrire un sms.
je comprend pas pour écrire une commande(par exemple) j'utilise:

void GSMcmd(char *ch)
{
while(*ch)
if(EUSART1_DataReady)
EUSART1_Write(*ch++);
EUSART1_Write(0x0D);
}
donc si je comprend pour envoyer une chaine de caractères:

void UART_Writ_text (char *texte)
{
unsigned int v;
for(v=0 ;texte[v] != '\0'; v++)
EUSART1_Write(texte[v]);
}
je pense c'est ça mais là pas arrêt ni de vérif!
j'ai essayer cette routine mais ça ni change rien!
mikroe c'est pas mis au pic18f25k22?
maî
maî ★★★★★☆☆ 22/04/2017, 20h04 #4  
On passe par UART pour communiquer avec ton module GSM pour la réception tu tests si c'est le caractère 0D H que tu reçois, pour dire c'est la fin de la transmission.
En émission tu fais de même tu tests si caractère qui a était envoyer est 0D H alors fin d’émission
ta chaine peut-être du style
Code:
char chaine1[14]="160916231500\0";


avec un pointeur sur chaine1

A+

ps il serai bien aussi de regrouper tes fonctions rx avec réception tx avec émission. Tu dois donc avoir, une routine émission, et une routine réception et puis c'est tout. A toi après de faire joujou avec ton pointeur pour envoyer la bonne chaine
__________________
le souffle du vent passe ...........

Dernière modification par maî 22/04/2017 à 20h56.
Répondre