Ich bin Experimentalphysiker und bin ein großer Fan von Python .
Ich finde es großartig für die Datenanalyse und das Scripting, und ich benutze es auch für die Anbindung von Laborinstrumenten (Netzwerkanalysatoren, Oszilloskopen, Signalanalysatoren und Signalgeneratoren ...). Ich denke, Python wäre ein ernstzunehmender Konkurrent für MATLAB in meinem Bereich, wenn es eine schöne Bibliothek mit Instrumententreibern geben würde.
Bisher habe ich mehrere Strategien verwendet, um sie direkt aus meiner IPython -Sitzung zu beziehen:
Die Bibliothek pyVisa zu benutzen, was nett ist, funktioniert für die große Mehrheit der Geräte, aber ein wenig low-level, und erfordert eine zusätzliche Ebene der Programmierung, um dem Benutzer nützliche Funktionen zugänglich zu machen.
Ich konnte kürzlich IVI-COM- oder .NET-Treiber mit pythondotnet (nicht IronPython ) verwenden, Was fehlt NumPy / Matplotlib ... Bibliotheken). Diese Lösung ist offensichtlich die befriedigendste, da die IVI-Treiber bereits ziemlich hoch sind, und sie werden normalerweise von den Verkäufern bereitgestellt, und Instrumente von verschiedenen Anbietern sind dann austauschbar.
Meine erste Frage ist eher technischer Natur:
Ich habe überall gelesen, dass COM -Objekte in das .NET-Framework integriert sind und Sie COM-Objekte direkt in .NET verwenden können. In meinem Fall kann ich COM-Objekte verwenden, indem ich das comtypes-Modul importiere (siehe Ссылка ) und dotnet
mit clr
von pythondotnet, aber ich verstehe einfach nicht, wie man auf diese COM-Objekte mit dem clr
-Modul zugreifen kann. Kann jemand die Verbindung zwischen COM und .NET erklären?
Außerdem bin ich immer ein wenig verwirrt, woher weiß ich, wenn ich eine DLL-Datei habe, ob diese ein .NET-Modul enthält oder nicht, und ob ich es mit der .NET-Version 4.0 öffnen kann (I bin ein absoluter Anfänger in diesen Framework-Fragen und ein Link zur richtigen Dokumentation wäre völlig in Ordnung)?
Die zweite Frage ist allgemeiner: Gibt es nicht ein Modul, das bereits eine größere Anzahl von Treibern für unterschiedliche Instrumente in einer einheitlichen Art und Weise erfassen würde? Es scheint mir, als müssten wir Tausende von Menschen an den gleichen Themen arbeiten.
Ich bin kürzlich auf das Modul lantz Ссылка gestoßen. Leider ist dies in Python 3.0, während ich immer noch Python 2.7 (mit der Pythonxy-Distribution für Windows) benutze. Außerdem fürchte ich mich, dass dieses Projekt nicht versucht, die IVI-Empfehlungen umzusetzen, was ein guter Ausgangspunkt wäre.
Jeder Kommentar oder Link zu einer relevanten Informationsquelle wäre mehr als willkommen.
Ich verwende COM-Typen in Standard-Python (nicht IronPython oder pythondotnet), um IVI-Treiber täglich zu steuern. Ich habe noch nie zusätzliche .NET-Bindungen benötigt. Normalerweise mache ich Folgendes:
%Vor% Ich kann nicht mit Ihrer ersten Frage sprechen, aber ich habe an einer Python-Interpretation des IVI-Standards gearbeitet: Ссылка . Leider ist es auch Python 3, aber es ist reines Python (kein Import von externen DLL-Dateien, COM- oder .NET-Objekten), also ist es vielleicht nicht genau das, wonach Sie suchen. Der Vorteil ist jedoch, dass es plattformübergreifend ist und sowohl in Windows als auch in Linux funktionieren sollte.
Python IVI (und die Geräteschnittstellen python-vxi11 und python-usbtmc) wurde aktualisiert, um sowohl Python 2 als auch Python 3 nahtlos zu unterstützen. Es ist immer noch Python, daher gibt es keine externen binären Abhängigkeiten (DLL-Dateien, COM oder. NET-Objekte) und es funktioniert unter Windows, Linux und Mac OS X. Es wurde sogar auf einem Raspberry Pi ausgeführt. Außerdem kann Python IVI mit PyVISA auf Hardware von National Instruments zugreifen.
Ich nenne dies eine Interpretation und keine Implementierung, weil sie der Spezifikation nicht einfach folgen kann, nur weil es Python ist. Ich habe versucht, der Spezifikation so genau wie möglich zu folgen, aber ich habe auch versucht, sie so pythisch wie möglich zu halten. Es ist jedoch weniger als ein Jahr alt, und ich bin derzeit der einzige, der daran arbeitet, mit meinem mageren Sortiment an Instrumenten. Ich würde mehr als glücklich sein, Beiträge zu akzeptieren, wenn es Leute gibt, die helfen wollen.
Standardmäßig unterstützt Python-ivi das VXI-11-Protokoll über LAN (kompatibel mit den meisten LXI-Instrumenten) über das Python-vxi11-Modul (python-vxi11 ist ebenfalls reines Python und somit plattformübergreifend kompatibel) ), serielle Geräteunterstützung mit pySerial (plattformübergreifend) und GPIB-Unterstützung mit linux-gpib (nur Linux). Ich plane auch, PyVISA so zu verpacken, dass Python-ivi alle von PyVISA unterstützten Schnittstellen nutzen kann.
Eine andere Möglichkeit ist die Verwendung von TekVisa von Tektronix.
%Vor%