Utiliser USBTMC avec un oscilloscope numérique

Bonjour,
je souhaiterais récupérer les données d’un oscilloscope numérique Tektronix TDS2002B sur mon portable sous Debian. Pour cela j’ai compilé et chargé le module usbtmc comme dit sur la page suivante:

home.agilent.com/upload/cmc_ … usbtmc.htm

ça a l’air de fonctionner, si je tape:

# cat /dev/usbtmc0 Minor Number Manufacturer Product Serial Number 001 Tektronix, Inc. Tektronix TDS2002B C100135

L’appareil est donc correctement reconnu mais comment je fais pour communiquer avec maintenant?? En fait j’aimerai récupérer les points de mesures sur un tableur, comment je peux faire??

Merci de votre aide

Je viens de prendre 2mn pour lire la doc que tu as passée en lien et j’ai trouvé ta réponse.
Ca se passe avec des ioctl’s, va falloir coder un peu. A moins qu’agilent passe des binaires mais c’est pas trop le genre de la maison.

Sinon il n’y a plus de port GPIB sur le matos agilent ?
C’est peut-être plus facile en passant par là.

Ok merci! Mais je ne sais absolument pas ce que sont des ioctl’s…

C’est quoi un port GPIB? Agilent et tektronix, c’est pareil?

ioctl = I/O control, en gros ça sert à parler avec des périphériques d’une manière plus puissante qu’un read ou un write
Si je prends un exemple issu de la doc que tu passes en lien

[code]struct usbtmc_attribute attr;

myfile=open("/dev/usbtmc1",O_RDWR);
attr.attribute=USBTMC_ATTRIB_READ_MODE;
attr.value=USBTMC_ATTRIB_VAL_READ;

ioctl(myfile,USBTMC_IOCTL_SET_ATTRIBUTE,&attr);[/code]
attr est une variable de type usbtmc_attribute (dont le type est donné dans la doc) renfermant un type de message que tu peux envoyer à ton oscillo.
Les deux lignes en balise [i] fixent certains paramètres de attr.
Et la dernière ligne envoie tout ça à l’appareil.

Si tu ne codes pas du tout tu risques de galérer un peu.

[quote=“totola”]
C’est quoi un port GPIB? Agilent et tektronix, c’est pareil?[/quote]
GPIB : General Purpose Interface Bus
C’est un bus permettant de causer à de nombreux appareils de mesure sur la même nappe. Son utilisation est très simple du point de vue logiciel.
Je ne sais pas si agilent et tektronix sont copain/copine j’ai juste vu que ton lien pointais chez agilent.

Ok! Merci de ces précisions!

Bon, autant prévenir tout de suite, je ne suis pas un grand codeur… Tout juste quelques scripts bash basiques…

Mais voilà, j’aimerais bien quand même pouvoir utiliser cet appareil sur mon portable… Alors penses-tu que ce soit trop compliqué pour un néophyte de récupérer les mesures de cette façon??

Je vais regarder un peu du côté de ces I/O ctl’s, voir ce qu’on trouve sur le net!

En tout cas merci pour cette piste!

A+

Ok, j’avais pas bien lu ta réponse… Mais tout est dans le “un peu” !!

Ca me dérange pas de passer un peu de temps et de galérer sur un truc qui m’intéresse et qui peut me permettre d’apprendre des trucs… Mais si c’est vraiment trop bourrin, il vaut eut être mieux que je déclare forfait?

Vas-y, n’hésite pas. Tu tournes déjà sous Debian alors tu sais bien que tout ce que tu risques c’est d’apprendre quelque chose.
Si tu rencontres de grosses difficultés dans le code tu peux poster un coup dans la rubrique programmation.

Oui… Mais pour l’instant j’ai pas encore trop compris le principe…

Il faut que je fasse quoi exactement?? Un script? Un programme? Avec le genre de commandes que tu m’as indiquées plus haut? Je suis un peu paumé, là… Il me faudrait un exemple que je puisse adapter, mais là je ne vois pas trop…

Tu peux faire un petit programme en C, tu as un exemple à la fin de la doc.

Bon, suite à la discussion avec l’auteur d’un article à ce sujet dans le dernier GNU/Linux magazine (février 2010)
voici le script qui devrait récupérer les infos de l’appareil et les coller dans un fichier “t”.

cat /dev/usbtmc0 echo "*IDN?" > /dev/usbtmc1 cat < /dev/usbtmc1 echo "DATA:ENC ASC" > /dev/usbtmc1 echo "DATA:SOURCE CH2" > /dev/usbtmc1 echo "CURVE?" > /dev/usbtmc1 echo 1 cat < /dev/usbtmc1 >> t

Lorsque je le lance, j’obtiens un fichier incompréhensible:

[quote]
#42500ÈÈÈÈÈÈÈÈÈÈÇÈÈÈÈÈÈÈÇÈÈÇÈÈÈÈÈÇÈÈÈÈÈÈÇÈÈÈÈÈÈÈÈÉÈÈÈÈÈÈÇÈÈÈÇÈÈÈÈÇÈÈÈÉÇÈÇÈÈÇÈÈÈÈÇÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÇÈÈÈÈÈÇÈÈÈÈ[/quote]

Problème d’encodage?

ok, il faut marquer ASCII en entier!

voila le script complet:

cat /dev/usbtmc0 echo "*IDN?" > /dev/usbtmc1 cat < /dev/usbtmc1 echo "DATA:ENC ASCII" > /dev/usbtmc1 echo "DATA:SOURCE CH1" > /dev/usbtmc1 echo "CURVE?" > /dev/usbtmc1 echo 1 cat < /dev/usbtmc1 >> t

ben il est compatible GPIB ton bouzin, c’est cool

Ah ok, c’est ça GPIB…

Bon, ce que je cherche maintenant c’est à convertir les positions des pixels en tension et en temps en fonction des calibres… C’est pas gagné…

Apparemment il doit y avoir des infos importantes là-dessus:

mathworks.com/matlabcentral/ … cilloscope

mais il s’agit d’un fichier .mdd?? C’est quoi ça? Comment je l’ouvre?

Merci

Bon, allez, ce sujet est plus ou moins résolu… En fait je continue avec d’autres questions sur le forum “programmation”, c’est plus adapté!

:wink: