Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Realizzare un simulatore SPICE: versione per Windows a 32 bit (5/5)
Scritto da Massimo Mazza il 14-02-2011 ore 06:43
Intel Parallel Studio XE
Rispetto alla soluzione analizzata nel precedente articolo, ovvero rimaneggiare completamente il codice in modo da rendere nutmeg una completa applicazione Win32 grafica, vi sono altre due soluzioni, per così dire "ibride", ambedue complementari e ambedue piuttosto tricky, come dicono gli americani.

Come sappiamo, la versione originale di nutmeg è un'applicazione di tipo console, realizzata originariamente sotto UNIX e, a parte la versione portata sotto MSDOS, non ha modo di generare output grafici in Windows. Ciò però non è del tutto vero: con ricerche approfondite nella vastissima documentazione di Windows MSDN, ho scoperto che è invece possibile operare in due maniere alternative.

Nel primo caso, si può procedere compilando nutmeg come semplice applicazione Win32 console, mantenendo l'originale codice in C — come già era stato fatto con i due simulatori bspice e cspice — facendo però attenzione a eliminare ogni riferimento alle chiamate delle funzioni grafiche originali (che in Win32 non esistono più), sostituendole eventualmente con degli stub di funzioni vuote, onde permettere la riuscita della fase di linking finale.

E l'output grafico, direte voi? L'output grafico lo creeremo in una finestra grafica standard Windows appunto, creando all'interno della funzione main() originale di nutmeg un nuovo thread e creando ex novo, con alcuni trucchi, una finestra grafica "agganciata" a quella di tipo console di nutmeg, passandole opportuni parametri.

La seconda soluzione invece, quella a mio avviso più semplice, consiste nel creare una semplice finestra Windows, che contenga solamente la funzione principale main(), o meglio WinMain(), dato che è un'applicazione Windows nativa; anche qui, con alcune acrobazie, si apre una finestra di tipo console, "agganciata" alla finestra genitrice Windows precedentemente creata, si ridige lo standard output (stdin, stdout e così via) in essa e dalla finestra principale Windows si lancia il main() originale di nutmeg, al quale avremo ovviamente cambiato nome, dato che non possono coesistere due funzioni main() in uno stesso programma.

Si avrà l'effetto che tutte le operazioni di input/output a carattere necessario per interagire con l'utente avverranno regolarmente nella finestra console creata, mentre nella finestra grafica principale, una volta collezionati i dati e i comandi tramite il command parser di nutmeg, potremo agevolmente disegnare tutti i grafici desiderati.

Dato che ambedue le soluzioni risultano troppo tecniche per essere spiegate in poche righe, mi riservo di illustrarle meglio in una serie successiva, corredata da spezzoni di codice funzionante con cui potrete sbizzarrirvi.
Precedente: Leggere i dati delle schede di trasporto con Android
Successiva: HTTP 1.1: meccanismi per l'interoperabilità (1/2)
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.27 secondi.