Differenze tra le versioni di "Uso delle Porte Parallele"
Riga 10: | Riga 10: | ||
Dim iNUmeroPorta As Integer | Dim iNUmeroPorta As Integer | ||
Dim iValore As Byte | Dim iValore As Byte | ||
− | + | ||
<FONT color=#006400>' ''Invia il valore 42 alla porta 1:''</font> | <FONT color=#006400>' ''Invia il valore 42 alla porta 1:''</font> | ||
iNumeroPorta = 1 | iNumeroPorta = 1 |
Versione delle 17:08, 8 set 2012
È possibile accedere a porta parallela utilizzando i file device come /dev/lp0.../dev/lpN. Se, però, si ha bisogno di più controlli, ad esempio, e se si vuole essere in grado di scrivere porte input/output x86, si utilizza il file device: /dev/port.
Uso del file device: /dev/port
Un altro modo per accedere alle porte di I/O è quello di aprire con Open il file device /dev/port (un dispositivo a caratteri, il numero primario 1, secondario 4) in lettura e/o scrittura. Poi l'uso di Seek sul byte appropriato nel file (posizione file 0 = porta 0x00, posizione file 1 = porta 0x01 e così via), e quindi Read o Write per scrivere un byte o una parola da o verso quel file device. Naturalmente, per far funzionare il programma si ha bisogno di poter accedere in lettura ed in scrittura al file device /dev/port. Questo metodo è probabilmente più lento del metodo normale precedentemente descritto, ma non ha bisogno di ottimizzazioni in compilazione. Non ha, inoltre, bisogno di accesso da root, se si vuole accedere al file device /dev/port come un utente non-root o di gruppo; ma questa è una cosa poco opportuna da fare in termini di sicurezza del sistema, in quanto è possibile danneggiarlo, forse anche ottenere l'accesso come root, usando /dev/port per accedere ai dischi fissi, schede di rete, ecc direttamente.
Quindi, come root, si può fare ciò che è spiegato sopra: apertura del file device /dev/port con Open in lettura/scrittura in una posizione specifica:
Public Sub Button1_Click() Dim hPorta As File Dim iNUmeroPorta As Integer Dim iValore As Byte ' Invia il valore 42 alla porta 1: iNumeroPorta = 1 iValore = 42 hPorta = Open "/dev/port" For Read Write Seek #hPorta, iNumeroPorta Write #hPorta, iValore End