Je suis un physicien expérimental et je suis un grand enthousiaste de python . p>
Je trouve cela idéal pour l'analyse et les scripts de données, et je l'utilise également pour interfacer des instruments de laboratoire (analyseur de réseau, étanchéité, analyseurs de signaux et générateurs de signaux ...). Je pense que Python serait un concurrent très sérieux pour MATLAB dans mon domaine s'il existerait une belle Bibliothèque incorporant des pilotes d'instruments. P>
Jusqu'à présent, j'ai utilisé plusieurs stratégies pour les interfacer directement de mon ipython Session: p>
Utilisation de la bibliothèque Pyvisa, qui est agréable, qui est agréable, qui travaille pour la grande majorité des appareils, mais un peu de faible niveau, et nécessite une couche supplémentaire de programmation pour exposer des fonctions utiles à l'utilisateur. P> li>
J'ai récemment utilisé des pilotes IVI-COM ou .NET à l'aide de Pythondotnet (pas Ironpython , qui manque NUMPY / Matplotlib ... Bibliothèques). Cette solution est évidemment la plus satisfaisante, car les pilotes IVI sont déjà assez élevés, et ils sont généralement fournis par les fournisseurs et les instruments de différents fournisseurs sont ensuite interchangeables. P> LI> ul>
Ma première question est plutôt technique:
J'ai lu partout que Les objets COM sont intégrés à la framework .NET et que vous pouvez utiliser COM Objets DIRETTY IN .NET. Dans mon cas, je suis capable d'utiliser des objets COM en important le module COMTELES (voir http://code.activestate.com/recipes/578089-Utilisation-iviscope-instrument-driver-with-pytHon/ ) et En outre, je suis toujours un peu confus, comment puis-je savoir, lorsque j'ai un fichier DLL, si cela contient un module .NET ou non, et si je peux l'ouvrir avec la version 4.0 de .NET (i Suis un débutant complet dans ces problèmes-cadres et un lien vers la documentation appropriée serait parfaitement bien)? P>
La deuxième question est, plus généralement, il n'y a pas de module qui rassemblerait déjà un plus grand nombre de pilotes pour différents instruments de manière unifiée? Il me semble que nous devons être des milliers de personnes travaillant sur les mêmes problèmes. P>
J'ai récemment chuté sur le module lantz http://lantz.glugcen.dc.uba.ar / .
Malheureusement, c'est dans Python 3.0, tandis que j'utilise toujours Python 2.7 (avec la distribution Pythonxy pour Windows). De plus, je suis un peu peur du fait que ce projet n'essaie pas de mettre en œuvre les recommandations IVI, ce qui serait un bon point de départ. P>
Tout commentaire ou lien vers une source d'informations pertinente serait plus que le bienvenu. P> dotnet code> avec < Code> CLR code> de PythondotNet, mais je ne comprends tout simplement pas comment accéder à ces objets COM avec le module
CLR code>. Quelqu'un peut-il expliquer le lien entre com et .net? P>
3 Réponses :
Je ne peux pas parler à la première question de la vôtre, mais je travaille sur une interprétation python de la norme IVI ici: https://github.com/python-ivi/python-ivi . Python IVI (et les interfaces d'instrument Python-VXI11 et Python-USBTMC) ont été mis à jour pour supporter de manière transparente Python 2 et Python 3. Il est toujours pur python, il n'y a donc pas de dépendances binaires externes (fichiers DLL, com ou. OBJETS NET) et fonctionnent sur Windows, Linux et Mac OS X. Il a même été exécuté sur un PI de framboise . De plus, Python IVI peut utiliser PYVISA pour accéder à Instruments nationaux matériel compatible. P>
J'appelle cela une interprétation et non une implémentation, car elle ne peut pas suivre la spécification à la lettre simplement parce que c'est python. J'ai essayé de suivre la spécification aussi étroite que possible, mais j'ai également essayé de le garder aussi pythonique que possible. Il est de moins d'un an, cependant, et je suis actuellement le seul qui y travaille, avec ma maigre assortiment d'instruments. Je serais plus qu'heureux d'accepter les contributions, s'il y a des gens qui veulent aider. P>
Hors de la boîte, Python-IVI prend en charge le protocole VXI-11 sur le réseau local (compatible, je crois, avec la plupart des instruments LXI) via le module Python-VXI11 (Python-VXI11 est également périque python et donc compatible avec une plate-forme croisée. ), Support d'instrument série avec support pysérien (plate-forme inter-plate-forme) et GPIB avec Linux-GPIB (Linux uniquement). Je prévois également d'envelopper PYVISA afin que Python-IVI puisse utiliser toutes les interfaces supportées par PYVISA. P> Malheureusement, c'est aussi Python 3, mais c'est pur python (aucune importation de fichiers DLL externes, objets COM ou .NET), il peut donc ne pas être exactement ce que vous recherchez. Cependant, l'avantage est que cela signifie qu'il est multiplate-forme et devrait fonctionner à la fois Windows et Linux. del> p>
J'utilise les types COM dans standard python (pas IronPython ou PythondotNet) pour contrôler les pilotes IVI sur une base quotidienne. Je n'ai jamais eu besoin de reliures .NET supplémentaires. Je fais habituellement des choses comme ceci:
"Vtexdmm" est-il pour un instrument ou un instrument particulier? C'est-à-dire que "DMM" signifie "multimètre numérique"? (Peut-être même Virtual Texas Instruments Multimètre numérique ??) a Multimètre de tablette A> des instruments du Texas?
Ortex "pour Tektronix?
VTEXDMM est le nom de la classe COM du pilote de l'instrument - dans ce cas, le pilote multimédiote numérique des instruments VTI. Ce devrait être ce que l'on appelle le pilote particulier de votre instrument.
Une autre option consiste à utiliser Tekvisa de Tektronix.
IronPython est en faveur de Numpy / Scipy: enthousiasme.com/repo/.iron
@Samuel: comme l'un des auteurs de Lantz, je peux vous dire que soutenir IVI est sur la feuille de route. Le plan consiste à fournir des classes de mixin mettant en œuvre des ensembles de commandes pouvant être combinées. Ce qui n'arrivera probablement pas consiste à utiliser la même API. Les conventions IVI et Python Naming sont incompatibles. Mais nous sommes ouverts à la discussion, n'hésitez pas à rejoindre la liste de diffusion ou à ouvrir un problème pour voir les alternatives.
Vous ne voudrez peut-être pas regarder esclave une couche d'abstraction que j'ai créée. Nous l'utilisons pour contrôler notre équipement de laboratoire.