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

Da Gambas-it.org - Wikipedia.

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 b As Byte  
     
' Intercetta i dati dal file device:   
 Read #fl, b
     
' Li mostra in console: 
 Print b
      
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 (non importa se esiste: sarà creato dalla seguente riga di comando):
 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 b As Byte
 
 Read #pr, b

 Print b
 
End


Public Sub Button2_Click()

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

End

Per riaprire il flusso basterà cliccare nuovamente su Button1.