bonjour à vous.
je pense fabriquer de plus en plus d’automatisme à base de PC avec vos carte VM110 et VM140 ! elles sont performante et fiable (testé et approuvé sous excel et vb.net)
j’aimerais cependant savoir si je peux compter sur votre équipe pour répondre à mes futurs questions en francais :!:
en effet, j’ai bientôt 40ans et j’ai du mal à suivre vos réponses en anglais !
je comprends l’essentiel, mais pas les détails (sorry)
(ce post est un peu hors du commun, je vous l’accorde)
Dans l’espoir d’avoir des francophones avec moi :oops: (je suis biensur pret à aider, voir à proposer mes codes déja fonctionnels !)
amicalement @dn, best regards
— OS = XP — dev sous VBA EXCEL or VB net frame work 2.0 —
Hello.
I’m sorry that I write in English. French is too difficult for me.
Nice to see that you feel that the VM110 (K8055) and the VM140 (K8061) are suitable hardware for your applications.
If there are any problems with those units or applications I would like to help.
thanks a lot vel255 but my english is so bad for explain my futur problem with this cards or application. :oops:
also my question is : is there somebody able to speak french ? :roll:
i saw french post, so i think it’s possible ! no, ? please i’m lost with this…
Voila j’ai trois cartes VM110 et j’aimerai connaitre la meilleure façon de les gérer !
Bien sur trois adresses différentes ^^
je bosse sur VB2005 (net2.0), suis-je obligé d’utiliser un timer pour scruter les états des IN/OUT ou il y a t’il un moyen plus temps réel de le faire ?
A quoi sers le Do_nothing en boolean ? juste à savoir si la carte X ou Y à fini d’écrire sur le port USB ?
Merci pour vos exemples
Yes, you have to use timer to read the status of the cards.
The boolean DoNothing just prevents the “WriteAllDigital n” to happen when the digital output check boxes are set or reset.
In the following procedures SetAllDig_Click() and ClearAllDig_Click()when the Check3(i).Value is set it causes the procedure Check3_Click(Index As Integer) to be executed. There DoNothing disables the WriteAllDigital DLL function call.
[code]Private Sub SetAllDig_Click()
Dim i As Long
DoNothing = True
For i = 0 To 7
Check3(i).Value = 1
Next
DoNothing = False
SetAllDigital
End Sub
Private Sub ClearAllDig_Click()
Dim i As Long
DoNothing = True
For i = 0 To 7
Check3(i).Value = 0
Next
DoNothing = False
ClearAllDigital
End Sub
Private Sub Check3_Click(Index As Integer)
Dim i As Long
Dim n As Long
n = 0
For i = 0 To 7
n = n + Check3(i).Value * (2 ^ i)
Next
If Not DoNothing Then WriteAllDigital n
End Sub[/code]
yes you understood my question 8)
thank’s for the answer
but if i write out of card one, and after the out of card two, in the same procédure it’s better no ?
ex :
'--------- ECRITURE DES SORTIES TOUT OU RIEN -----------------
' prog out1 or 2
' visualisation et activations des leds de sorties
For ii As Integer = 0 To 7
If OUT(ii) = True Then
visusortie(ii).BackColor = Color.GreenYellow
SetDigitalChannel(ii + 1) ' remplace le writealldigital ^^
Else
visusortie(ii).BackColor = Color.DarkGreen
ClearDigitalChannel(ii + 1)
End If
Next
but i don’t understand how i can change the adress of the out
must i use the connect/disconnect ? or other ?
ex :
'------------ connection a la carte ------------------------------
Dim h As Integer = OpenDevice(1)
If h = 1 Then
' the prog of out1 carte 1
End If
If h = -1 Then
MsgBox("Connexion avec l'interface USB impossible" & Chr(13) & Chr(10) & "Vérifiez sa connection !!!!")
End If
Dim h As Integer = OpenDevice(2)
If h = 2 Then
' the prog of out2 carte 2
End If
If h = -1 Then
MsgBox("Connexion avec l'interface USB impossible" & Chr(13) & Chr(10) & "Vérifiez sa connection !!!!")
End If
it’s not very beautiful ! is not a better prog for that ?
I try to make a procedure like that :
out (n,i) n=number of the card and i as the number of out
like in k8061, do you anderstand me ?
i continu my shearch, but in inglish is so hard lol…
thank for your help… @dn
The latest DLL versions 2 and 3 support SetCurrentDevice(card_address) function call.
You may use it to switch the control between the cards.
No need to use OpenDevice any more to switch between the cards.
You’ll find the latest DLL versions from the Velleman downloads.
The description of the new “multi card” functions are at the end of the document MAN_FR_K8055_DLL_V2.pdf.
You’ll find the document and a lot of example programs from the file k8055_dll_2_001.zip.
Apres essais voici la façon que j’ai trouvé pour connecter/déconnecter deux cartes (ou plus) avec un bouton en VB.NET
Si cela peux servir à d’autre…ou être commenté/optimisé
after test this is the way i found for connect/disconnect two (or more) card whith a button in VB.NET
If someboby need…or comment / perfect the code
placer un bouton sur votre form, faites les déclarations de la DLL puis dans la procédure clic du bouton copier ce code. amicalement @dn
Set a button in your form, do the déclaration of dll and in the click procédure copy/paste this code. regards @dn
[code] Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "déconnecté" Then
'--------------------- connection a la carte ------------------------------------------------
Dim h As Integer = OpenDevice(0)
Dim i As Integer = OpenDevice(1)
If h = 0 And i = 1 Then
Button1.Text = "EN LIGNE"
connect = True
End If
If h = -1 Then
MsgBox("Connexion avec la carte 0 impossible" & Chr(13) & Chr(10) & "Vérifiez sa connection !!!!")
Button1.Text = "déconnecté"
connect = False
End If
If i = -1 Then
MsgBox("Connexion avec la carte 1 impossible" & Chr(13) & Chr(10) & "Vérifiez sa connection !!!!")
Button1.Text = "déconnecté"
connect = False
End If
Else
Button1.Text = "déconnecté"
connect = False
SetCurrentDevice(0)
ClearAllDigital()
ClearAllAnalog()
CloseDevice()
SetCurrentDevice(1)
ClearAllDigital()
ClearAllAnalog()
CloseDevice()
End If
End Sub 'connection à la carte USB[/code]
I’dont use the auto found procedure searchdevice for simply code
je n’ai volontairement pas utilisé la procédure searchdevice pour me simplifier la vie.
Mais elle me parait tres utile, reste à faire un bout de code pour mettre en variable les cartes en ligne.
but it’s a good way for found cards, but need more code…
yes it’s work fine, but not simultaneously.
just one after one, It’s a timer, like that :
[code] SetCurrentDevice(0)
For ii As Integer = 0 To 7
If OUT(ii) = True Then
visusortie(ii).BackColor = couleurON(ii)
SetDigitalChannel(ii + 1) ’ carte une
Else
visusortie(ii).BackColor = couleurOFF(ii)
ClearDigitalChannel(ii + 1)
End If
Next
SetCurrentDevice(1)
For ii As Integer = 0 To 7
If OUT(ii) = True Then
visusortie(ii).BackColor = couleurON(ii)
SetDigitalChannel(ii + 1) ’ carte une
Else
visusortie(ii).BackColor = couleurOFF(ii)
ClearDigitalChannel(ii + 1)
End If
Next
[/code]
but it’s work fine, Except if you don’t have two cards connected !! if you have just one connected it’s work whith pause…I need to make a condition for shunt or read the code of the second cards
(cela marche bien, mais si vous ne branchez qu’une seule carte ses sorties clignotent lors du passage au code de la numéro deux ^^ il faudrait que je rajoute une condition de connection pour lire le code de la numéro deux :p)
Merci pour vos conseils et bonne fétes à tous !!!
thank’s again for help, and have nice & happy new year !! @dn, best regards…
hello,
Yes you are wright ! as this time the same visusortie command the two cards. the name visusortie as a label collection (in VB2005.net) so i make a mistake ^^
so i write a version who detect the number of card connected and active or not the out.
here the good code (this my best code for that :roll: )
bonjours et merci de ton intéret pour mon code…
Tu as raison ya un bug (enfin non) à l’époque et pour les tests j’utilisais les mêmes variables visusortie pour piloter les deux cartes. Je me suis alors rendu compte que les sorties de la carte 1 clignotaient si la carte 2 n’était pas connectée. J’ai donc utilisé deux variables pour detecter la présence des cartes en ligne ! et là cela marche nickel ! j’en ai profité pour scinder la visualisation et l’activation des sorties
[code] Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'---------------------- ECRITURE DES SORTIES TOUT OU RIEN CARTE 1 ----------------------
' visualisation et activations des leds de sorties
For ii As Integer = 0 To 7
If OUT(ii) = True Then
visusortie(ii).BackColor = couleurON(ii)
Else
visusortie(ii).BackColor = couleurOFF(ii)
End If
Next
' si la carte une est active
If connect1 Then
SetCurrentDevice(0)
OutputAllAnalog(data3, data4)
For ii As Integer = 0 To 7
If OUT(ii) = True Then
SetDigitalChannel(ii + 1)
Else
ClearDigitalChannel(ii + 1)
End If
Next
End If
'---------------------- ECRITURE DES SORTIES TOUT OU RIEN CARTE 2 ----------------------
' visualisation et activations des leds de sorties
For ii As Integer = 8 To 15
If OUT(ii) = True Then
visusortie(ii).BackColor = couleurON(ii)
Else
visusortie(ii).BackColor = couleurOFF(ii)
End If
Next
' si la carte deux est active
If connect2 Then
SetCurrentDevice(1)
OutputAllAnalog(data1, data2)
For ii As Integer = 0 To 7
If OUT(ii + 8) = True Then
SetDigitalChannel(ii + 1) ' carte deux
Else
ClearDigitalChannel(ii + 1)
End If
Next
End If[/code]