Puntatori

11 Anni 4 Mesi fa #6 da Matteo Garia
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
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
11 Anni 4 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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 4 Mesi fa #8 da Fendo
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? B)

Ciao

Ciao
Ferdinando

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Fendo
  • Junior Member
  • Junior Member
Di più
11 Anni 4 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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Matteo Garia
  • Avatar di Matteo Garia
  • Moderator
  • Moderator
Di più
11 Anni 4 Mesi fa - 11 Anni 4 Mesi fa #10 da Fendo
Risposta da Fendo al topic Re: Puntatori
...vedi che continua a frullarmi nella testa 'sto menu :P
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 4 Mesi fa da Fendo.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Fendo
  • Junior Member
  • Junior Member
Di più
Moderatori: Mauro LaurentiStefA

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login