Nokioteca [Nokia] Forum: While True Do: Più Opeazioni Insieme - Nokioteca [Nokia] Forum

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

While True Do: Più Opeazioni Insieme

#1 L   Antonio G. 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 21
  • Iscritto: 28 ottobre 2006
  • Località:Napoli
  • Cellulare:N80

Inviato 04 dicembre 2009 - 00:00

Ciao a tutti,
ho il seguente codice:
while true do
	menu_scelto=ui.cmd();
	case menu_scelto
		in "...": if menu_scelto#null then ... end;
		in "...": if menu_scelto#null then ... end;
	end;

	stato_tel=phone.new();
	if stato_tel["incoming"] then
		if array.index(activation_numbers, stato_tel["number"])>=0 then
			...
		end;
	end;
end;

Come potete vedere, con la prima parte ho stabilito quale deve essere il menu e con la seconda parte resto in attesa di una chiamata proveniente da un determinato numero.
Il problema è che se attivo una voce di menu, la seconda parte non funziona più, e cioè la chiamata non mi viene più intercettata. E viceversa.
Insomma, sembra che entrambe le parti non possano stare nello stesso ciclo while e che eseguendone una si esca fuori.
Come posso fare a far si che quei due (o più) blocchi di codice (menu ed intercettazione chiamata) siano sempre attivi?
Grazie.
0

#2 L   masmil1988 

  • Millennium Member
  • Gruppo: Developer
  • Messaggi: 1576
  • Iscritto: 03 dicembre 2005
  • Località:Alcamo (TP)
  • Cellulare:Nokia 5800
  • Firmware:51.0.006

Inviato 05 dicembre 2009 - 10:23

Non capisco bene a cosa serve il primo blocco, di che menu si tratta?

Quello di cui parli tu è la chiamata asincrona di più funzioni. Con le funzioni di ilinguaggio puoi fare questo tipo di chiamata con il codice:
stream_asincrono=async.new();
async.call(stream_asincrono, &funzione, parametri_della_funzioone, ..., ...);

E qui tornano utili i puntatori a funzione, senza il quale questa funzione non sarebbe possibile

Il valore di ritorno della funzione verrà inserito nello stream e quindi per leggerlo devi utilizzare questo codice:
variabile=io.read(stream_asincrono,num_bytes);



Resta però il fatto che non capisco la prima parte, aspetto delucidazioni :)

Messaggio modificato da masmil1988 il 05 dicembre 2009 - 10:23

0

#3 L   Antonio G. 

  • Member
  • PuntoPunto
  • Gruppo: Utente
  • Messaggi: 21
  • Iscritto: 28 ottobre 2006
  • Località:Napoli
  • Cellulare:N80

Inviato 05 dicembre 2009 - 10:58

Visualizza Messaggimasmil1988, il 05/12/2009 - 10:23, ha scritto:

Quello di cui parli tu è la chiamata asincrona di più funzioni. Con le funzioni di ilinguaggio puoi fare questo tipo di chiamata con il codice:
stream_asincrono=async.new();
async.call(stream_asincrono, &funzione, parametri_della_funzioone, ..., ...);

E qui tornano utili i puntatori a funzione, senza il quale questa funzione non sarebbe possibile

Il valore di ritorno della funzione verrà inserito nello stream e quindi per leggerlo devi utilizzare questo codice:
variabile=io.read(stream_asincrono,num_bytes);

Grazie, difficilmente avrei pensato a questa soluzione... mi informerò meglio.
Quindi dovrei creare due funzioni, una per attivare il menu ed una per controllare le chiamata in arrivo... Il problema è che in entrambi i casi non ho nessun valore di ritorno.
Infatti anche la porzione di codice che controlla il numero del chiamante, se è uno riconosciuto allora esegue delle altre funzioni.

Visualizza Messaggimasmil1988, il 05/12/2009 - 10:23, ha scritto:

Resta però il fatto che non capisco la prima parte, aspetto delucidazioni :D

Il primo blocco è un semplicissimo menu che si attiva alla pressione del tasto sinistro del cellulare, nel mio caso mostra le voci "autore" e "nascondi".
Ho visto che il menu viene inserito sempre nell'iterazione While True Do, ma in questa iterazione ho dovuto mettere anche l'attesa della chiamata in arrivo.
0

Condividi questa discussione:


Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione