Logiciel Récuperation du signal sortie de la carte son [Résolu]

asticool03 - 12 avril 2013 à 14:09 - Dernière réponse : NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention
- 29 avril 2013 à 13:12
Bonjour,
Je dois pour mon stage effectuer un logiciel d'acquisition pour une machine en temps réel. Cette machine est reliée à une carte électronique d'acquisition qui elle même est reliée à la carte son.
Cela fait maintenant une semaine que je cherche comment récuperer le signal de la carte son afin d'ensuite faire un tracé de signal en temps réel.
Je suis bloqué dans visual basic je ne sais pas du tout quel fonction utiliser pour réaliser cela ...
Merci d'avance pour vos réponse.
Afficher la suite 

14 réponses

Répondre au sujet
Utilisateur anonyme - 15 avril 2013 à 20:26
+3
Utile
Pour compléter mon post de midi (oui je n'avais pas beaucoup de temps) voici des informations supplémentaires.

Les 3 dll (bass.Net.dll, bass.dll et bassenc.dll les liens de téléchargement sont dans mon post précédent) doivent se trouver aux cotés de l'exécutable. Lire quand même les licences hein
Seule la dll Bass.Net.dll doit être référencée dans le projet (propriétés du porjet / ajouter une référence).

S'assurer dans le panneau de configuration qu'un périphérique d'enregistrement (partie enregistrement de la carte son) est activé, prêt et est défini par défaut.

J'ai rajouté une classe héritant d'un picturebox pour l'affichage de la voie gauche (si l'on met aussi la voie droite elles se chevauchent et on ne voit pas grand chose). On pourrait décaler facilement l'axe y d'une des 2 voies (gauche ou droite) en ajoutant une variable fixe mais ce n'est pas le but de l'exemple.

L'exemple ci-dessous enregistre dans un fichier 'test.wav' tout ce qui se passe sur la carte son et affiche la valeur du volume de la voie de gauche sur le formulaire. Attention encore une fois à paramétrer correctement cette carte dans le panneau de configuration windows.

Voici donc le code complet modifié et commenté :

Option Strict On
Imports Un4seen
Imports Un4seen.Bass
Imports Un4seen.Bass.Bass
Imports Un4seen.Bass.AddOn.Enc.BassEnc
Imports Un4seen.Bass.AddOn.Enc

Public Class Form1
    Dim _devrec, _rechandle, _enchandle As Integer
    Dim _recproc As RECORDPROC
    Dim aff As clsAffichage

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

        'recuperation de l'enregistreur
        DeviceInfos = BASS_RecordGetDeviceInfos()
        For x = 0 To DeviceInfos.Length - 1
            If DeviceInfos(x).IsDefault = True Then
                _devrec = x
                Exit For
            End If
        Next

        'paramétrage buffer (bass.dll doit être présent)
        Dim res As Boolean
        BASS_Start()
        res = BASS_SetConfig(BASSConfig.BASS_CONFIG_UPDATEPERIOD, 20)
        res = BASS_SetConfig(BASSConfig.BASS_CONFIG_REC_BUFFER, 10)

        'initialisation du périphérique enregistreur
        res = BASS_Init(_DevRec, 48000, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero)
        res = BASS_RecordInit(_DevRec)
        res = BASS_RecordSetDevice(_devrec)

        'debut enregistrement
        _recProc = Nothing
        _recProc = New RECORDPROC(AddressOf MyEncProc)
        _recHandle = BASS_RecordStart(48000, 2, 0, _recProc, IntPtr.Zero)
         'enregistrement d'un WAV par exemple
        _enchandle = BASS_Encode_Start(_rechandle, "test.wav", BASSEncode.BASS_ENCODE_PCM Or BASSEncode.BASS_ENCODE_FP_24BIT Or BASSEncode.BASS_ENCODE_AUTOFREE, Nothing, IntPtr.Zero)
        'création du graphique
        aff New clsAffichage(New Rectangle(0, 0, Me.Width, Me.Height)) With {.Parent Me}
    End Sub

    Private Function MyEncProc(ByVal handle As Integer, ByVal buffer As IntPtr, ByVal length As Integer, ByVal user As IntPtr) As Boolean
        Dim Level As Integer = BASS_ChannelGetLevel(_recHandle)
        Dim L As Integer = CType(Utils.LowWord32(Level), Integer)
        Dim R As Integer = CType(Utils.HighWord32(Level), Integer)
        'on ajoute ici les valeurs des volumes (voies droite et gauche)
        aff.AjoutePoints(L, R)
        'on affiche le graphique
        aff.Affiche()
        Return True
    End Function
End Class


Public Class clsAffichage
    Inherits PictureBox
    'bitmap sur lequel dessiner
    Dim b As Bitmap
    'objet graphique
    Dim g As Graphics
    'listes voies gauche et droite
    Dim l As New List(Of Point)
    Dim r As New List(Of Point)
    'position x sur le graphique
    Dim pos As Integer

    Sub New(ByVal rect As Rectangle)
        'positionnemlent du picturebox
        With Me
            .Left = rect.Left
            .Top = rect.Top
            .Width = rect.Width
            .Height = rect.Height
        End With
        'nouveau bitmap
        b = New Bitmap(Me.Width, Me.Height)
        'assignation de l'objet graphique au bitmap
        g = Graphics.FromImage(b)
    End Sub
    Sub AjoutePoints(ByVal ptL As Integer, ByVal ptR As Integer)
        'on ajoute les points dans les deux listes (voie gauche et voie droite)
        'remarque : il faut diviser les valeurs du volume par 60 sinon elles dépassent du formulaire
        pos += 2
        l.Add(New Point(pos, Me.Height - CType(ptL / 60, Integer)))
        r.Add(New Point(pos, Me.Height - CType(ptR / 60, Integer)))
        'si le nombre de points dépasse 300 (largeur du formulaire) on efface
        If pos > 300 Then
            l.Clear()
            r.Clear()
            pos = 0
        End If
    End Sub
    Sub Affiche()
        'effacement du bitmap avec fond noir
        g.Clear(Color.Black)
        'voie gauche
        'pour chaque point de la liste on dessine une ligne bleue entre le
        'point précédent (x-1) et x
        For x = 1 To l.Count - 1
            g.DrawLine(Pens.Blue, l(x - 1), l(x))
        Next
        'voie droite (commentée car chevauchement des deux voies sinon...)
        'For x = 1 To r.Count - 1
        '    g.DrawLine(Pens.Red, r(x - 1), r(x))
        'Next
        'affichage
        Me.Image = CType(b.Clone, Image)
    End Sub
End Class
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 12 avril 2013 à 22:05
0
Utile
Salut,

pour une machine
Quelle machine ? Y a-t-il une documentation ?
est reliée à une carte électronique d'acquisition
Quelle carte ?
récuperer le signal de la carte son
Quelle carte ?
Je suis bloqué dans visual basic
Quelle version ? Et pourquoi avoir posté dans la section présente VBScript ?

Quel code as-tu réalisé ?

Bref, on ne sait absolument rien. Merci de (re?)lire le règlement du forum.
Commenter la réponse de Utilisateur anonyme
cs_cheyenne 693 Messages postés samedi 18 mai 2002Date d'inscription 17 avril 2017 Dernière intervention - 13 avril 2013 à 19:49
0
Utile
Bonjour,

Un tracé de signal, oui mais lequel, l'amplitude ou la fréquence ? Faire un graph en utilisant les transformées de Fourier ou autre ?
Captures donc le signal au format wave et analyses les échantillons. Il y a des codes sur ce site qui t'aideront, voir par exemple du côté des Vu-mètres.

Cheyenne
Commenter la réponse de cs_cheyenne
asticool03 - 15 avril 2013 à 08:13
0
Utile
bonjour tout d'abord merci pour vos messages. donc la machine que j'utilise est un andérométre vous ne connaitré surement pas ensuite c'est une carte d'acquisiton réalisé par des stagiaire dans les années antérieur. Ensuite pour finir de te répondre banana je ne peux en aucun cas commencé à programmé car je ne sais justement pas comment et quelle fonction utiliser pour récupérer ce qu'il y a en sortie de la carte d'acquisition qui est reliée à la carte son.
ensuite Cheyenne je veux récupérer l'amplitude et la fréquence mais justement si j'arrive juste a récupérer le signal temporel je pourrais aisément passer en fréquence par la FFT.
et justement le probléme encore une fois c'est que je ne sais pas comment récupérer le signal je pense qu'il doit y avoir des API windows mais comment les utiliser je ne sais pas meme en cherchant =( merci beaucoup de vos réponses en tout cas.
Commenter la réponse de asticool03
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 15 avril 2013 à 08:19
0
Utile
Bonjour,
c'est une carte d'acquisiton réalisé par des stagiaire dans les années antérieur

ils ont donc écrit un/des pilote(s). Une librairie contenant des fonctions propriétaires. Tu ne pourras rien sans la documentation qui accompagne cela !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
asticool03 - 15 avril 2013 à 08:50
0
Utile
je regarde cela et je te dit ce que je trouve =)
Commenter la réponse de asticool03
asticool03 - 15 avril 2013 à 08:57
0
Utile
ce que j'ai trouvé c'est la chose suivante:
c'est une carte audio de type Xonar Essence ST du fabriquant ASUS.
Je ne sais pas si c'est ce que tu voulais savoir mais en tout cas voila la carte son utilisée
Commenter la réponse de asticool03
asticool03 - 15 avril 2013 à 09:03
0
Utile
Les stagiaires ont juste fait une carte électronique servant à l'amplification. En gros la sortie de l'andérométre (fiche BNC) et reliée à l'entrée de la carte amplification(fiche BNC) et aprés est reliée sur l'entrée "line IN" de la carte son (fiche gros jack).
Commenter la réponse de asticool03
Utilisateur anonyme - 15 avril 2013 à 12:58
0
Utile
La Librairie BASS te permettra aisément de récupérer les données issues de ta carte audio et de les traiter. Elle tourne sur la plupart des OS et est compatible avec la plupart des langages.
Personnellement, je l'ai utilisée en VB .NET et elle donne satisfaction.

Voici un exemple d'utilisation avec Visual Basic Express 2010 disponible ici pour enregistrer un WAV reproduisant les sons issus de la carte son. Il suffit de faire référence à BASS.NET dans les propriétés du projet et ainsi que la dll de base Bass.dll. Tu aura peut-être aussi besoin de cette dll d'encodage (Wav, Mp3 etc...)

Option Strict On
Imports Un4seen
Imports Un4seen.Bass
Imports Un4seen.Bass.Bass
Imports Un4seen.Bass.AddOn.Enc.BassEnc
Imports Un4seen.Bass.AddOn.Enc

Public Class Form1
    Dim _devrec, _rechandle, _enchandle As Integer
    Dim _recproc As RECORDPROC

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

        'recuperation de l'enregistreur
        DeviceInfos = BASS_RecordGetDeviceInfos()
        For x = 0 To DeviceInfos.Length - 1
            If DeviceInfos(x).IsDefault = True Then
                _devrec = x
                Exit For
             End If
        Next

        'paramétrage buffer (bass.dll doit être présent)
        Dim res As Boolean
        BASS_Start()
        res = BASS_SetConfig(BASSConfig.BASS_CONFIG_UPDATEPERIOD, 20)
        res = BASS_SetConfig(BASSConfig.BASS_CONFIG_REC_BUFFER, 10)

        'initialisation du périphérique enregistreur
        res = BASS_Init(_DevRec, 48000, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero)
        res = BASS_RecordInit(_DevRec)
        res = BASS_RecordSetDevice(_devrec)

        'debut enregistrement
        _recProc = Nothing
        _recProc = New RECORDPROC(AddressOf MyEncProc)
        _recHandle = BASS_RecordStart(48000, 2, 0, _recProc, IntPtr.Zero)
        'ici, on peut utiliser _recHandle pour l'analyser (données issues de la carte son)
        'enregistrement d'un WAV par exemple
        _encHandle = BASS_Encode_Start(_RecHandle,"test.wav", BASSEncode.BASS_ENCODE_PCM Or BASSEncode.BASS_ENCODE_FP_24BIT Or BASSEncode.BASS_ENCODE_AUTOFREE, Nothing, IntPtr.Zero)

    End Sub

    Private Function MyEncProc(ByVal handle As Integer, ByVal buffer As IntPtr, ByVal length As Integer, ByVal user As IntPtr) As Boolean
        Dim Level As Integer = BASS_ChannelGetLevel(_recHandle)
        Dim L As Integer = CType(Utils.LowWord32(Level), Integer)
        Dim R As Integer = CType(Utils.HighWord32(Level), Integer)
        'faire ici quelque chose avec le volume (détection debut et fin de son par exemple)
        '...
        Return True
    End Function
End Class
Commenter la réponse de Utilisateur anonyme
asticool03 - 16 avril 2013 à 08:49
0
Utile
Merci beaucoup pour tes reponses précises et complétes je vais essayer tout cela et je te tient au courant de mon avancement grâce a toi. Puis-je avoir ton adresse email pour continuer à discuter de cela et puis pour avoir quelque conseils? Bon allez j'essay tout cela!
Commenter la réponse de asticool03
Utilisateur anonyme - 16 avril 2013 à 13:04
0
Utile
Puis-je avoir ton adresse email pour continuer à discuter de cela et puis pour avoir quelque conseils?

Sur ce forum, pour faciliter les recherches par mots clés et l'entraide entre développeurs, les discussions se font publiquement. Je t'invite donc à poursuivre ce dialogue ici même.

Si tu suis bien les instructions de mes deux posts ci-dessus (carte son correctement configurée, installation de visual basic 2010 express edition, référence de la dll faite dans les propriétés du projet, remplacement du code du formulaire principal par le mien, démarrage du projet avec F5) :[list]
[*] un fichier wav devrait apparaître dans le sous-dossier 'debug' de ton projet
[*] une ligne bleue sur fond noir devrait s'animer sur le formulaire principal en fonction du volume d'enregistrement.
/list
Commenter la réponse de Utilisateur anonyme
asticool03 - 22 avril 2013 à 14:11
0
Utile
bonjour entre temps j'ai eu de l'aide gràce a un de mes professeur et voila le resulat que j'ai eu! sous VBA pour tester voir si le code marche bien et j'ai eu le bon resutat mais maintenant le probléme c'est que quand je passe se code de vba a vb2010 alors la toutes les declarations sont a revoir et rien ne marche je vous fait voir cela
voici le module :
'----------------------------------------------------------------------
' SAA paramêtrable v0
' repris du


Option Explicit 'déclaration obligatoire des variables



Public DevHandle As Long 'Handle de la carte son


                            
Public Type WaveFormatEx
    FormatTag As Integer        'format audio 1 pour PCM
    Channels As Integer         '1 pour mono 2 pour stéréo
    SamplesPerSec As Long       'fréq échantillonage
    AvgBytesPerSec As Long      'nombre d'octets par seconde = nChannels * nSamplesPerSec * (nBitsPerSample/8)
    BlockAlign As Integer       'contient la taille totale (en octets) d'un échantillon= nChannels * (nBitsPerSample / 8)
    BitsPerSample As Integer    '8bits ou 16bits
    ExtraDataSize As Integer    'info utilisée pour les formats non PCM soit 0 pour nous
End Type

Public Type WaveHdr             'entete du buffer audio
    lpData As Long              'pointeur vers le buffer
    dwBufferLength As Long      'longueur du buffer
    dwBytesRecorded As Long
    dwUser As Long
    dwFlags As Long
    dwLoops As Long
    lpNext As Long
    Reserved As Long
End Type

Public Type WaveInCaps
    ManufacturerID As Integer      'wMid
    ProductID As Integer       'wPid
    DriverVersion As Long       'MMVERSIONS vDriverVersion
    ProductName(1 To 32) As Byte 'szPname[MAXPNAMELEN]
    Formats As Long
    Channels As Integer
    Reserved As Integer
End Type

