Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Protocollo

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[61] Re: Protocollo

Messaggioda Foto Utentefairyvilje » 19 giu 2014, 3:11

Purtroppo lo hai fatto XD

Codice: Seleziona tutto
    struct Packet{
        uint8_t target;
        uint8_t bytes;
        uint8_t checksum;
       
        uint8_t *data;
    };


    struct Elemento {
       Packet    pack;
       Elemento *next;
    };

    class Lista{
        private:
        Elemento *testa;
        Elemento *fine;

        public:
        void inserisci();
        Packet& modifica();
        Packet estrai();
    };


Ho apportato delle modifiche. Se non sono chiare chiedi pure. Se è tutto chiaro passo ai metodi.
Ho diviso la fase di inserzione e di modifica perché per i microcontrollori evita la costruzione di copie ed evita pure la presenza di puntatori pericolosi.

I metodi non andavano bene....
Il problema è che non sai usare i puntatori. Ti superconsiglio (di nuovo) di studiarti il C++...
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[62] Re: Protocollo

Messaggioda Foto Utentegrandegiove » 19 giu 2014, 7:30

Foto Utentedaniele1996, come ti hanno già detto prima bisogna documentarsi un po'.

Si potrebbe partire leggendo attentamente questo articolo di Foto UtenteCandy:

http://www.electroyou.it/Candy/wiki/p ... ollori-pic

A suo tempo mi fu molto utile.

Buona giornata O_/
Avatar utente
Foto Utentegrandegiove
1.151 1 4 8
Expert
Expert
 
Messaggi: 517
Iscritto il: 18 ott 2010, 9:59

0
voti

[63] Re: Protocollo

Messaggioda Foto UtenteWALTERmwp » 19 giu 2014, 11:26

Per quello che hai inserito al Post [21] ... riparti da questo ...

Non è niente di che, è solo il minimo "sindacale" per una realizzazione del genere in discussione.

Per quello che hai inserito al Post [25] ...
daniele1996 ha scritto:ho pensato di mettere due pin in piu a disposizione per la trasmissione, servono per indicare quando un dispositivo sta trasmettendo e quando la centrale sta inviando, verificando questi due immagino non ci possono essere conflitti nella rete...
... ma i "due pin in più" dove li collegheresti, come li potresti gestire ?
La presenza di una trasmissione in corso, sulla rete, è, come ti avevo già scritto, rilevata da un nodo (Master o Slave che sia) tramite la gestione della "saturazione" della USART; tramite il "filo" RX arrivano, nella USART, i bits che compongono il byte che la USART ricostruisce e ti mette a disposizione.

Ciò che ti occorre (sempre che nello schema sopra riportato non abbia disegnato uno "strafalcione") è un interfacciamento il più "normale" possibile.
Quando andresti in trasmissione (che sia il Master o lo Slave) dovresti attivare "ctrl" (per disattivarlo dopo il termine della trasmissione stessa tornando in "ascolto" sulla rete).

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[64] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 11:38

Grazie Foto UtenteWALTERmwp per lo schema, appena passerò all'interfacciamento HW lo monterò. servono i MAX485 giusto? li shoppo su ebay...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[65] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 11:46

Foto Utentefairyvilje ho ripreso il libro di C++ e mi sto ristudiando la parte riguardante i puntatori...
mi confondo sempre quando va usato l'asterisco e quando no...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[66] Re: Protocollo

Messaggioda Foto UtenteWALTERmwp » 19 giu 2014, 11:53

daniele1996 ha scritto:Grazie Foto UtenteWALTERmwp per lo schema, appena passerò all'interfacciamento HW lo monterò. servono i MAX485 giusto? li shoppo su ebay...
... si, puoi prendere quelli come riferimento.

daniele1996 ha scritto:mi sto ristudiando la parte riguardante i puntatori... mi confondo sempre quando va usato l'asterisco e quando no...
... se non gestisci bene l'asterisco forse hai qualche dubbio anche sull'impiego del "&" ... "puntatore", "contenuto", "indirizzo", ... in tal caso ti suggerirei di riguardarteli con calma.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[67] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 12:00

Ho shoppato questi credo vadano bene per il prezzo... il problema è il tempo di attesa :/ comunque ho dei max232 magari per fare la prova temporaneamente uso quelli anche se usano un tipo di bus differente... ritornando al codice: so che mettendo la & prima di una variabile viene restituita la posizione della locazione di memoria. e viene usato nelle variabili non puntatori... sto riprendendo i puntatori dal libro...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[68] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 12:16

Ho rivisto il codice, spero di non aver fatto di nuovo confusione... (quello che avevo postato io) la funzione modifica() servirebbe a?

Codice: Seleziona tutto
struct Packet{
    uint8_t target;
    uint8_t bytes;
    uint8_t checksum;

    uint8_t *data;
};


struct Elemento {
struct Packet *pack;
struct Elemento *punt;
}

class Lista{
private:
    struct Elemento *testa;
public:
    void inserisci(Packet p);
    Packet getHead();
};

Lista::inserisci(Packet *p){
Elemento *temp = testa;
while((*temp)->punt != NULL){

    temp = (*temp)->punt;
}
(*temp)->pack = (p);

}
Packet Lista::getHead(){
    Packet *p = testa;
testa = (*testa)->punt;
return p;
}
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

1
voti

[69] Re: Protocollo

Messaggioda Foto UtenteWALTERmwp » 19 giu 2014, 12:17

daniele1996 ha scritto:ho dei max232 magari per fare la prova temporaneamente uso quelli anche se usano un tipo di bus differente...
... no !
@daniele1996, non mi stai prendendo in giro, vero ?
I "485" servono per la "485" (rete multipunto), i "232" servono per la "232" (collegamento punto punto); i "232" li usi per adattare (adeguare) il segnale elettrico della "232" (che può andare da +12V a -12V, almeno una volta) verso i 0/5V.
La "232" non è un "bus", è un tipo di collegamento da un punto ad un altro.
Li puoi impiegare per interfacciare un dispositivo (con porta di comunicazione "232") verso, per esempio, la rete "485".
Quindi, dal dispositivo ti colleghi al "232" e dal "232" ti colleghi al "485" ... che ti consente di accedere alla rete "485".

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[70] Re: Protocollo

Messaggioda Foto Utentedaniele1996 » 19 giu 2014, 12:20

perdonami, non pensavo fosse cosi differente il 232 e il 485
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti