K8055 COMMANDE DES SORTIES

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 12 sept. 2009 à 15:12
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 6 oct. 2009 à 18:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50554-k8055-commande-des-sorties

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 oct. 2009 à 18:45
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 oct. 2009 à 18:45
Tiens voici pour vous, plus de soucis ou de prise de tête avec la dll de velleman, j'en ai créé une seconde qui vous permet de la piloter trés simplement (voir l'exemple de la form 1)
S'il elle vous plait, commenter et j'ajoueterais des fonctions de raz total des sorties, sorties ana et lecture des entrées. @++ et kenavo
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
22 sept. 2009 à 12:31
Bon voila j'ai pris le temps, mais ya de quoi travailler ^^
http://www.vbfrance.com/codes/GESTION-MULTICARTES-K8055-CODE-TUTO_50597.aspx
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
17 sept. 2009 à 23:07
j'suis pas assez calé en la matiére, mais à mon avis oui.
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 20:10
juste une petite question sur un autre sujet
le faite d'ecrir 200 ligne ( outre le faite que c long a taper):)
peut gener le fonctionnement du programme ?( bug ou lourdeur )
bon la c petit comme prog mais sur les gros
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
17 sept. 2009 à 18:40
Normal (lol) j'ai pas geré ça -_-' j'utilise pas les menus.(ça sert à rien si on a des boutons.)
bref je bosse sur une ptite source qui devrait éclaircir tout cela...
++
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 17:18
bon apres plusieur essai
g fini par reussir a utilisé ton code
seul petit point negatif c que l'etat du bouton n'est pas le meme que le menu

je te donne un exemple
quand le bouton 1 est vert le menu1 doit etre cocher
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
17 sept. 2009 à 15:59
Bon cela devient le bazard si on traite deux sujet à la fois.
@Olihe, c'est un site de programmation, fait tes requétes de demande de dev de soft par MP stp.
@Julienmus, je me lance ce soir dans le dev d'un exemple concret qui remplacera des pages de commentaires. (la seul chose c'est que j'ai pas de VM110 sous la main donc pour le débugage dur dur...)
Pour la version de la DLL : Pour les derniéres fonctions il suffit de lire le pdf qui est livré dans la version 2 (la V3 est juste une compatible vista)
Voila dés que c'est prêt je post. kenavo
olihe Messages postés 3 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 15:06
J'ai essayé de faire una autr form e de copier le code, mais ça ne fonctionne pas
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 14:14
en faite adn
c dans le private sub afaire que sa coince
g mis des point d'arret( sa va pas etre simple de t'expliqué)
sur
Private Sub Afaire(ByVal N_tag As String)
For Each ctrl As Control In Controls 'point d'arret (ok)
If TypeOf (ctrl) Is Button Then 'point d'arret (ok)
If ctrl.Tag.ToString = N_tag Then 'point d'arret(je ne suis jamais arrivé a cette ligne)
If ctrl.BackColor = couleurOff Then
ctrl.BackColor = couleurOn
Else
ctrl.BackColor = couleurOff
End If
End If
End If
Next
End Sub
ps : regarde bien les commantaire je les ai changer pour t'expliqué
merci julien
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 13:54
je te conseil de recommencé une nouvel form en recopiant les lignes qui te conserne olivier
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 13:48
j'ai trouver les fameux dll dont tu me parle sur"http://www.vellemanusa.com/us/enu/download/files/"
mais pas de fichier explicatif
comment tu connais les derniers commandes mis a jour

et pour finir avec mes questions sur les tag
j'ai fais tous ce que tu ma dit
remplir la case tag dans propriete ,pour les bouton et les toolsprititem
sa marche toujour pas
si g bien compris donc les tag c un peu comme de raccourci ?
ou peu etre plutot comme un complement de nom pour l'objet ?

je doit dire c vrai que vous avez raison, j'ai 200 ligne, mais sa me semble plus simple pour les non-énisier ( attention ne t'y méprend pas, je suis toujours super interésé par tes lignes)
vivement que tu répond
julien
olihe Messages postés 3 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 13:28
RE-Salut Julien, oui j'ai télécharger ta source et ça fonctionne parfaitement pour le controle des sorties, mais comme moi, je n'utilise que 2 sorties, j'aimerais n'avoir qu'une petite fenêtre avec les 2 boutons. J'ai essayé d'effacer les autres boutons et ça marche par contre je n'arrive pas à réduire les dimensions des fenêtres.
Est ce que tu me comprends mieux?
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
17 sept. 2009 à 12:43
tu n'as pas oulié cette ligne => Dim num_menu As ToolStripItem = CType(sender, ToolStripItem)
??
pour le tag il s'écrit dans la fenetre propriété d'un control (cherche le nom tag) puis écris ce que tu veux , donc mon exemple j'écris 1 à 4 pour les utiliser comme integer et activer les sorties.
Sinon au pire dans le form load tu dois pouvoir écrire :
button1.tag = "1" etc...
De plus tu vois le bénéfice de la nouvelle version de la DLL ?
plus besoin de nommer la carte, il la/les trouves tout seul.
un clic sur la fonction version() et tu sais dessuite si ta DLL est bien au bonne endroit.
Va peut être faloir que je fasse une source regroupant tout ça ?
à voir, pour l'instant je fini un autre soft avec une carte VM140 (la grande soeur de la vm110 33 I/O et huit pour le comm RS232)
kenavo
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 12:37
il me faut plus de renseignement
as tu mis la carte a la bonne adresse
avec les toute les sortie ca fonctionne ?
as copié le k8055d.dll dans sytem32
en gros que se passe t'il
olihe Messages postés 3 Date d'inscription mardi 15 septembre 2009 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 12:32
Salut à vous tous,Julien, je me permets de t'écrire car j'ai besoin de votre aide pour faire plus ou moins la même chose que toi mais seulement pour piloter 2 sorties de la carte K8055.
Par chance, j'ai trouvé ton application mais comme je suis nulle en VB, je n'arrive pas à obtenir ce que je veux.
Je voudrais juste une petite fenetre avec les 2 premiers boutons.
J'avais pensé que de ton application, j'aurais pu faire disparaitre ce qui ne me servait pas, mais ça ne marche pas....
Est ce que tu saurais m'aider?
Merci d'avance!
Olivier
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
17 sept. 2009 à 12:11
gros bug a cette ligne :
Afaire(num_menu.Tag.ToString)'La référence d'objet n'est pas définie à une instance d'un objet.
pourquoi ?
je ne comprend pas toujour ces fameux tag (je crois qu'il me faut un dessin;))
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
16 sept. 2009 à 11:25
ben non, tu y mets ce que tu veux c'est un object associé à tout control, regarde dans les propriétés d'un control dans le concepteur (F1 explique aussi)

Voila en tout cas tu peu mettre ta source à jour avec cette méthode qui remplace les 200lignes de codes initials. rajoute simplement à la place de backcolor les setdigitalchannel(cint(ctrl.tag)) ou cleardigitalchannel(cint(ctrl.tag))
coradialement @+
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
16 sept. 2009 à 10:55
t'aurais un tuto sur ces "tag"
je connais pas
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
16 sept. 2009 à 10:38
Tiens voila ce que j'ai fais, cela doit pas être trés jolie, mais cela marche ! (ne pas oublier de tagger tes controls de 1 à 4, menu et BP)
@++

--------------------------code----------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button4.Click, Button3.Click, Button2.Click
Dim Num_Bp As Button = CType(sender, Button)
Afaire(Num_Bp.Tag.ToString) 'envoie le tag
End Sub
Private Sub Out1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Out1ToolStripMenuItem.Click, Out2ToolStripMenuItem.Click, _
Out3ToolStripMenuItem.Click, Out4ToolStripMenuItem.Click
Dim num_menu As ToolStripItem = CType(sender, ToolStripItem)
Afaire(num_menu.Tag.ToString) 'envoie le tag
End Sub

Private Sub Afaire(ByVal N_tag As String)
For Each ctrl As Control In Controls 'pour chaque control sur la form
If TypeOf (ctrl) Is Button Then ' et si ce control est un bouton
If ctrl.Tag.ToString = N_tag Then ' alors je compare le tag
If ctrl.BackColor = couleurOff Then
ctrl.BackColor = couleurOn
Else
ctrl.BackColor = couleurOff
End If
End If
End If
Next
End Sub
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
16 sept. 2009 à 09:05
ben Button1_Click avec les autres dans le handles appel la fonction Afaire(), donc de la même façon SortieN1ToolStripMenuItem_Click avec tous les autres dans le handles appel aussi cette fonction. Là du coup tu comprend pourquoi je suis une autre piste que le cast du sender.
Car dans un cas c'est un button, dans l'autre via le toolstripmenuitem c'est un item. Dans un premier temps tu peux écrire deux fois la fonction une avec Afaire(btn as button) et l'autre Afaire(menu as toolstripmenuitem) en surcharge, maintenant spa gagné ! Je vais faire un essais avec les tags.
kenavo
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
15 sept. 2009 à 14:49
j'ai peur d'etre un peu lourd
j'ai essayer de faire le truc avec les button vert ou grey
sa a l'ére de marché , le truc bizarre je me suis pas fait jeté comme tu le dit adn
moi le truc que je pige pas c ou je doit inserer le code pour que l'etat des button corresponde au menu contextuel
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
15 sept. 2009 à 07:40
salut qu'elle âne je fais, devais être fatigué moi hier ^^, c'est bien ce que je fesais en plus, mais je suis parti sur une autre piste. Je pense que l'on doit pouvoir utiliser directement les propriétés de cette object et ce, qu'elle qu'il soit.
Dans mon exemple il suffit en effet de faire : Afaire(CType(sender, Button))
Mais dans un autre soft que je develloppe le sender peut être aussi bien un label, qu'un bouton, qu'une imagebox. Je cherche donc plutôt à utiliser le sender t'elle quel, sans cast.
Un truc du style :
dim MonTruc as object = sender
MonTruc.Name ou le hach aussi : sender.gethash() retourne un numéro unique pour chaque object cliqué, aprés dans la fonction il me suffit de discrimer par le nom ou par le hash. Enfin bon je continu mes recherches la dessus ^^

kenavo
cs_Noisettes Messages postés 6 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 19 septembre 2009
14 sept. 2009 à 21:40
ADN56:
tout d'abord le sender est un objet de type objet, il faut le cast en Button.
Essaye ça:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click, Button4.Click, Button3.Click, Button2.Click

Dim btn As Button = CType(sender, Button)
Afaire(btn)
End Sub

Du coup ton Strict est OK, vu qu'il voit un objet de type Button crée à partir de l'original, pour la fonction qui elle à besoin d'un Button.

Noise
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
14 sept. 2009 à 19:52
Tiens pour être plus clair voici un exemple. colle 4 button sur une form nommé de 1 à 4 et décode ce code :

Option Explicit On
Option Strict Off ' si je mets ON il est pas content :-(
Public Class Form1
Dim couleurOn As Color = Color.Green
Dim couleurOff As Color = Color.Gray

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Text = "cliquez sur un bouton"
With (Button1) ' placer ici les propriétés du control
.BackColor = couleurOff
.Text = ""
End With
With (Button2)
.BackColor = couleurOff
.Text = ""
End With
With (Button3)
.BackColor = couleurOff
.Text = ""
End With
With (Button4)
.BackColor = couleurOff
.Text = ""
End With
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button4.Click, Button3.Click, Button2.Click
Afaire(sender)
End Sub

Private Sub Afaire(ByVal BP As Button)
If BP.BackColor = couleurOff Then
BP.BackColor = couleurOn
Else
BP.BackColor = couleurOff
End If
End Sub
End Class

Comme tu peux le voir cela arrange déja mieux le code, mais voila je suis autoditacte et débutant du coup si je passe l'option scrit à ON il me jette et j'ai pas encore trouvé la soluce, si une bonne âme peut me l'expliquer (au passage ^^)
voila amuse toi bien à programmer.
cordialement
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
14 sept. 2009 à 18:52
merci du conseil noisette et adn
je vais corriger dans ce sens
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
14 sept. 2009 à 08:31
@ PAT9SAB : Biensur que je connais ce soft, mais je vois pas le rapport avec ce site. Comme je le disais sur l'autre topic, si vous voulez simplement allumer une lampe avec un bouton, cablez le avec du fil ! ;-)
@ Noisettes : C'est ce que j'essaye de leur montrer, mais visiblement, en vain.

Pour la factorisation, utilisez la fonction de noisette et placer un bouton sur une form, copier le 8 fois et vous verrez que dans la procédure on clic du premier, les autres apparraissent dans la fin de la premiére ligne. Saisissez une seul fois la fonction cmdSortie avec comme numéro de bouton le sender de la fonction. Je dois pas être trés clair -_-" dsl
Pour le text du bouton off ou on, je conseil vivement de le placer dans une constante en début de code. Cela évitera de vous cognier tout le code dés que je vous désirez le changer !
const txt_on as string = "ON"
const txt_off as string = "OFF"

if btn.text = txt_on then ......
kenavo
cs_Noisettes Messages postés 6 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 19 septembre 2009
14 sept. 2009 à 08:13
A la place d'écrire 100 fois la même fonction que seul quelque paramètres changent, j'aurais fais une fonction avec des paramètres.
Private Sub CmdSortie(ByVal sortie As Integer, _
ByRef btn As Button, _
ByRef tsmi As ToolStripMenuItem, _
ByRef check As CheckBox)
If btn.Text = "Off" Then
tsmi.Checked = True
btn.Text = "On"
SetDigitalChannel(sortie)
check.Checked = True
Else
btn.Text = "On"
tsmi.Checked = False
btn.Text = "Off"
ClearDigitalChannel(sortie)
check.Checked = False
End If
End Sub

Et pour chaque button ou autre:
CmdSortie(1, Button1, SortieN1ToolStripMenuItem, CheckBox1)

Et encore, il y à encore moyen de faire mieux.

Bon courage si tu débute dans la programmation en VB.NET

Noise
PAT9SAB Messages postés 22 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 6 décembre 2009
13 sept. 2009 à 19:50
MERCI POUR DES CONSEILS ET POUR TA DISPOSITION
J'AI TELECHARGER LA VERSION FREE DE PROFILAB EXPERT DE CHEZ ABACOM un générateur d'applications "PC" basé sur une "saisie graphique". ON PEUT MEME COMPILER SON GRAPHE AVEC LA VERSION PAYANTE DOMAGE VOUS CONNAISSEZ!
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
13 sept. 2009 à 19:22
Pour ceux qui enfin continue de vouloir simplement allumer une sortie 220V sur appui d'un simple bouton, ou pour ceux sont un peu electricien voici mes ressources en images.
vous ne pourrez pas dire que je ne cherche pas à vous aider -_-" m'enfin bon ...

1-Piloter un K8064 (variateur de lumiére)
http://i22.servimg.com/u/f22/11/00/78/00/connex10.jpg
2-Cabler sa carte avec bouton+inter manuel
http://i22.servimg.com/u/f22/11/00/78/00/princi10.jpg
3-Description exemple d'une utilisation de cette carte
http://i20.servimg.com/u/f20/11/00/78/00/schema10.jpg

voila... je reste à votre service.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
13 sept. 2009 à 19:09
bon ok, à vous lire, je me couche.
Enfin pour ceux qui veulent vraiment bien utiliser cette carte voici pour info la bonne déclaration de la dll :

'----------------------------------------------------------------------
' déclaration de la DLL de la carte
Public Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) as Integer
Public Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
Public Declare Sub CloseDevice Lib "k8055d.dll" ()
Public Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer
Public Declare Function SearchDevices Lib "k8055d.dll" () As Integer
Public Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
Public Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
Public Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
Public Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Public Declare Sub SetAllAnalog Lib "k8055d.dll" ()
Public Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
Public Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Public Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)
Public Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Public Declare Sub ClearAllDigital Lib "k8055d.dll" ()
Public Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
Public Declare Sub SetAllDigital Lib "k8055d.dll" ()
Public Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As boolean
Public Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer
Public Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer
Public Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)
Public Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)
'----------------------------------------------------------------------
voila.
Aprés à vous de voir...........