Public Const WAVE_INVALIDFORMAT = &H0&                 '/* invalid format */
Public Const WAVE_FORMAT_1M08 = &H1&                   '/* 11.025 kHz, Mono,   8-bit
Public Const WAVE_FORMAT_1S08 = &H2&                   '/* 11.025 kHz, Stereo, 8-bit
Public Const WAVE_FORMAT_1M16 = &H4&                   '/* 11.025 kHz, Mono,   16-bit
Public Const WAVE_FORMAT_1S16 = &H8&                   '/* 11.025 kHz, Stereo, 16-bit
Public Const WAVE_FORMAT_2M08 = &H10&                  '/* 22.05  kHz, Mono,   8-bit
Public Const WAVE_FORMAT_2S08 = &H20&                  '/* 22.05  kHz, Stereo, 8-bit
Public Const WAVE_FORMAT_2M16 = &H40&                  '/* 22.05  kHz, Mono,   16-bit
Public Const WAVE_FORMAT_2S16 = &H80&                  '/* 22.05  kHz, Stereo, 16-bit
Public Const WAVE_FORMAT_4M08 = &H100&                 '/* 44.1   kHz, Mono,   8-bit
Public Const WAVE_FORMAT_4S08 = &H200&                 '/* 44.1   kHz, Stereo, 8-bit
Public Const WAVE_FORMAT_4M16 = &H400&                 '/* 44.1   kHz, Mono,   16-bit
Public Const WAVE_FORMAT_4S16 = &H800&                 '/* 44.1   kHz, Stereo, 16-bit

Public Const WAVE_FORMAT_PCM = 1

Public Const WHDR_DONE = &H1&              '/* done bit */
Public Const WHDR_PREPARED = &H2&          '/* set if this header has been prepared */
Public Const WHDR_BEGINLOOP = &H4&         '/* loop start block */
Public Const WHDR_ENDLOOP = &H8&           '/* loop end block */
Public Const WHDR_INQUEUE = &H10&          '/* reserved for driver */

Public Const WIM_OPEN = &H3BE
Public Const WIM_CLOSE = &H3BF
Public Const WIM_DATA = &H3C0

Public Declare Function waveInAddBuffer Lib "winmm" (ByVal InputDeviceHandle As Long, ByVal WaveHdrPointer As Long, ByVal WaveHdrStructSize As Long) As Long
Public Declare Function waveInPrepareHeader Lib "winmm" (ByVal InputDeviceHandle As Long, ByVal WaveHdrPointer As Long, ByVal WaveHdrStructSize As Long) As Long
Public Declare Function waveInUnprepareHeader Lib "winmm" (ByVal InputDeviceHandle As Long, ByVal WaveHdrPointer As Long, ByVal WaveHdrStructSize As Long) As Long

Public Declare Function waveInGetNumDevs Lib "winmm" () As Long
Public Declare Function waveInGetDevCaps Lib "winmm" Alias "waveInGetDevCapsA" (ByVal uDeviceID As Long, ByVal WaveInCapsPointer As Long, ByVal WaveInCapsStructSize As Long) As Long

Public Declare Function waveInOpen Lib "winmm" (WaveDeviceInputHandle As Long, ByVal WhichDevice As Long, ByVal WaveFormatExPointer As Long, ByVal CallBack As Long, ByVal CallBackInstance As Long, ByVal Flags As Long) As Long
Public Declare Function waveInClose Lib "winmm" (ByVal WaveDeviceInputHandle As Long) As Long

Public Declare Function waveInStart Lib "winmm" (ByVal WaveDeviceInputHandle As Long) As Long
Public Declare Function waveInReset Lib "winmm" (ByVal WaveDeviceInputHandle As Long) As Long
Public Declare Function waveInStop Lib "winmm" (ByVal WaveDeviceInputHandle As Long) As Long


'............................................................................................
' Les fonctions permettant la sortie sur carte son.
'............................................................................................
Public Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
Public Declare Function waveOutGetDevCaps Lib "winmm.dll" Alias "waveOutGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As WaveInCaps, ByVal uSize As Long) As Long
Public Declare Function waveOutGetErrorText Lib "winmm.dll" Alias "waveOutGetErrorTextA" (ByVal err As Long, ByVal lpText As String, ByVal uSize As Long) As Long
Public Declare Function waveOutOpen Lib "winmm.dll" (lphWaveOut As Long, ByVal uDeviceID As Long, lpFormat As WaveFormatEx, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
Public Declare Function waveOutClose Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
Public Declare Function waveOutPrepareHeader Lib "winmm.dll" (ByVal hWaveOut As Long, lpWaveOutHdr As WaveHdr, ByVal uSize As Long) As Long
Public Declare Function waveOutUnprepareHeader Lib "winmm.dll" (ByVal hWaveOut As Long, lpWaveOutHdr As WaveHdr, ByVal uSize As Long) As Long
Public Declare Function waveOutWrite Lib "winmm.dll" (ByVal hWaveOut As Long, lpWaveOutHdr As WaveHdr, ByVal uSize As Long) As Long
Public Declare Function waveOutPause Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
Public Declare Function waveOutRestart Lib "winmm.dll" (ByVal hWaveOut As Long) As Long
Public Declare Function waveOutReset Lib "winmm.dll" (ByVal hWaveOut As Long) As Long


Public Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (lpDest As Any, lpSource As Any, _
ByVal cbCopy As Long)

Public Wave As WaveHdr

' temporisation
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



et voici mon code de page:

Option Explicit
Private InData() As Integer 'tableau qui contiendra les échantillons
Dim N2ech As Integer
Dim FreqEchant, NumSamples

Public Sub Acquisition1()

Dim j As Integer  'variable de boucle
FreqEchant = 50200

Dim WaveFormat As WaveFormatEx 'type nécessaire aux appels de fonctions wave, voir module2

'pour pouvoir faire une FFT il faut un nombre d'échantillon correspondant
'a une puissance de 2 soit 2^N2ech

N2ech = 15
NumSamples = 2 ^ N2ech

ReDim InData(0 To NumSamples - 1) 'redimmenssionnement du tableau


With WaveFormat
        .FormatTag = WAVE_FORMAT_PCM '1
        .Channels = 1
        .SamplesPerSec = FreqEchant
        .BitsPerSample = 16
        .BlockAlign = (.Channels * .BitsPerSample) / 8
        .AvgBytesPerSec = .BlockAlign * .SamplesPerSec
        .ExtraDataSize = 0
End With

Call waveInOpen(DevHandle, 0, VarPtr(WaveFormat), 0, 0, 0)

If DevHandle = 0 Then
        Call MsgBox("Wave input device didn't open!", vbExclamation, "Ack!")
        Exit Sub
End If
    
    
Call waveInStart(DevHandle)
    
Wave.lpData = VarPtr(InData(0))
Wave.dwBufferLength = 2 * NumSamples 'longueur en octets
Wave.dwFlags = 0

Call waveInPrepareHeader(DevHandle, VarPtr(Wave), Len(Wave))
Call waveInAddBuffer(DevHandle, VarPtr(Wave), Len(Wave))
        
        
Do
            
Loop Until ((Wave.dwFlags And WHDR_DONE) = WHDR_DONE)
        
Call waveInUnprepareHeader(DevHandle, VarPtr(Wave), Len(Wave))
        
CopyMemory InData(0), ByVal Wave.lpData, NumSamples
'maintenant InData contient tous les échantillons
         

        
       
waveInReset (DevHandle)
waveInClose (DevHandle)
End Sub

Public Sub RecupCartes()
' Liste les cartes son dans le PC
    Dim Caps As WaveInCaps, Which As Long, str As String
    
    For Which = 0 To waveInGetNumDevs - 1
        Call waveInGetDevCaps(Which, VarPtr(Caps), Len(Caps))
        If Caps.Formats And WAVE_FORMAT_1M16 Then '16-bit mono devices
            str = "vous avez une : " & StrConv(Caps.ProductName, vbUnicode)
            Call MsgBox(str)
        End If
    Next
    
     
End Sub
Public Sub CommandButton1_Click()
Acquisition1
Dim i, x As Double
For i = 1 To 4096
    Range("A" & i).Value = InData(i - 1) / 10
    x = 80 / (NumSamples + 1)
    Range("B" & i).Value = x * i
    Range("J"&i).Value =
Next
    Range("H2").Value = NumSamples
    Range("H1").Value = FreqEchant
    Range("H3").Value = (1 / FreqEchant)
End Sub


et tout cela marche mais aprés les problémes sous vb se pose car caps il ne connais pas puis la fonction copymemory indata(0) byval wave.ipdata il n'aime pas enfin bref beaucoup de chose ='(
Commenter la réponse de asticool03
Commenter la réponse de asticool03
NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 21 avril 2018 Dernière intervention - 29 avril 2013 à 13:12
0
Utile
Bonjour,

VarPtr permet (en VB6) de récupérer l'adresse d'une variable, en .NET, ce n'est pas possible, car l'adresse d'une variable peut changer (Garbage Collector), mais, as-tu essayer de passer le paramètre en ByRef ?

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry

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.