Differenze tra le versioni di "Uso delle Porte Parallele"

Da Gambas-it.org - Wikipedia.
(Nuova pagina: È 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...)
 
Riga 3: Riga 3:
  
 
==Uso del file device: ''/dev/port''==
 
==Uso del file device: ''/dev/port''==
Un altro modo per accedere alle porte di I/O è quello di aprire il file device ''/dev/port'' (un dispositivo a caratteri, il numero primario 1, secondario 4) per la lettura e/o scrittura. Poi ''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''.
+
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.
 +
<BR>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
 +
 
 +
<FONT color=#006400>' ''Invia il valore 42 alla porta 1:''</font>
 +
  iNumeroPorta = 1
 +
  iValore = 42
 +
 +
  hPorta = Open "/dev/port" For Read Write
 +
  Seek #hPorta, iNumeroPorta
 +
  Write #hPorta, iValore
 +
 +
'''End'''

Versione delle 18: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