Go Down

Topic: Errore su ciclo if per attivazione uscita  (Read 84 times) previous topic - next topic

daddi5

Buongiorno a tutti,
Vi chiedo cortesemente se riuscite a darmi una mano sto cercando di creare un ciclo if con una variabile ricavata dalla libreria Ethernet.event questo è il link: https://github.com/per1234/EtherEvent

In pratica utilizzo la variabile EtherEvent.readEvent(event); nel ciclo if:

 if (event ="1001"){
     
     digitalWrite(led, HIGH);
     }

e mi da questo errore error: incompatible types in assignment of 'const char [5]' to 'char [(((unsigned int)(((int)availableLength) + -0x000000001)) + 1)]

Come posso risolverlo?
Grazie mille in anticipo e buona giornata.

uwefed

#1
Aug 29, 2015, 02:18 pm Last Edit: Aug 29, 2015, 02:18 pm by uwefed
Per primo stai facendo nel IF una assegnazione "=" e non un confronto "=="
Per secondo il C non lavora direttamente con stringhe. Devi usare delle funzioni di stringhe opppure confrontare ogni elemento singolarmente.

Ciao Uwe

francesco_b

#2
Aug 29, 2015, 02:19 pm Last Edit: Aug 29, 2015, 02:20 pm by francesco_b
Di che tipo è la variabile event?

Da come l'hai comparata nell'if, essa dovrebbe essere una Stringa, forse l'errore è questo.
Se è come dico io,
è come se tu volessi comparare una variabile intera con una stringa.

e poi si usano due uguali per comparare e non uno solo

nid69ita

#3
Aug 29, 2015, 02:23 pm Last Edit: Aug 29, 2015, 02:23 pm by nid69ita
Buongiorno a tutti,
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare (pulsante </>).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
my name is IGOR, not AIGOR

daddi5

Ok grazie a tutti scusate se non mi sono presentato prima, ma ho rimediato subito.

Ho cambiato il ciclo if con due == e il mio programma viene compilato senza errori però non funziona.

la variabile che richiamo arriva dalla libreria del Link postato prima e vi inoltro il ciclo richiamato dalla mia funzione.

Code: [Select]
void EtherEventClass::readEvent(char eventBuffer[]) {
  strcpy(eventBuffer, receivedEvent);
  receivedEvent[0] = 0;  //reset the event buffer
  receivedEventLength = 0;


Come si può risolvere per ora non ho ancora molta esperienza in arduino riuscite a darmi una mano.
Grazie

francesco_b

Prova con
Code: [Select]
if (String(event) ="1001")
{
     ...
}

paulus1969

A prescindere, sempre == invece di = in questi casi.

cyberhs


daddi5

Grazie a tutti per l'aiuto, allora oggi provo con EventBuffer, perché anche con Serial(event) non funziona.

Come mai Event Buffer dovrebbe funzionare sapete darmi una risposta?

Grazie mille e buona giornata :)

Go Up