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 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.