PIC E SIM340

13 Anni 1 Mese fa #16 da davix10
Risposta da davix10 al topic Re: PIC E SIM340
Sono riuscito a capire che su hyperterminal non ricevo le giuste cose ma in realtà il modulo le riceve.
Come posso fare per confrontare due stringhe?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • davix10
  • Senior Member
  • Senior Member
Di più
13 Anni 1 Mese fa #17 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: PIC E SIM340
Ciao,

se fai uso del C18 e' presente la funzione string compare. La descrizione la puoi trovare nel file MPLAB-C18-Libraries che trovi all'interno della directory doc della directory d'installazione C18.

In alternativa, visto che una stringa e' un array, puoi creare un array con la stringa con cui vuoi fare il confronto e controlli elemento per elemento la stringa ricevuta e quella per il confronto, fino al carattere speciale di fine stringa '\0'
In realta' ci sono modi per ottimizzare il tutto visto che la stringa per il confronto puo' risiedere in memoria flash (costante).
La libreria C18 fornisce varie funzioni a seconda del tipo di confronto, ovvero a seconda di dove risiedono le stringhe.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 1 Mese fa #18 da davix10
Risposta da davix10 al topic Re: PIC E SIM340
Grazie della risposta. Qui ho una parte di programma e volevo chiederti perchè mi da un errore:
while (1)
{
unsigned char corretto[]="OK";
unsigned char i=0;
unsigned char input,error;
unsigned char output;
unsigned char data;
unsigned char x_dati; // Indice all'array.
input = 0;
output = 0;

putrsUSART((const far rom char *)"AT\r\n");// AT command test
while(!BusyUSART());
Delay10KTCYx(200);
Delay10KTCYx(200);
Delay10KTCYx(200);

data[x_dati] = ReadUSART();

WriteUSART (data);
}

Mi da questo errore Error [1129] [] operator requires a pointer and an integer as operands

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • davix10
  • Senior Member
  • Senior Member
Di più
13 Anni 1 Mese fa #19 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: PIC E SIM340
Prova in questo modo:

unsigned char corretto[] = { 'O', 'K', '\0' };

oppure

unsigned char *corretto = "OK";

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
13 Anni 1 Mese fa #20 da davix10
Risposta da davix10 al topic Re: PIC E SIM340
Ho provato nel secondo modo:
while (1)
{
unsigned char *corretto = "OK";
unsigned char i=0;
unsigned char input,error;
unsigned char output;
unsigned char data;
unsigned char x_dati; // Indice all'array.
input = 0;
output = 0;

putrsUSART((const far rom char *)"AT\r\n");// AT command test
while(!BusyUSART());
Delay10KTCYx(200);
Delay10KTCYx(200);
Delay10KTCYx(200);

data = ReadUSART();

WriteUSART (data);


if (strcmppgm2ram(corretto,data)==0)
{
PORTAbits.RA0=1;
Delay10KTCYx(255);
PORTAbits.RA0=0;
Delay10KTCYx(200);
}
else
{
PORTAbits.RA0=1;
Delay10KTCYx(255);
Delay10KTCYx(255);
Delay10KTCYx(255);
}
}

E' giusto il comando strcmppgm2ram scritto in quel modo?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • davix10
  • Senior Member
  • Senior Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login