- Messaggi: 376
- Ringraziamenti ricevuti 38
Puntatori
12 Anni 3 Ore fa #6
da Matteo Garia
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da Matteo Garia al topic Re: Puntatori
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Matteo Garia
- Autore della discussione
- Moderator
Riduci
Di più
11 Anni 11 Mesi fa #7
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Puntatori
Ciao Matteo,
ammetto che non ho capito tutto (e' un po' tardi) ma in generale forzare un casting non e' una pratica di buona programmazione.
...ma potrebbe essere usata.
Il problema e' che ti sfugge qualcosa hai effetti collaterali non sempre visibili.
Saluti,
Mauro
ammetto che non ho capito tutto (e' un po' tardi) ma in generale forzare un casting non e' una pratica di buona programmazione.
...ma potrebbe essere usata.
Il problema e' che ti sfugge qualcosa hai effetti collaterali non sempre visibili.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
11 Anni 11 Mesi fa #8
da Fendo
Ciao
Ferdinando
Risposta da Fendo al topic Re: Puntatori
E' qualche giorno che mi ronza nella testa il tuo sistema per menu... ma continua a non essermi chiaro il tutto. Non capisco l'uso della struttura, sono un po duro a capire .
Un menu potrei gestirlo p. es. facendo generare un interupt dal tasto "enter" ed entro nella routine che gestisce il menu. Il tasto next incrementa una variabile che fungerà da indice per un array, di contro il tasto prev decrementerà la stessa variabile. Con il tasto esc si uscirà dal menu. Crei due array, oppure uno bidimensionale, ci scrivi in uno i testi che devono apparire e nell'altro i puntatori alle funzioni che gestiranno la scelta fatta.
DUBBIO:
in C18 o in XC8 si possono creare puntatori a funzioni?
Ciao
Un menu potrei gestirlo p. es. facendo generare un interupt dal tasto "enter" ed entro nella routine che gestisce il menu. Il tasto next incrementa una variabile che fungerà da indice per un array, di contro il tasto prev decrementerà la stessa variabile. Con il tasto esc si uscirà dal menu. Crei due array, oppure uno bidimensionale, ci scrivi in uno i testi che devono apparire e nell'altro i puntatori alle funzioni che gestiranno la scelta fatta.
DUBBIO:
in C18 o in XC8 si possono creare puntatori a funzioni?
Ciao
Ciao
Ferdinando
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Fendo
- Junior Member
Riduci
Di più
- Messaggi: 39
- Ringraziamenti ricevuti 4
11 Anni 11 Mesi fa #9
da Matteo Garia
Risposta da Matteo Garia al topic Re: Puntatori
Fendo, sto ragionando in modo più astratto, questo perchè sono dell'idea che un buon codice tenga separato lo strato hardware da quello software.
in tal modo posso riutilizzarlo ovunque.
In particolare non prevedo nessun ingresso hw per il mio menu ma solo alcune funzioni che lo gestiscono, per esempio "ENTER"
Poi sono libero di associare a ciò che voglio tale funzione (un pulsante, un encoder...)
La mia idea è definire una struttura che contenga tutte le informazioni che caratterizzano ogni singola voce di menu, fin'ora ho definito:
1- la stringa da visualizzare
2- l'indice menu successivo (banalmente la voce da visualizzare dando il comando avanti)
3- l'indice menu precedente
4- l'indice menu da richiamare quando si preme enter
5- idem con patate per l'esc
6- il puntatore alla variabile associata a quella voce di menu (se presente, ovviamente)
Chiamiamo questa struttura "picmenu" e la dichiariamo come array, a questo punto richiamando picmenu[indice] ottengo la voce che voglio in modo semplice ed ho già pronte tutte le informazioni per la navigazione
Va da se che utilizzando in modo opportuno i 4 indici è possibile navigare il menu semplicemente modificando l'indice con cui richiamo l'array.
La navigazione l'ho già testata e funziona, mi resta da realizzare il puntatore alla variabile (motivo per cui qui chiedevo come puntare diversi tipi di variabile) ed ovviamente qualche funzione di modifica della variabile stessa da richiamare al momento opportuno.
Un array di questo tipo occupa parecchia memoria ma a ciò si può ovviare dichiarandolo costante, in questo modo viene scritto in memoria programma.
Sistemo un po' il codice pronto sin'ora e ve lo mostro, così ne possiamo discutere insieme (in questo momento è frutto di un brainstorming quindi non è molto presentabile)
Matteo
in tal modo posso riutilizzarlo ovunque.
In particolare non prevedo nessun ingresso hw per il mio menu ma solo alcune funzioni che lo gestiscono, per esempio "ENTER"
Poi sono libero di associare a ciò che voglio tale funzione (un pulsante, un encoder...)
La mia idea è definire una struttura che contenga tutte le informazioni che caratterizzano ogni singola voce di menu, fin'ora ho definito:
1- la stringa da visualizzare
2- l'indice menu successivo (banalmente la voce da visualizzare dando il comando avanti)
3- l'indice menu precedente
4- l'indice menu da richiamare quando si preme enter
5- idem con patate per l'esc
6- il puntatore alla variabile associata a quella voce di menu (se presente, ovviamente)
Chiamiamo questa struttura "picmenu" e la dichiariamo come array, a questo punto richiamando picmenu[indice] ottengo la voce che voglio in modo semplice ed ho già pronte tutte le informazioni per la navigazione
Va da se che utilizzando in modo opportuno i 4 indici è possibile navigare il menu semplicemente modificando l'indice con cui richiamo l'array.
La navigazione l'ho già testata e funziona, mi resta da realizzare il puntatore alla variabile (motivo per cui qui chiedevo come puntare diversi tipi di variabile) ed ovviamente qualche funzione di modifica della variabile stessa da richiamare al momento opportuno.
Un array di questo tipo occupa parecchia memoria ma a ciò si può ovviare dichiarandolo costante, in questo modo viene scritto in memoria programma.
Sistemo un po' il codice pronto sin'ora e ve lo mostro, così ne possiamo discutere insieme (in questo momento è frutto di un brainstorming quindi non è molto presentabile)
Matteo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Matteo Garia
- Autore della discussione
- Moderator
Riduci
Di più
- Messaggi: 376
- Ringraziamenti ricevuti 38
11 Anni 11 Mesi fa - 11 Anni 11 Mesi fa #10
da Fendo
Ciao
Ferdinando
Risposta da Fendo al topic Re: Puntatori
...vedi che continua a frullarmi nella testa 'sto menu
Perchè non potresti generare un INT con il tasto "Enter" chiami una funzione che gestisca le scelte tramite un costrutto SWITCH - CASE.
Imposti un timer che viene fatto ripartire ogni qualvolta venga premuto un tasto, diversamente va in time-out ed esce dalla funzione "Menu" riportando il controllo al programma principale scartando le scelte fatte e non confermate.
Leggendo il doc del XC8 ho visto che c'è un PRAGMA per ottimizzare l'istruzione SWITCH - CASE (interpretato correttamente il doc?)
Ciao
Perchè non potresti generare un INT con il tasto "Enter" chiami una funzione che gestisca le scelte tramite un costrutto SWITCH - CASE.
Imposti un timer che viene fatto ripartire ogni qualvolta venga premuto un tasto, diversamente va in time-out ed esce dalla funzione "Menu" riportando il controllo al programma principale scartando le scelte fatte e non confermate.
Leggendo il doc del XC8 ho visto che c'è un PRAGMA per ottimizzare l'istruzione SWITCH - CASE (interpretato correttamente il doc?)
Ciao
Ciao
Ferdinando
Ultima Modifica 11 Anni 11 Mesi fa da Fendo.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Fendo
- Junior Member
Riduci
Di più
- Messaggi: 39
- Ringraziamenti ricevuti 4
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024