salva214
Posts: 26
Joined: Wed Feb 27, 2013 3:09 pm

Errore di concetto sulla programmazione

Sun Mar 10, 2013 7:02 pm

Ciao a tutti ragazzi! Finalmente mi è arrivata la mia RPi e questo weekend ho cercato di farmi una infarinatura generale su linux e la board in se per se.
Subito mi sono accorto che gli obbiettivi che mi sono proposto sono piu facili a dirsi che a farsi.
Infatti provengo da un mondo completamente diverso, quello dei microcontrollori (in particolare i PIC).
Ma veniamo al dunque: a differenza delle MCU che si limitano ad eseguire in maniera pressoché lineare quello che gli viene scritto nella Flash, la RPi ha un sistema operativo che certo ne amplifica in modo esponenziale le capacità ma allo stesso tempo (almeno secondo me) complica un po le cose.

Adesso provo a spiegarvi in breve quello che voglio fare e dove ho trovato degli "inghippi".
Il mio scopo era quello di iniziare a costruire un robot ma non il classico a ruote (gia realizzato con successo in V superiore) bensì un bipede, con tutti i problemi annessi e connessi (ecco perchè ho deciso di optare per una capacità di calcolo come la RPi).
Come tutti potete immaginare un "robot" deve svolgere tante funzioni, alcune visibili come azioni nel mondo circostante, altre (la maggior parte) che servono a 'preparare' tali azioni.
Il problema è che mentre con le MCU riuscivo ben o male a fare tutto, con interrupt e quant'altro, con la RPi riesco a mala pena ad eseguire uno script per volta sulla shell che finchè è in esecuzione non mi fa fare altro (come in questo momento che mi sta compilando OpenCV da ben 2 ore)!!
Quello che volevo sapere era quale strada seguire e quali app utilizzare per creare dei programmi/eseguibili con o senza GUI da poter eseguire in contemporanea!

Vi faccio un esempio: voglio che controlli lo stato di una batteria scambiando dei dati con un pic (i2c), ma allo stesso tempo "ascoltare" il microfono per sentire "qualcosa" (UART) e controllare il movimento dei motori (SPI); come se non bastasse se io decidessi di connettermi al 'robot' in remoto tramite la shell la vorrei trovare libera per poter andare a leggere, che so, dei file di log o delle variabili per controllare lo stato di esecuzione dei programmi.

Credete sia fattibile o sto chiedendo la luna? :lol:

cil8
Posts: 179
Joined: Tue Feb 14, 2012 10:47 am

Re: Errore di concetto sulla programmazione

Sun Mar 10, 2013 9:34 pm

Non stai chiedendo la luna, anzi... è una cosa assolutamente ovvia con Linux. Apri un'altra shell... puoi averne centinaia aperte tutte insieme!

salva214
Posts: 26
Joined: Wed Feb 27, 2013 3:09 pm

Re: Errore di concetto sulla programmazione

Sun Mar 10, 2013 10:18 pm

Ah ok...non sapevo si potesse! ahahah :P

e per quanto riguarda l'esecuzione in background? l'idea era quella di creare tanti programmini dotati di GUI e alcuni servizi per poi creare un "programmone" che riassumeva lo stato di esecuzione degli altri programmi/servizi leggendo alcune variabili di questi....è possibile? in che linguaggio e che compilatore devo usare?
e poi come faccio a farli avviare in automatico? e il login? grazie a tutti!

cil8
Posts: 179
Joined: Tue Feb 14, 2012 10:47 am

Re: Errore di concetto sulla programmazione

Mon Mar 11, 2013 6:33 am

Certo che si può fare, e il linguaggio da usare puoi sceglierlo tu. Per l'esecuzione in background le strade sono diverse: puoi lanciare eseguibile attraverso il comando nohup, oppure usare la chiamata di sistema daemon() (se scrivi in C), oppure ci sono altre soluzioni alcune delle quali che dipendono dal linguaggio che decidi di usare.

Per l'esecuzione all'avvio del sistema operativo (parliamo di Raspbian) la strada più immediata è aggiungere comandi allo script /etc/rc.local, che viene eseguito alla fine del boot.

salva214
Posts: 26
Joined: Wed Feb 27, 2013 3:09 pm

Re: Errore di concetto sulla programmazione

Mon Mar 11, 2013 4:22 pm

grazie per la risposta....e che ambiente di svilutto mi consigli per il C???
inoltre, non ho mai usato il python ma so che è stato creato appositamente per linux....quali vantaggi comporta il suo utilizzo? potrei usare l'IDE integrato per python? Grazie

cil8
Posts: 179
Joined: Tue Feb 14, 2012 10:47 am

Re: Errore di concetto sulla programmazione

Mon Mar 11, 2013 7:07 pm

Per consigliarti un ambiente di sviluppo io sono la persona sbagliata, in quanto sono allergico agli IDE. Un buon editor di testo e la linea di comando per lanciare il compilatore/interprete del caso, per me non serve altro.
Quanto a Python... non è un linguaggio nato per Linux, anche perchè storicamente il suo sviluppo è iniziato prima di quello di Linux (anche se di poco). E' un linguaggio multipiattaforma, nel senso che garantisce un comportamento uniforme su qualunque piattaforma venga utilizzato (in senso stretto riguardo il linguaggio, non per moduli esterni o l'accesso al sistema operativo).
Il suo principale vantaggio è che, a parere mio, il programmatore Python è enormemente più produttivo di un programmatore C++ o Java (lasciamo perdere Php) di pari capacità ed esperienza. Scrivi molto meno codice per fare le stesse cose, che si traduce in meno tempo di sviluppo e meno bug; naturalmente va studiato e appreso bene per godere di questi vantaggi. Inoltre la libreria standard che Python si porta dietro ti mette a disposizione un mondo di moduli già pronti per fare tantissime cose di uso comune e non doversele programmare: networking, servizi di rete, web server e client, comunicazione interprocesso e tra thread, posta elettronica, database, compressione dati, parser, xml e un sacco di altre cose. Poi ci sono i moduli di terze parti, esterni alla libreria standard, che sono infiniti.
Se hai voglia... dagli una possibilità.

salva214
Posts: 26
Joined: Wed Feb 27, 2013 3:09 pm

Re: Errore di concetto sulla programmazione

Tue Mar 12, 2013 5:29 pm

si infatti avevo notato questa peculiarità del python....ti chiedevo un IDE per progettare quella che poi sarebbe stata l'interfaccia grafica del programma...una sorta di visual studio diciamo, ma per python...esiste qualcosa del genere?

cil8
Posts: 179
Joined: Tue Feb 14, 2012 10:47 am

Re: Errore di concetto sulla programmazione

Tue Mar 12, 2013 7:18 pm

Python non offre direttamente uno strumento per comporre interfacce grafiche, anche perchè nella sua libreria standard non c'è un modulo specifico per farle (se escludiamo il supporto per la libreria Tk, non particolarmente potente).
Le due librerie più utilizzate in ambito Linux (ma disponibili anche per Mac e Windows) sono Qt e Gtk+, entrambe offrono il supporto per Python e uno strumento per la costruzione interattiva delle interfacce, QtDesigner (per Qt) e Glade (per Gtk+). Non ti so dire come siano questi tool; le interfaccie grafiche le ho sempre disegnate a codice.

Return to “Italiano”