Forum
>>
Principianti
>>
rilevamento pressione tasto (magari il tasto ESC)
Pagina: Indietro 1 2
Esegui il login per scrivere una risposta.
Scritto da trescon |
2020-09-26 13:24:38 - Re: rilevamento pressione tasto (magari il tasto ESC)
|
Certo Nuzzopippo , il problema è che ho messo il raspberry in modo che il programma parta al suo boot (quindi senza interfaccia grafica) e poi dovevo bloccarlo ..... e non c’è stato verso di bloccarlo; sfortunanatamente non avevo neppure l’SSH abilitato ..... morale della favola INFERMABILE.
Soluzione .... formattare la SD , e reinstallare tutto... fortunatamente avevo copia dei programmi su una chiavetta; ecco perché vorrei poterlo bloccare da “dentro” il programma. Grazie ------
Alberto |
|
Scritto da nuzzopippo |
2020-09-26 17:14:42 - Re: rilevamento pressione tasto (magari il tasto ESC)
|
beh ... pur non conoscendo 'sto benedetto raspberry, credo proprio che così come hai inserito lo script al boot potresti toglierlo. Comunque, che non sia una buona idea inserire al boot routines in sviluppo l'hai già visto da Te, spero che la cosa non Ti dia problemi anche in fase di test.
'sta giornata l'ho dedicata tutta all'idea che Ti avevo anticipato, cioè ad una predisposizione per ordine "remoto" che possa fermare uno script di shell ... precisazione probabilmente inutile, "ordine remoto" significa "da un programma esterno", che gira sulla stessa macchina o su di un'altra macchina in rete. Ho sviluppato un esempio proprio minimale senza gestione degli errori ed accorgimenti "solidi", e già così è un bel po' di codice, ma che potrebbe anche andare bene per test "volanti" da togliere poi, una volta definiti i dettagli applicativi che Vi sono necessari. L'idea implementata prevede una procedura che avvia 4 programmi "esterni", a distanza di 100 secondi uno dall'altro, tramite subprocess.Popen, detti avvii sono effettuati in un ciclo (potrebbe anche essere "infinito") che ad ogni passaggio valuta una variabile globale "command", di default vuota, se tale variabile assume il valore di "quit" il ciclo si interrompe e gli eventuali programmi esterni avviati vengono distrutti, in caso contrario avviene la normale prosecuzione che prevede il termine dell'applicazione di avvio una volta lanciato il 4° programma esterno, mentre i programmi esterni proseguono sino al termine il loro ciclo di vita. Tanto l'applicazione, quanto il programmi esterni registrano in uno specifico file di log le loro azioni (giusto per poter controllare) oltre che stamparle a video, assumono esista una directory "logs" nella direttrice dell'applicazione, devi crearla a mano. L'applicazione di "avvio", prima di avviare il ciclo di chiamate dei programmi esterni istanzia un oggetto (classe "Comunicator" nel codice) che estende "treading.Thread" che pone un socket in ascolto su tutte le porte 7678 della macchina, Comunicator prevede quale parametro una funzione dedicata a variare la variabile globale command, che fornisce un "set" di comandi da interpretare al processo (impostati solo "get log" e "quit" nell'esempio). allegherò i files relativi alla routine di esempio ("launcher_and_commands.py") e dei "programmi esterni" ("external_01-04.py") allegherò, anche il semplicissimo file "commander.py" che provvede ad inviare due comandi ed attendere la chiusura della connessione. L'esempio è proprio minale, come detto, provalo e vedi se ti possa essere utile per i tuoi scopi di test, naturalmente, in tal caso, dovrai adattare le impostazioni alle Tue esigenze. Spero Ti possa essere utile. Ciao Fatti non foste a viver come bruti... |
Pagina: Indietro 1 2
Esegui il login per scrivere una risposta.