MANIPOLAZIONE DI STRINGHE

di il
11 risposte

MANIPOLAZIONE DI STRINGHE

Buongiorno a tutti, sono un programmatore autodidatta a cui piace creare firmware per PIC; ho sempre gestito numero e mai stringe di caratteri e quindi mi trovo in difficoltà; ricevo caratteri da una scheda, devo esaminarne il significato e trasmettere a questa scheda altri caratteri tramite un PIC; ho notato che se immagazzino i caratteri in un array CHAR, non riesco a passarne degli altri ad una funzione dichiarata CHAR per la trasmissione e credo che il motivo sia che non utilizzo i puntatori; ho centrato il problema?

11 Risposte

  • Re: MANIPOLAZIONE DI STRINGHE

    Scusa ma non hai fornito quello che serve.

    Del codice tuo di esempio di quello che fai e che non funziona. Altrimenti si rimane troppo sul generico.

    Mi sembra la ripetizione del primo thread dove dicevi di avere fatto progressi in base alle mie risposte.
  • Re: MANIPOLAZIONE DI STRINGHE

    #include <string.h>

    char Online[] = "AT+CREG=?;\r\n"; //Dichiarazione di un array con i caratteri che devo trasmettere al PIC

    while (1) //main del programma
    {
    for (n = 0; n < 13; n++)
    {
    Trasmissione(Online[n]);
    }


    char Trasmissione(char valore)
    {
    Routine_Ritardo(100); //Assestamento linea
    RCIE = 0; //Disabilitazione interrupt ricezione
    TXEN = 1; //Abilitazione trasmissione seriale

    //INIZIO TRASMISSIONE
    Routine_Ritardo(50); //Assestamento linea

    while(TXIF)
    {
    TXREG = valore;
    Routine_Ritardo(50); //Assestamento linea
    }

    //SETTAGGIO RICEZIONE
    TXEN = 0; //Disabilitazione trasmissione seriale
    Routine_Ritardo(50); //Assestamento linea
    RCIE = 1; //Abilitazione interrupt ricezione
    return 0;
    }
  • Re: MANIPOLAZIONE DI STRINGHE

    Trasmissione(Online);

    char Trasmissione(char *str)

    E poi usi una for per inviare ogni carattere dell'array



    P.S. utilizza i tag CODE per postare il codice sul forum
  • Re: MANIPOLAZIONE DI STRINGHE

    Provandolo col simulatore di MPLABX non funziona lo stesso...mi trasmette sempre e solo il primo carattere dell'array
  • Re: MANIPOLAZIONE DI STRINGHE

    Non so che hai scritto quindi che ti posso rispondere?
  • Re: MANIPOLAZIONE DI STRINGHE

    Ho scritto quello che ti ho inviato. Io ho precedentemente chiesto: per passare un array di stringa bisogna utilizzare i puntatori?
    I progressi li avevo fatti, ma ora che devo trasferire dei caratteri da trasmettere non ci riesco.
  • Re: MANIPOLAZIONE DI STRINGHE

    Ma hai letto la mia risposta dopo che hai postato il codice?

    La tua funzione dovrebbe accettare un puntatore a char e non restituire nulla, quindi
    
    void Trasmissione(char *str)
    {
    
    }
    
    ovviamente senza return finale.

    La chiami semplicemente con
    
    Trasmissione(Online);
    
    e al suo interno puoi utilizzare una for per inviare i caratteri anche se modificherei la while di invio nel modo seguente
    
    int i, n;
    
    n=strlen(str);
    for(i=0; i<n; i++)
    {
       while(!TXIF) ;
       
       TXREG = str[i];
    }
    
  • Re: MANIPOLAZIONE DI STRINGHE

    L'avevo fatto funzionare ma nella compilazione mi dava un warning. Così è perfetto grazie, anche perchè la funzione è versatile per tutti gli array che devo trasmettere, avendo la stringa che mi misura la grandezza dell'array. Quindi posso dedurre che quando si manipolano array stringa bisogna fare uso dei puntatori?
  • Re: MANIPOLAZIONE DI STRINGHE

    Un array è individuato da un puntatore. Dovresti studiare la parte di C relativo agli array perché è meglio per proseguire con lo sviluppo.
  • Re: MANIPOLAZIONE DI STRINGHE

    Hai ragione, lo farò, grazie ciao.
  • Re: MANIPOLAZIONE DI STRINGHE

    Se vuoi velocizzare ed ottimizzare il codice, puoi scrivere
    
    while(*str)
    {
       while(!TXIF) ;
       
       TXREG = *str++ ;
    }
    
Devi accedere o registrarti per scrivere nel forum
11 risposte