begin process at 2012 02 17 10:30:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Aide compréhension programme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Aide compréhension programme

jeudi 20 mars 2008 à 20:40:50 | Aide compréhension programme

thuglife6938

Bonjour à tous,
Voila une partie d'un programme que j'ai (j'ai enlevé beaucoup de chose pour pas encombrer le forum et garder juste ce qui est utile)
Ce programme trace sur un graph des courbes dont les valeurs sont récupées par une carte d'acquisition de signaux à 2 entrées (ADC.ChannelList(0) et ADC.ChannelList(1))
Comme je débute en vb et que je n'est aucune notion des buffers je vous demande de l'aide car jaimerais bien avoir les valeurs des points que le programme trace dans le graph pour chaque entrée.
Dans le programme je pense que tout est stocké dans hbuf (
plot1.Buffer = hbuf) mais je n'arrive pas a avoir accès aux données.
Si quelqu'un pourrait me guider sa serais le bienvenue.
merci

Const BuffSize = 200      ' size of each buffer in samples
Const SampFreq = 400      ' sample frequency in Hz
Const NumBuffs = 4        ' the number of buffers

Private Sub Adc_BufferDone()
                Dim hbuf As Long
                'graph data and then recycle buffer
                hbuf = ADC
.Queue   'retrieve buffer from Done Queue
                If hbuf = 0 Then Exit Sub
               plot1.Buffer = hbuf              'graph data
   
            ADC.Queue = plot1.Buffer
         'recycle buffer
End Sub

 'This example demonstrates the use of an A/D subsystem to continuously acquire data at a predefined frequency
'and buffer size.  The data is then graphically displayed using the data plotting custom control.

 Private Sub Form_Load()
    Dim i As Integer
    Dim SampleByteWidth As Integer
    Dim hbuf As Long
    Dim NL As String, Prompt As String, Title As String
    Dim BoardName As String
    Dim ech As Long
        ADC.ListSize = 2        'two channels
       
ADC.ChannelList(0) = 0
        ADC.ChannelList(1) = 1
        plot1.Palette(0) = QBColor(9) 'plot in Light blue
       
plot1.Palette(1) = QBColor(13) 'plot in Light magenta
   
'Get Sample Byte Width
  
              If ADC.Resolution <= 16 Then
                 SampleByteWidth = 2 ' 16 bits or less set to 2 bytes wide
                 Else
                SampleByteWidth = 4 ' e.g. 24 bit ADC set to 4 bytes wide; Round up to 32 for math reasons...
                 End If
    'allocate buffers and put on ADC's Ready Queue
  
              For i = 1 To NumBuffs
                 hbuf = CallocBuffer(0, 0, BuffSize * ADC.ListSize, SampleByteWidth)
                ADC.Queue = hbuf
                Next i


 Function CallocBuffer(ByVal WinFlags As Integer, ByVal ExFlags As Integer, ByVal samples As Long, ByVal Samplesize As Integer) As Long
            Dim hbuf As Long
            Dim ecode As Long
             ecode = olDmCallocBuffer(WinFlags, ExFlags, samples, Samplesize, hbuf)
                                If ecode <> OLNOERROR Then
                                               OLMEMTrap "CallocBuffer", ecode
                                Else
                                               CallocBuffer = hbuf
                                End If
End Function

vendredi 21 mars 2008 à 01:02:02 | Re : Aide compréhension programme

jack

Administrateur CodeS-SourceS
Salut
"Plot1", c'est quoi ? un composant de traçage ? lequel ?

Je pense que ta fonction CallocBuffer renvoie l'adresse mémoire où commence le tableau des données et ton "plot1" doit aller récupérer ces données en mémoire, cela permet de ne pas balader des tonnes de données dans la mémoire.
Donc, tu dois pouvoir récupérer ce tableau grace à l'API "RtlMoveMemory" communément rebaptisée "CopyMemory"
A mettre dans la partie Déclarations de ta forme :
   Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Pour ce faire, tu dois connaitre la taille du tableau, c'est à dire le nombre d'échantillons "xxx" à récupérer :
Tu récupères l'adresse fournie :  lAdresse = hbuf
   Dim monTableau(0 To xxx) As Long
puis demander la recopie :
   CopyMemory monTableau(0), ByVal lAdresse, 4
(le 4 est le nombre d'octets que contient un Long)

A toi de voir comment est organisé le tableau ensuite : Voie 0, Voie 1, Voie 0, Voie 1 ... ou d'abord toutes les données de Voie 0 puis toutes celles de Voie 1 ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
vendredi 21 mars 2008 à 01:07:15 | Re : Aide compréhension programme

jack

Administrateur CodeS-SourceS
PS : Attention : la manipulation de tableau et d'adresse mémoire est risqué.
Prend soin de bien sauvegarder ton travail avant de lancer des essais !!
vendredi 21 mars 2008 à 11:00:43 | Re : Aide compréhension programme

thuglife6938

Merci pour ton aide

le plot1 est en faite une pictureBox.
Dans le programme il y a des lignes de code qui affiche un cadrillage avec en Ymin = -2047 et ymax =2048
Y a t'il un moyen de voir les valeurs en temps réel en passant par une textbox pour voir la valeur des variables contenu dans
se fameux hbuf au lieu de les extraire?
Si je fais Text1.text=hbuf il me sort des chiffres du genre 198687340

vendredi 21 mars 2008 à 14:41:34 | Re : Aide compréhension programme

jack

Administrateur CodeS-SourceS
Commence par lire ce que je t'ai écris.
Pour "voir" les valeurs, il faut qu'elles soient stockées et accessibles quelque part, dans un tableau par exemple, comme précisé dans ma réponse.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)


Cette discussion est classée dans : buffer, programme, long, adc, hbuf


Répondre à ce message

Sujets en rapport avec ce message

Excel : ActiveCell.Font [ par mdee ] Bonjour,Quelqu'un peut-il m'expliquer comment fonction la commande :ActiveCell.Font.ColoretActiveCell.Font.BackgroundVoici mon code si celà peut vous Help! Musique! [ par Max2034 ] Bonjour,Voici mon problème:J'ai mit de la musique dans mon programme et quand je quitte mon programme la musique continue, je dois fermer VB pour qu'e Titre trop long :) [ par Reality Djinn ] Voilà je dois rentrer des données dans une fenêtre d'un autre programme. Ces données sont simulés par un autre programme indépendant que je ne peux pa Déclaration sous VB.NET - Galère buffer !! [ par COlive ] Voila, j'ai la fonction suivante : Public Sub Connect()V_Busy = True< conversion nom de fichier court en nom de fichier long [ par dpujol ] Bonjour à tous,je recherche une fonction qui permet en vb de convertir un nom de fichier court (ex: copied~1.exe) en nom de fichier long (copie de cal [Aide] Newbie, erreur programme [ par Calcium88 ] Salut, Bon voila je suis un noob en programmation seulement ces dernier temps j'ai besoin d'éffectuer une action répétitive. J'ai donc pris la décisi Explorateur Windows [ par e040098k ] Bonjour, Je suis sous access, j'ai une base de donnée client et je souhaiterais pouvoir sur le clic d'un bouton ouvrir le dossier d'un client donné. conversion long filename vers short filename [ par yyyx ] Bonjour,Bon, je sais que la question a été posée pas mal de fois, je cherche à convertir un nom de fichier long vers un nom de fichier court.Pas de pr *** téléchargement *** [ par browser64 ] Bonjour, Sur le code "voir ci-dessous" je souhaiterai que l'image que je télécharge "http://www.Mon entreprise/logos/Pictogramme.jpg" se mette dans le ShellExecute et ADO [ par JeffC1977 ] J'utilise VB6 ADO et ACCESS dans mon programme Salut... je veux utiliser un ShellExecute mais ca fonctione pas.. et je comrpends vraiment pas pourqu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,730 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales