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.