Pour ceux que cela intéresse voir à cette adresse l'utilisation (et qui renvoi bien-sûr ici vers un vieux soft qui tourne dans 3 discothéque de la région)
le site de velleman : http://forum.velleman.be/viewtopic.php?f=3&t=708
la source : http://www.vbfrance.com/codes/REGIE-LUMIERE-PISTES_44145.aspx#
et pour les industriels voir ce projet qui tourne depuis 3 ans (deux modéles vendus à ce jour avec des vm110/k8055) : http://forum.velleman.be/viewtopic.php?f=15&t=1265
sur ce je reste à votre disposition pour plus d'infos (ou aide...hum hum)
PAT9SAB Messages postés 22 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 6 décembre 2009
13 sept. 2009 à 00:32
j'ai du changer ma version de vbexpress pour faire fonctionner ta prog resultat je vois que tu maitrise le vb pour un debutant
encore une fois bravo
julienmus Messages postés 51 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 13 février 2012
12 sept. 2009 à 20:43
merci pat pour tes encouragements
tu auras compris que ct pour une seule carte (donc basique)
passons donc pour le premier commentaire un peu sévère
ps: compatible et developpé avec et sous vista pour info
PAT9SAB Messages postés 22 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 6 décembre 2009
12 sept. 2009 à 18:52
pour l'instant se n'est pas grave ont fonctionne avec 8 sortie donc 1 carte sont premier logiciel est interessant
bravo Julien
je vais l'essayer
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
12 sept. 2009 à 15:12
salut,
Toujours pas la bonne DLL (elle est obsoléte celle là, non compatible multi carte et vista)
EX : Comment fais tu si le numéro de la carte n'est pas 0 ?
bref trop basique et classique, fait triple emploit avec les multiples sources sur la VM110 dernéirement et qui n'apporte rien de plus que les tutos du site velleman.
DSl.
Rejoignez-nous