Autore Topic: Aiuto su piccolo programmino  (Letto 2200 volte)

Offline mariulin

  • Gamberetto
  • *
  • Post: 20
    • Mostra profilo
Aiuto su piccolo programmino
« il: 10 Aprile 2012, 16:12:31 »
Ciao a tutti. Mi sono avvicinato da pochissimo al mondo Gambas. Ho creato un piccolo programmino che consta di quattro bottoni per interagire con una Webcam.
Il primo bottone, tramite il software Streamer scatta una foto dalla webcam.
Il secondo visualizza tramite Mplayer un filmato "Live" per un minuto
Il terzo registra tramite Mencoder un filmato da un minuto.
Il quarto registra tramite Mencoder un filmato all'infinito.
Tutti e quattro i bottoni agganciano quattro script bash tramite la funzione EXEC

Avrei bisogno (se è possibile!!!) di :
1) Per il secondo bottone, terminato il minuto di video "Live" che si chiudesse la mia applicazione Gambas. (Mplayer si chiude già da solo)
2) Per il terzo bottone, che durante la registrazione venga una finestrella con scritto "registrazione in corso" e che trascorso il minuto si chiuda tutto (pid di mencoder e applicazione Gambas)
3) Per il quarto bottone, che durante la registrazione venga una finestrella con scritto "registrazione in corso" e un bottoncino per poter chiudere tutto in qualsiasi momento.

Spero di essere stato il più chiaro possibile.

Grazie

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #1 il: 10 Aprile 2012, 16:19:44 »
Non so.... a me di getto mi viene in mente qualche Timer ..... però altri - più esperti - potrebbero suggerire una soluzione più efficace.

Al terzo punto per "per poter chiudere tutto in qualsiasi momento" cosa intendi ? Cioè quel tutto... anche la registrazione, o solo la finestrina?
« Ultima modifica: 10 Aprile 2012, 16:25:05 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline mariulin

  • Gamberetto
  • *
  • Post: 20
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #2 il: 10 Aprile 2012, 16:38:43 »
Intendo tutto tutto. Sia la registrazione che la finestrina che l'applicazione Gambas

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #3 il: 10 Aprile 2012, 21:09:06 »
La butto là, eh.... brutalmente....:

Per il primo problema:
Codice: gambas [Seleziona]

Private aT As Byte


Public Sub Form_OPen()

' con questa impostazione faccio sì che,
' quando premerò il Button2,  il Timer
' partirà immediatamente:
  Timer1.Delay = 1

End


Public Sub Button2_Click()

' qui l'istruzione per far partire il video...
' Shell.... oppure Exec....

'...ed il Timer:
  Timer1.Start

End

Public Sub Timer1_Timer()

' Il timer "conta" i secondi:
  Timer1.Delay = 1000

  Inc aT

' se è arrivato a 60 secondi...
  If aT = 60 Then
'...chiude "baracca e burattini":
  Me.Close
Endif
  
End


Per il secondo problema io mi creerei un piccolo form aggiuntivo (la tua finestrella).


Per il terzo problema potrebbe andare una cosa di questo genere, più facile della precedente:
Codice: gambas [Seleziona]

Public Sub Button4_Click()

  Dim mss As Byte

  mss = Message.Warning("Registrazione in corso", "Chiudi")
  
  If mss = 1 Then

' qui le istruzioni per:
' * chiudere il programma esterno
'    magari attraverso la gestione di Process,
'    così non ti serve il casino del PID;
'
' * chiudere il tuo programma Gambas.
 
 Endif

End
« Ultima modifica: 12 Aprile 2012, 10:11:27 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline mariulin

  • Gamberetto
  • *
  • Post: 20
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #4 il: 11 Aprile 2012, 11:48:58 »
Sto provando delle modifiche con le note che mi hai dato tu e ho modificato cosi:
PUBLIC SUB Button3_Click()

  DIM mss AS Byte
 
  EXEC ["/home/mariulin/webcam/avvia_cam_rec"]

  mss = Message.Warning("Registrazione in corso", "Chiudi")

  IF mss = 1 THEN
  EXEC ["/usr/bin/killall mencoder"]
  ME.Close
  ENDIF
END

Il problema è che quando clicco su "Chiudi" si chiude la finestrella "Registrazione in corso"; si chiude Gambas, ma mencoder continua a girare e a registrare. Scusa, ma sono proprio a "ZERO" di conoscenza di Gambas...

Offline mariulin

  • Gamberetto
  • *
  • Post: 20
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #5 il: 11 Aprile 2012, 15:40:08 »
Scusa, ma non ti seguo...

Ho letto la man page:
Codice: [Seleziona]
Process (gb)
This class is used for managing processes launched by the EXEC or SHELL instructions.
As this class is a stream, you can use input/output instructions to read the process standard output or write to its standard input.

To read the process error output, you must use the Error event.

Però non so come adattarlo per me. Ti ripeto che sono proprio a "ZERO" di conoscenza di Gambas... Ho appena iniziato... Abbi pazienza...


Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #6 il: 11 Aprile 2012, 15:46:37 »
Il problema è che quando clicco su "Chiudi" si chiude la finestrella "Registrazione in corso"; si chiude Gambas, ma mencoder continua a girare e a registrare.

parola magica: Process....

Facciamo questo esperimento:
Codice: gambas [Seleziona]

Private mariulin As Process


Public Sub Form_Open()

' lanciamo l'editor "Gedit" mediante Exec
' e ne gestiamo il processo mediante
' l'apposita variabile:
  mariulin = Exec ["gedit"]

End


Public Sub Button1_Click()

'...poi lo chiudiamo:
  mariulin.Kill

End
« Ultima modifica: 11 Aprile 2012, 16:48:29 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #7 il: 11 Aprile 2012, 16:14:59 »
sono proprio a "ZERO" di conoscenza di Gambas... Ho appena iniziato... Abbi pazienza...

http://www.gambas-it.org/smf/index.php?topic=1567.0
http://www.gambas-it.org/smf/index.php?topic=1961.msg21701#msg21701
+
Ricerca nel Forum
+
WIKI del forum
« Ultima modifica: 29 Novembre 2012, 11:48:59 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline mariulin

  • Gamberetto
  • *
  • Post: 20
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #8 il: 11 Aprile 2012, 16:38:00 »
Appena letta la tua risposta ho detto... Ah. Si. Ok. Ma come lo adatto al mio progettino??? Poi con calma ho fatto un pò di prove e adesso pare funzionare... Grazie di tutto e anche dei links.

Le guide le avevo lette un pò. Quello che trovo in tutte le guide Gambas che ho visto in giro per Internet è che mancano degli esempi. Ci sono i comandi, la sintassi, ma mancano gli esempi pratici!!!
« Ultima modifica: 11 Aprile 2012, 16:41:01 da mariulin »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #9 il: 11 Aprile 2012, 16:41:49 »
Poi con calma ho fatto un pò di prove e adesso pare funzionare...
Bene.


Grazie di tutto...
...qualche pazzo  :rolleyes: qui lo trovi sempre !  ;D



...e anche dei links.
Non dimenticare, quando hai bisogno, di fare innanzitutto la ricerca qui nel Forum: molti argomenti sono stati già trattati.


....ma mancano gli esempi pratici!!!
Qualcosa la trovi qui nel Forum, facendo la ricerca.   ...poi qualcosina  :-[  qui:
http://www.gambas-it.org/wiki/index.php/Pagina_principale
« Ultima modifica: 27 Ottobre 2012, 01:43:44 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline mariulin

  • Gamberetto
  • *
  • Post: 20
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #10 il: 11 Aprile 2012, 16:51:55 »
Ok. Perfetto. Grazie per le dritte.. Non lo conosco bene (per adesso), ma penso che Gambas sia uno strumento molto potente. E pensare che una volta facevo dei programmini in BASIC neanche malvagi. Con Gambas penso si possa fare l'impossibile e non riesco a fare niente (o poco)...  :'(. Ma prima o poi imparerò.

Grazie ancora!!!
« Ultima modifica: 30 Luglio 2012, 17:37:30 da mariulin »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #11 il: 11 Aprile 2012, 16:53:04 »
forse sono in ritardo... però perché usare exec senza as qualchecosa?

potresti usare il qualchecosa_read e il qualchecosa_kill per capire quando lo script ha finito...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #12 il: 11 Aprile 2012, 17:01:54 »
forse sono in ritardo... però perché usare exec senza as qualchecosa?

potresti usare il qualchecosa_read e il qualchecosa_kill per capire quando lo script ha finito...
Perché dici "in ritardo" ? Se c'è una soluzione migliore, è... meglio !  :ciao:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline alcresio

  • Grande Gambero
  • ***
  • Post: 100
    • Mostra profilo
Re: Aiuto su piccolo programmino
« Risposta #13 il: 11 Aprile 2012, 19:30:54 »
forse sono in ritardo... però perché usare exec senza as qualchecosa?

potresti usare il qualchecosa_read e il qualchecosa_kill per capire quando lo script ha finito...
Perché dici "in ritardo" ? Se c'è una soluzione migliore, è... meglio !  :ciao:

Boh!...  :-\  forse perché manco da molto sul forum...

In ogni caso allego un esempio che forse fa al caso di mariulin