Vm 140 (k8061), analog input/output

Contenu du snippet

Source pour la carte VM140 (K8061 interface PC) de Velleman , permet d'exploiter les entrées sorties analogiques de la carte, cette source est un petit exemple destiné à aider les débutants.
Ne pas oublier de copier les fichiers : mpusbapi.dll et K8061.dll (fournis avec la carte)
dans le répertoire de votre source vb : "nom de la source" / bin / debug

Source / Exemple :


Option Strict Off
Option Explicit On
Friend Class K8061
    Inherits System.Windows.Forms.Form
    Dim bDoNothing As Boolean
    Dim shtCount As Short
    Dim intCardNumber As Integer

    Private Declare Function OpenDevice Lib "k8061.dll" () As Integer
    Private Declare Sub CloseDevices Lib "k8061.dll" ()
    Private Declare Function ReadAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer) As Integer
    Private Declare Function PowerGood Lib "k8061.dll" (ByVal intCardNumber As Integer) As Boolean
    Private Declare Function Connected Lib "k8061.dll" (ByVal intCardNumber As Integer) As Boolean
    Private Declare Sub ReadVersion Lib "k8061.dll" (ByVal intCardNumber As Integer, ByRef Buffer As Integer)
    Private Declare Sub ReadAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer, ByRef Buffer As Integer)
    Private Declare Sub OutputAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer, ByVal Data As Integer)
    Private Declare Sub OutputAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer, ByRef Buffer As Integer)
    Private Declare Sub ClearAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub SetAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Sub ClearAllAnalog Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Sub SetAnalogChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub OutputAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Data As Integer)
    Private Declare Sub ClearDigitalChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub ClearAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Sub SetDigitalChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer)
    Private Declare Sub SetAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer)
    Private Declare Function ReadDigitalChannel Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Channel As Integer) As Boolean
    Private Declare Function ReadAllDigital Lib "k8061.dll" (ByVal intCardNumber As Integer) As Integer
    Private Declare Sub OutputPWM Lib "k8061.dll" (ByVal intCardNumber As Integer, ByVal Data As Integer)
    Private Declare Sub Version Lib "k8061.dll" ()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'on connect les deux cartes
        Dim intCard As Integer
        intCard = 0
        intCard = OpenDevice

        Dim intCard1 As Integer
        intCard = 1
        intCard1 = OpenDevice

        'demare le timer qui lit l'entrée analogique
        Timer1.Interval = 500
        Timer1.Start()

        
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        'ENTREE ANALOGIQUE:

        'lit l'entrée analogique et affiche la tension en volt
        Dim v As Integer

        ReadAnalogChannel(0, 1)

        v = ReadAnalogChannel(0, 1)

        TrackBar1.Value = v
        Label2.Text = v / 100

        'pour avoir la valeur de l'entrée analogique en volt on divise par 100 :
        'les entrées analogiques on des résolutions de 10 bit donc 1024 pas,
        'sur la carte les jumpers de tolerance sont réglés sur 10 V max,
        '10/1024 = 0,01 (à peu prés!), donc 1 pas de l'entrée analogique = 0,01 V
        'multiplier par 0,01 et egale a diviser par 100

        'SORTIE ANALOGIQUE:

        'on fait varier la tension de la sortie analogique en agissant 
        'sur le trackbar dont la valeur max doit etre 256
        'car les sortie analogiques font 8 bit donc 256 pas

        Dim v2 As Integer

        v2 = TrackBar2.Value

        OutputAnalogChannel(0, 1, (v2))

        'affiche la tension en volt

        Label5.Text = v2 / 50

        'pour avoir la valeur de la sortie analogique en volt on divise par 50 :
        'les sorties analogiques on des résolutions de 8 bit donc 256 pas,
        'sur la carte les jumpers de tolerance sont réglés sur 5 V max,
        '5/256 = 0,02 (à peu prés!), donc 1 pas de l'entrée analogique = 0,02 V
        'multiplier par 0,02 et egale à diviser par 50

    End Sub
End Class

Conclusion :


Pour les débutants qui bataillent avec leurs carte interface PC , je travail sur un petit site qui regroupe des exemples d'applications, des schémas et des sources pour K8000 et K8061:

http://sites.google.com/site/brikop/

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.