Arrestare temporaneamente l'intercettazione del flusso di dati da un file-device

Da Gambas-it.org - Wikipedia.
Versione del 10 set 2013 alle 01:57 di Vuott (Discussione | contributi) (Creata pagina con 'Qualora si intenda arrestare temporaneamente l'intercettazione di dati provenienti da un file-device, senza doverlo necessariamente chiudere, potremo utilizzare almeno due mod...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Qualora si intenda arrestare temporaneamente l'intercettazione di dati provenienti da un file-device, senza doverlo necessariamente chiudere, potremo utilizzare almeno due modalità, di seguito descritte .


Uso di Open

Aprendo il file-device con Open, come un qualsiasi file, per bloccare temporaneamente il flusso si sfrutterà, ancorché non in modo proprio, la capacità della funzione Lock come segue:

Private fl As Stream  
     
     
Public Sub Button1_Click()  
     
' Apre (o consente nuovamente l'intercettazione dei dati, se precedentemente bloccata) il flusso di dati:
  fl = Open "percorso/del/file/device" For Read Watch  
     
End
     
     
Public Sub File_Read()  
      
Dim by As Byte  
     
' Intercetta i dati dal file device:   
  Read #fl, by  
     
' Li mostra in console: 
  Print by  
      
End
     
     
Public Sub Button2_Click()  
  
' Si procede a bloccare l'intercettazione del flusso di dati dal file-device.
' Si dà un percorso qualsiasi con un nome di file qualsiasi, entrambi a piacere:
  fl = Lock "percorso/qualsiasi/con/un/nome/file"  
     
End
     
     
Public Sub Button3_Click()  
     
' Chiude definitivamente il flusso:
  fl.Close  
     
End

Dopo aver bloccato il flusso, per sbloccarlo basterà riaprire il flusso cliccando su Button1.


Uso di Process

Anche l'uso di Process consente di aprire, chiudere e riaprire un flusso di dati da un file-device:

Private pr As Process  
     
     
Public Sub Button1_Click()  
     
' Apre (o sblocca se precedentemente bloccato) il flusso di dati:
  pr = Exec ["cat", "/percorso/del/file/device"] For Read As "processo"
     
End


Public Sub processo_Read()

Dim by As Byte
 
 Read #pr, by

 Print by
 
End


Public Sub Button2_Click()

' Chiude il flusso di dati dal processo in corso:
  pr.Kill

End

Per riaprire il flusso basterà cliccare nuovamente su Button1.