Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Arduino vs ESP (EnOcean serial protocol)

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Arduino vs ESP (EnOcean serial protocol)

Messaggioda Foto UtenteMatteo1991 » 20 nov 2015, 19:49

Salve, sono sempre alle prese con i protocolli enocean.
Dovendo inviare dei pacchetti dati tra due moduli tcm320, mi trovo in una situazione di stallo. Mi spiego:
date un occhiata qui:
https://www.enocean.com/fileadmin/redaktion/support/dolphin-api/esp2_page.html
Volendo mandare dei dati da un arduino, scrivendo nel modo seguente le cose non funzionano:
Codice: Seleziona tutto

Serial3.write(SYNC1);
Serial3.write(SYNC1);
Serial3.write( HEADER);
Serial3.write(DATO1);
Serial3.write(DATO2);
Serial3.write(DATO3);
Serial3.write(DATO4);
Serial3.write(DATO5);
Serial3.write(DATO6);
Serial3.write(DATO7);
Serial3.write(DATO8);
Serial3.write(DATO9);
Serial3.write(DATO10);
Serial3.write(DATO11);


Ovviamente le variabili sono opportunatamente dichiarate.

La domanda è questa: come faccio a concatenare i dati in modo da formare un solo pacchetto (come nel link) ed inviare il tutto con un unico serial.write()??
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

0
voti

[2] Re: Arduino vs ESP (EnOcean serial protocol)

Messaggioda Foto Utentebobina » 23 nov 2015, 17:41

puoi creare dichiarare una variabile che contine i dati e poi mandare la variabile.

Esempio:
Codice: Seleziona tutto
uint8_t buffer[] = {0x00,0x01,0x02,0x03,0x4};
uint8_t buffer2[10];

buffer2[0] = SYNC1;
buffer2[1] = SYNC1;
buffer2[2] = HEADER;
...
buffer2[9] = DATO11; // l'indice 9 è l'ultimo di un buffer da 10 byte

Serial3.write(buffer);
Serial3.write(buffer2);


PS
Ti conviene imparare un po' di linguaggio C prima di cominciare con questi progetti complessi.
Avatar utente
Foto Utentebobina
212 6
Frequentatore
Frequentatore
 
Messaggi: 177
Iscritto il: 27 dic 2009, 14:22

0
voti

[3] Re: Arduino vs ESP (EnOcean serial protocol)

Messaggioda Foto UtenteMatteo1991 » 26 nov 2015, 23:31

bobina ha scritto:PS
Ti conviene imparare un po' di linguaggio C prima di cominciare con questi progetti complessi.

Grazie per avermi illuminato sull'esistenza dei vettori.

Dunque sai anche come si fa un vettore dinamico con Arduino? (il numero di byte da inviare, come vedi nel link, può variare).
Comunque il problema era "hardware", ora risolto :ok:
"Scrivere la propria storia come si scrive la Storia: con la veemenza di un conquistatore di imperi."
Avatar utente
Foto UtenteMatteo1991
406 2 4 12
Frequentatore
Frequentatore
 
Messaggi: 280
Iscritto il: 28 giu 2012, 16:38

1
voti

[4] Re: Arduino vs ESP (EnOcean serial protocol)

Messaggioda Foto UtenteTardoFreak » 27 nov 2015, 0:09

Con il C i vettori dinamici non si possono fare, o meglio non così come con altri linguaggi. Si può allocare della memoria dinamica ma la gestione del heap è abbastanza pesante. Meglio sarebbe prevedere un numero massimo di elementi per il vettore ed usare quello.
Però, se non ricordo male, il gcc permette di allocare un vettore locale in questo modo.
Codice: Seleziona tutto
void foo(int n) {
  int array[n];
  ...
}

Ma non ne sono sicuro, dovresti verificare.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti