Problème d'indexage avec un tableau

grand prophete Messages postés 13 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 1 juin 2006 - 31 mai 2006 à 11:46
grand prophete Messages postés 13 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 1 juin 2006 - 1 juin 2006 à 09:25
Bonjour

Voila mon problème. J'ai une carte PCI avec 2 entrée BNC qui me servent à echantilloner des signaux pour les afficher sur des oscillos virtuels. Les valeurs des echantillons se trouvent dans un tableau déclaré de type double. Quand je veux lire sur une seule entrée pas de problème. Mais pour le faire sur les 2.... "0,1" indique qu'on lit sur les voies 0 et 1.
Waveforms est le tableau contenant les echantillons des 2 signaux, 1000 est le nombre d'echantillons. Le reste n'est pas important

Code :
my_niScope.Read("0,1", 1, 1000, Waveforms, Waveform_Info)

Et pour afficher un signal :
U1.PlotY(Waveforms)
'U1 est le nom de l'oscilloscope

Si quelqu'un pouvait m'expliquer ce qu'il y a dans le doc suivant ça m'aiderait beaucoup. Merci

NI-SCOPE returns this data sequentially, so all record 0 waveforms are first. For example, with a channel list of 0,1, you would have the following index values:
index 0 = record 0, channel 0
index x = record 0, channel 1
index 2x = record 1, channel 0
index 3x = record 1, channel 1
Where x = the record length

4 réponses

crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
31 mai 2006 à 13:54
Bonjour,

si je comprend bien, "Where x = the record length" veut dire que x est ton nombre d'échantillions, et "NI-SCOPE returns this data sequentially" veut dire que les résultats retourné sont les uns a la suite des autres.
L'index permet de se positionner à un endroit de ton tableau, donc peut etre, pour afficher ton signal il faut faire ceci :

'enregistrement 0, channel 0
  index 0
  U1.PlotY(Waveforms)

'enregistrement 0, channel 1
  index 1000
  U1.PlotY(Waveforms)

Jean-François
0
grand prophete Messages postés 13 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 1 juin 2006
31 mai 2006 à 14:21
Salut

Si je fais

index 0
U1.PlotY(Waveforms)
Il ne reconnait pas index 0. Il n'existe pas. Waveforms est un tableau à 2 dimensions (si je me trompe pas a mon avis). Je pense qu'il faut preciser lorsque je fais U1.PlotY(Waveforms) qu'on prend les valeurs de la premiere ligne et pour l'autre oscillo U2.PlotY(Waveforms) on prend les valeurs de la seconde ligne. C'est ça que je ne sais pas faire. Enfin je pense que c'est comme ça que ça marche.
0
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
1 juin 2006 à 08:47
A tu éssayé index=0 ou U1.PlotY(Waveforms.index(0))
, essay de regarder dans cette variable index, sinon envoi un code plus long et la doc si tu veut.
A+,Jean-François
0
grand prophete Messages postés 13 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 1 juin 2006
1 juin 2006 à 09:25
En fait j'ai trouvé la solution depuis. La doc induit en erreur puisque waveforms est en fiat un tableau à 1 dimension, dont la première moitiée de valeur correspondent à un signal et la seconde moitiée à l'autre.
0
Rejoignez-nous