Analisi dati ricevuti in seriale.

Buongiorno a tutti, vorrei essere in grado di far analizzare una piccola parte della sequenza che la mia radio invia in seriale ad ogni cambio di gamma per la commutazione di eventuali filtri esterni.. Questo che segue è un esempio della sequenza completa.

FA00003800000;FB00003645000;RT0;RO-0000;MD1;MD$1;IF00003800000 -000000 0001000001 ;

Sto cercando inutilmente da giorni di rilevare se al sesto e settimo posto ci sono i caratteri da me cercati (03 nell’esempio).

Finora ho avuto successo solo nel far rilevare al mio Mega la generica presenza (in qualsiasi punto della sequenza ricevuta) di quanto da me cercato, ma non sono stato in grado di usare gli strumenti che credo esserci per una ricerca mirata alla posizione.

C’è qualcuno che gentilmente voglia indicarmi la strada e dirmi come trattare la sequenza e proporre il primo “IF”? Grazie mille!

Buon giorno,
forse dico una cosa ovvia, nel caso mi scuso, ma ha provato a vedere la stringa come un array di caratteri e scorrerli in un ciclo FOR?
Oppure, ma non sono abbastanza padrona del linguaggio di programmazione, provare a scompattare la stringa in tante più piccole, esempio usando il “;” come fine stringa? Una cosa simile alla funzione Right o Left di VBA.
Un’altra idea che mi viene in mente è se fosse possibile usare delle istruzioni del PERL (anche qui non sono più fresca del linguaggio per suggerire qualcosa di più sensato).
Spero di non aver detto troppe inutilità tutte insieme. Buona fortuna, cb.

non sono ancora abbastanza pratico di arduino per aiutarti nel codice ma provo a ragionare con te...dovresti conoscere:

  • la lunghezza della sequenza o, se non fissa, il separatore tra una sequenza e l'altra
  • avere una variabile di conteggio (va inizialmente posta a zero ed azzerata al raggiungimento della lunghezza o del separatore)
  • avere una variabile booleana di appoggio posta a inizialmente false
  • fare un ciclo di lettura sulla seriale che duri la lunghezza della sequenza o da un separatore all'altro
  • incrementare di 1 la variabile di cointeggio ad ogni iterazione del ciclo
  • se la variabile di conteggio è pari a 5 (6° carattere) ed il carattere letto pari a '0' setti la variabile booleana di appoggio a true altrimenti puoi fermarti sino al ciclo successivo
  • se la variabile di conteggio è pari a 6 (7° carattere), la variabile booleana di appoggio è pari a true ed il carattere letto è pari a '3' fai quello che devi altrimenti risetti la variabile booleana di appoggio a false e puoi fermarti sino al ciclo successivo

Spero ti sia utile

Ringrazio per le risposte che hanno evidenziato la mia ristrettezza di vedute. Il ventaglio di strade proposto mi alletta senz’altro ad approfondire.

Buon anno!