Cours:Oscillogbf : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(gbf DG822)
(gbf DG822)
Ligne 145 : Ligne 145 :
  
 
Le fichier suivant contient l'ensemble des commandes pour le Rigol DG822 : [[Media:Dg822_programming.pdf|dg822.pdf]]
 
Le fichier suivant contient l'ensemble des commandes pour le Rigol DG822 : [[Media:Dg822_programming.pdf|dg822.pdf]]
 +
 +
Voici quelques commandes dont vous pourrez avoir besoin :
 +
 +
{| class="wikitable"
 +
|-
 +
! commande !! description !! exemple
 +
|-
 +
| :OUTPx ON/1/OFF/0 || activer la sortie || gbf.write(":OUTP1 ON")
 +
|-
 +
| Texte de la cellule || Texte de la cellule || Texte de la cellule
 +
|-
 +
| Texte de la cellule || Texte de la cellule || Texte de la cellule
 +
|}
  
 
=liens=
 
=liens=

Version du 5 février 2025 à 11:26

python et Qt

Mise en place avec QtCreator

  • créer un nouveau projet :
    • Application (Qt for Python) Window UI
    • pas d'importance pour PySide2 ou PySide6, on va remplacer après
    • choisir la version Python 3.x.x sans Virtual Environnement
  • ouvrir le fichier widget.py
  • remplacer par :
import sys
# communication avec le matériel de mesure
import pyvisa
# modules QT que l'on souhaite utiliser
# à compléter en fonction des besoins
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtWidgets import QApplication, QWidget, QFileDialog, QPushButton, QDial, QAbstractSlider
from PySide2.QtUiTools import QUiLoader


if __name__ == "__main__":
    # chargement du fichier form.ui
    # qui correspond à l'interface graphique
    loader = QUiLoader()
    app = QtWidgets.QApplication(sys.argv)
    window = loader.load("form.ui", None)
    window.show()

    # initialisation de la librairie pyVisa
    materiel=pyvisa.ResourceManager()
    # print(materiel.list_resources())

    # exemple pour se connecter sur un appareil par IP
    # gbf=materiel.open_resource('TCPIP::192.168.0.236::INSTR')

    sys.exit(app.exec_())

Signal/Slot avec PySide2

  • dans un 1er temps il faut "récupérer" le widget graphique dans le code python :
window.leBouton = window.findChild(QPushButton, "monWidgetBouton")
  • ensuite on connect le signal du widget sur la fonction que l'on souhaite :
window.leBouton.clicked.connect(maFonction)
  • Ce qui donne :
import sys
# communication avec le matériel de mesure
import pyvisa
# modules QT que l'on souhaite utiliser
# à compléter en fonction des besoins
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtWidgets import QApplication, QWidget, QFileDialog, QPushButton, QDial, QAbstractSlider
from PySide2.QtUiTools import QUiLoader

# fonction qui sera exécutée lors d'un clic
def maFonction():
    print("clic !")

if __name__ == "__main__":
    # chargement du fichier form.ui
    # qui correspond à l'interface graphique
    loader = QUiLoader()
    app = QtWidgets.QApplication(sys.argv)
    window = loader.load("form.ui", None)
    window.show()

    # associer une action à un QPushButton
    window.leBouton = window.findChild(QPushButton, "monWidgetBouton")
    window.leBouton.clicked.connect(maFonction)

    # initialisation de la librairie pyVisa
    materiel=pyvisa.ResourceManager()
    # print(materiel.list_resources())

    # exemple pour se connecter sur un appareil par IP
    # gbf=materiel.open_resource('TCPIP::192.168.0.236::INSTR')

    sys.exit(app.exec_())

exemple pour différents widgets

  • QPushButton
    • window.leBouton = window.findChild(QPushButton, "monWidgetBouton")
    • window.leBouton.clicked.connect(maFonction)
  • QDial/QScrollBar/QSlider (hérite de QAbstractSlider)
    • window.leSlider = window.findChild(QAbstractSlider, "monWidgetDial")
    • window.leSlider.valueChanged.connect(getValue)
    • fonction :
def getValue(value):
    print(f"position du slider : {value}")

dialoguer avec les appareils

initialisation

  • il faut initialiser la librairie
    materiel=pyvisa.ResourceManager()
    
  • se connecter sur un équipement
    gbf=materiel.open_resource('TCPIP::192.168.0.236::INSTR')
    
  • on peut ensuite :
    • envoyer des commandes à l'équipement :
      gbf.write(":OUTP1 ON")
      
    • demander une valeur à l'équipement :
      gbf.query("*IDN?")
      
  • Exemple :
    materiel=pyvisa.ResourceManager()
    gbf     =materiel.open_resource('TCPIP::192.168.0.236::INSTR')
    oscillo =materiel.open_resource('TCPIP::192.168.0.73::INSTR')
    print(gbf.query("*IDN?"))
    print(oscillo.query("*IDN?"))
    

commandes génériques

Les commandes suivantes devraient être valables pour tous les équipements :

commande paramètre description
*CLS clear : initialise la communication
*IDN? retourne l'identifiant de l'appareil
*OPC? operation complete : indique si l'opération précédente est terminée (1) ou non (0)

oscillo DS1104Z

Media:MSO_DS1000Z_ProgrammingGuide_EN.pdf

gbf DG822

Le fichier suivant contient l'ensemble des commandes pour le Rigol DG822 : dg822.pdf

Voici quelques commandes dont vous pourrez avoir besoin :

commande description exemple
 :OUTPx ON/1/OFF/0 activer la sortie gbf.write(":OUTP1 ON")
Texte de la cellule Texte de la cellule Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule

liens

Tests

banc de mesure  : 1 scope DS1074 + 1 gbf DG822


le script (basique ...) qui gère le tout :


#!/bin/bash

IPSCOPE=192.168.1.111

freq=100

while true; do
      # 1 sinus ampl=5V, offset nul, dephasage nul
      ./dg822_write.py ":sour1:appl:harm $freq,5,0,0"
      sleep 2
      # demande un AUTo mode au scope
      lxi scpi -a $IPSCOPE "AUT"
      sleep 5
      let "freq += 100"
      done

les commandes python :


#!/usr/bin/python3

import sys
import pyvisa
rm=pyvisa.ResourceManager()
inst=rm.open_resource('USB0::6833::1603::DG8A231301537::0::INSTR')

print("commande = ",sys.argv[1])
commande=sys.argv[1]

inst.write(commande)