Differenze tra le versioni di "Accesso alle Porte Seriali"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
Possiamo accedere alle ''Porte Seriali'' aprendo e leggendo direttamentre i dati provenienti dai relativi file-device. | Possiamo accedere alle ''Porte Seriali'' aprendo e leggendo direttamentre i dati provenienti dai relativi file-device. | ||
− | + | Poniamo l'esempio di avere una penna USB per la connessione ad Internet, e che alla sua connessione il sistema operativo abbia generato due relativi file-device: "''/dev/ttyUSB0'' " e "''/dev/ttyUSB1'' ". Possiamo leggere i dati provenienti dalla porta mediante due modalità: | |
− | Poniamo l'esempio di avere una penna USB per la connessione ad Internet, e che alla sua connessione il sistema operativo abbia generato due relativi file-device: ''/dev/ttyUSB0'' e ''/dev/ttyUSB1''. Possiamo leggere i dati provenienti dalla porta mediante due modalità: | + | * direttamente dal relativo file-device, ad esempio, "''/dev/ttyUSB1'' "; |
− | * direttamente dal relativo file-device, ad esempio, ''/dev/ttyUSB1''; | ||
* mediante l'apposita classe "''SerialPort''". | * mediante l'apposita classe "''SerialPort''". | ||
− | |||
− | |||
==Mediante lettura diretta dal corrispondente file-device== | ==Mediante lettura diretta dal corrispondente file-device== | ||
− | Per il seguente esempio è necessario attivare anche il componente | + | Per il seguente esempio è necessario attivare anche il componente "gb.desktop", ed aver installato il programma "x-term": |
Private fl As File | Private fl As File | ||
Riga 51: | Riga 48: | ||
'''End''' | '''End''' | ||
− | |||
− | |||
==Lettura mediante la classe ''SerialPort''== | ==Lettura mediante la classe ''SerialPort''== | ||
− | La lettura della ''Porta Seriale'' portà avvenire anche mediante l'uso della Classe | + | La lettura della ''Porta Seriale'' portà avvenire anche mediante l'uso della Classe "SerialPort" attivando il componente <FONT color=#B22222>gb.net</font>. |
Private SerialPort1 As SerialPort | Private SerialPort1 As SerialPort | ||
Riga 102: | Riga 97: | ||
− | + | ---- | |
=Approfondimenti in internet= | =Approfondimenti in internet= | ||
* http://www.cmrr.umn.edu/~strupp/serial.html | * http://www.cmrr.umn.edu/~strupp/serial.html | ||
* http://www.tldp.org/HOWTO/Serial-HOWTO.html | * http://www.tldp.org/HOWTO/Serial-HOWTO.html |
Versione delle 17:17, 30 ott 2021
Possiamo accedere alle Porte Seriali aprendo e leggendo direttamentre i dati provenienti dai relativi file-device.
Poniamo l'esempio di avere una penna USB per la connessione ad Internet, e che alla sua connessione il sistema operativo abbia generato due relativi file-device: "/dev/ttyUSB0 " e "/dev/ttyUSB1 ". Possiamo leggere i dati provenienti dalla porta mediante due modalità:
- direttamente dal relativo file-device, ad esempio, "/dev/ttyUSB1 ";
- mediante l'apposita classe "SerialPort".
Mediante lettura diretta dal corrispondente file-device
Per il seguente esempio è necessario attivare anche il componente "gb.desktop", ed aver installato il programma "x-term":
Private fl As File Public Sub Button1_Click() ' Se il file non possiede i più ampi permessi... If Stat("/dev/ttyUSB1").Auth <> "rwsrwxrwx" Then ' ...allora modificheremo in quel senso i permessi del file: Desktop.RunAsRoot("chmod 4777 /dev/ttyUSB1") ' Restiamo in attesa fino a che i permessi non vengono modificati, come desiderato: Do Wait 0.01 Loop Until Stat("/dev/ttyUSB1").Auth = "rwsrwxrwx" Endif ' In alternativa all'algoritmo precedente, ' si potrà utilizzare il seguente codice per impostare il setUID ' e consentire l'apertura del file protetto: Exec ["gksu", "chmod 4777", "/dev/ttyUSB1"] Wait ' ...o ancor più facilmente: Shell "echo < mia_password > | sudo -S chmod 4777 '/dev/ttyUSB1'" Wait ' Apriamo il file-device aggiungendo la parola chiave "Watch": fl = Open "/dev/ttyUSB1" For Read Watch End Public Sub File_Read() Dim s As String While Not Eof(fl) ' Leggiamo i dati provenienti dal file-device...: Line Input #fl, s ' ...e li mostriamo in console: Print s Wend End
Lettura mediante la classe SerialPort
La lettura della Porta Seriale portà avvenire anche mediante l'uso della Classe "SerialPort" attivando il componente gb.net.
Private SerialPort1 As SerialPort Public Sub Button1_Click() SerialPort1 = New SerialPort As "portaseriale" ' Facciamo in modo da poter inserire la password di root ' per impostare il setUID e consentire l'apertura del file protetto: Shell "echo 'mia_password' | sudo -S chmod 4777 '/dev/ttyUSB1'" Wait With SerialPort1 .PortName = "/dev/ttyUSB1" .Speed = 19200 .Parity = 0 .DataBits = 8 .StopBits = 1 .FlowControl = 0 .Open End With End Public Sub portaseriale_Read() Dim s As String ' Legge i dati dalla porta.... Read #SerialPort1, s, Lof(SerialPort1) ' ...e li mostra in console: Print s End Public Sub Form_Close() If SerialPort1.Status = Net.Active Then SerialPort1.Close End