Gambas France BETA


Pas de compte ? Incription

Redefinir un port usb...

1
AuteurMessages
noucom#1 Posté le 18/8/2015 à 13:46:38
Bonsoir,
J'ai une application qui recois des informations d'un port serie par un adaptateur USB serie.
Je le declare dans gambas de cette facon :


serial1.port = "/dev/ttyUSB0"


si je debranche l'usb, et rebranche, l'adaptateur change et passe en ttyUSB1, ce qui pose des problemes car je ne recois plus d'info dans mon logiciel gambas.

A) existe t il une commande linux pour rediriger le port sur ttsUSB0 par exemple?
B) sous gambas, comment puis-je changer de port si je ne recois pas d'infos ou si ce port n'est plus valide?

Merci pour votre reponse
vuott#2 Posté le 18/8/2015 à 18:05:20
Ne cedere ineluctabili possimusHello noucom,

...try this code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
PRIVATE fl AS File


PUBLIC SUB Button1_Click() ' We add some USB file-device paths

DIM b AS BYTE
DIM s AS STRING

WITH ComboBox1
.Clear
.Add("Files device 'ttyUSB'")
END WITH

' For each ttyUSB* file-device in /dev path....
FOR b = 0 TO Dir("/dev", "ttyUSB*", gb.Device).Max
' ...we take its name:
s = Dir("/dev", "ttyUSB*", gb.Device)[b]

' If "Reading" authorizations are maximum...
IF Stat("/dev" &/ s).Auth LIKE "r*r*r*" THEN
' ...then we insert its path in ComboBox list:
ComboBox1.Add("/dev" &/ s)
ENDIF
NEXT

END


PUBLIC SUB ComboBox1_Change() ' We change file-device, choosing it


' If a "file-device" variable was opened, then we close it.
IF Object.IsValid(fl) THEN fl.Close

' Now a new USB file-device is opened:
IF IsNull(ComboBox1.Current) = FALSE THEN fl = OPEN ComboBox1.Current.Text FOR READ

END
« Vita non suavis esse potest, nec Mors amara. »
xave4552#3 Posté le 1/12/2015 à 23:08:26
Salut j'ai créer une classe il y a quelque temps.
Explication j'observe les derniers éléments du noyaux je les stock dans un fichier (car trop volumineux pour récupéré d'un seul cou dans une string).
Tu n'as plus que à l'adapter selon tes besoins et à prendre le derniers éléments de la liste et à le renvoyé.
Nota: Pour ma part je fait une vérification du démarrage de l'arduino afin de tester son fonctionnement après cette classe
Salut.
' Gambas class file

Private $sText As String

Public Sub _new()

Dim aStr As String[]
Dim s As String
Dim i As Integer
Dim retour As String

Shell "dmesg -s 1024 | grep 'cdc' > /tmp/dmesg.alpha"
Wait 1
aStr = Split(File.Load("/tmp/dmesg.alpha"), "\n")
For Each s In aStr
If String.InStr(s, "ttyACM") Then
i = String.InStr(s, "ttyACM")
retour = "ttyACM" & Mid(s, i + 6, 1)
Endif
Next
Kill "/tmp/dmesg.alpha"
$sText = retour

End

Public Function retour() As String

If Exist("/dev/" & $sText) Then
Return "/dev/" & $sText
Else
Debug "Arduino non trouvé fin du programme."
Return Null
Endif

End
1