io avevo fatto così:
Public Function ScanSerial() As String[]
Dim SPortList As New String[]
SPortList.Insert(Dir("/dev", "ttyS*").Sort())
SPortList.Insert(Dir("/dev", "ttyUSB*").Sort())
Return SPortList
End
per alcuni dispositivi tipo arduino dovresti mettere anche
SPortList.Insert(Dir("/dev", "ttyACM*").Sort())
ho provato a scrivere una cosa così
' Gambas class file
Public Function ScanSerial() As String[]
Dim SPortList As New String[]
SPortList.Insert(Dir("/dev", "ttyS*").Sort())
SPortList.Insert(Dir("/dev", "ttyUSB*").Sort())
Return SPortList
End
Public Sub Form_Open()
Dim lista As New String[]
Dim lunghezza As Integer
Dim i As Integer
lista = ScanSerial()
lunghezza = lista.count - 1
For i = 0 To lunghezza
If verifica_seriale(lista[i])
ComboBox1.add(lista[i])
Endif
Next
ComboBox1.index = 0
End
Public Sub verifica_seriale(lista As String) As Boolean
Dim risultato As Boolean
Serialport1.PortName = "/dev/" & lista
Serialport1.Open
risultato = True
Serialport1.close()
Finally
Return risultato
Catch
risultato = False
End
Prima carico tutta la lista delle seriali, poi le verifico una ad una provandole verificando che non diano errore
infine le inserisco in una combobox
Ottimo... testata e funzionante... ti trova solo le seriali a cui e' collegato un 'qualcosa'...
Solo perche' ci devo mettere anche del mio, :P, si puo' scrivere anche in questo modo:
PUBLIC SUB verifica_seriale(lista AS String) AS Boolean
Serialport1.PortName = "/dev/" & lista
TRY Serialport1.Open()
IF ERROR THEN RETURN
Serialport1.Close()
RETURN TRUE
END