home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


capire librerie di Arduino
     
Autore Messaggio opzioni
MB54




una ogni 100 livelli


postato il:
26.05.2020, alle ore 15:30
capire librerie di Arduino 

Sto cercando di studiare alcune librerie di Arduino. Del 'C' conosco solo le istruzioni elementari, e mi perdo con le 'classi', costruttori ecc.

Quando nel codice di una libreria trovo due volte i 'due punti' ( ::) che vuol dire? Es.
float WinsenZE03::readContinuous(){ecc

mi pare di capire che WinsenZ03 sia il nome dell' oggetto e readContinuous() sia il nome di una delle funzioni che posso richiamare dal mio codice. Nel caso dell' esempio è la funzione readContinuous che mi restituisce un int

E' così?
caccamo2





postato il:
26.05.2020, alle ore 17:59
https://en.wikipedia.org/wiki/Scope_resolution_operator


...
MB54




una ogni 100 livelli


postato il:
26.05.2020, alle ore 18:24
Grazie, almeno ho un punto di partenza.
still



[pagine pubblicate]

postato il:
27.05.2020, alle ore 07:05
Buongiorno,mi unisco alla discussione per fare una domanda: c'è un modo per sapere quali sono le funzioni contenute in una libreria? Finora per scovarle ho sempre cercato degli esempi, mi chiedevo se da qualche parte ci sia modo di risalire ad un elenco di quello che la libreria può fare. Grazie


Chi ha argomenti discute serenamente e rispetta le opinioni altrui, chi non ne ha insulta e basta.
Non ti curar di lor, ma guarda e passa
MB54




una ogni 100 livelli


postato il:
27.05.2020, alle ore 07:26
still:
.. c'è un modo per sapere quali sono le funzioni contenute in una libreria? .


Era il mio obiettivo. Direi che sono quelle che seguono i :: In pratica non tutte sono utilizzabili convenientemente dall' esterno della libreria, ma si dovrebbe capire quali sono utili. Oggi dovrò guardarmi in dettaglio la libreria di un sensore e ne saprò di più (spero) a fine giornata.
Se credi puoi indicare una libreria di tuo interesse, non troppo complessa, in modo che gli eventuali interventi si riferiscano ad un codice condiviso.

In generale vedo che le librerie per A.essendo scritte ovviamente da programmatori molto bravi, si presentano con sintassi veramente ostiche per un apprendista programmatore. Come mio commento, quindi imho, manca una tabella di testo di esposizione delle funzioni con due righe due di chiarimento; gli esempi sono in genere scarni ed esemplificano pochi casi. Credo che la concisione del codice e la mancanza di chiarimenti sia dovuta non tanto alla mancanza di tempo, quanto ad una naturale tendenza alla cripticità esoterica, che fa parecchio figo...
Imho, hai perso un sacco di tempo per scrivere la libreria (bravo), perdici ancora un ora per renderne chiaro l' uso.

pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
27.05.2020, alle ore 07:47
Non sarà per la poca voglia di chiarire le limitazioni o di garantire la funzione?


anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
MB54




una ogni 100 livelli


postato il:
27.05.2020, alle ore 07:56
pippodue:
Non sarà per la poca voglia di chiarire le limitazioni o di garantire la funzione?


non ho capito
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
28.05.2020, alle ore 11:54
Un modo empirico per scovare le funzioni di una libreria e' questo:

A) si apre il file NOME_LIBRERIA.CPP con notepad++ (e' free, indenta e colora) o con un altro editor

B) si cercano le righe che iniziano con
tipo_variabile nome_libreria::nome_funzione(parametri){
ad esempio
void LCD03::setCursor(uint8_t col, uint8_t row) {
uint8_t RTC_DS1307::readnvram(uint8_t address) {
float SunLight::calcMezzoDiMedio(){

C) si cerca di capire cosa faccia la funzione, spesso all'interno della libreria ci sono dei commenti che ne spiegano l'uso ed anche nella pagina github da dove e' stata scaricata la libreria spesso ci sono delle descrizioni




"se peso cado, ma se cado non peso"
adamatj.altervista.org
MB54




una ogni 100 livelli


postato il:
28.05.2020, alle ore 12:35
double_wrap:
...


Si. Girando attorno ad alcune librerie semplici, ho visto che nel nomelibreria.h sono definite quali funzioni sono pubbliche e quali private. Ho provato anche a rendere pubbliche funzioni private (laddove abbia un senso) e pare funzionare.
Ad esempio in questo file WinsenZE03.h dove viene definita la classe WinsenZE03 si ha:

 class WinsenZE03
{
  public:
    WinsenZE03();
    void begin(Stream *ser, int type);
    void setAs(bool active);
    float readManual();
    float readContinuous();
  private:
    void debugPrint(byte arr[]);
    Stream *_s; //Serial1 - Serial3 are USARTClass objects.
    int _type;
};


Le funzioni pubbliche sono richiamabili con nomeclasse.nomefunzione() es.
WinsenZE03.readManual()

Se rendo pubblica la funzione debugPrint(byte arr[]) poi la posso usare come le altre.
O almeno questo mi é parso di capire (ma che fatica)
caccamo2





postato il:
28.05.2020, alle ore 12:53
still:
c'è un modo per sapere quali sono le funzioni contenute in una libreria?

usare ambienti di sviluppo ufficiali messi a disposizione o promossi dai produttori del silicio.
I compilatori seri quando chiami una funzione esce un popup con la lista delle opzioni, tanto per fare un esempio, e le librerie sono documentate su manuali, cose che nel mondo arduino sono solo sogni.




...
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale