In [ ]:
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
import time
import visa

In [ ]:
rm = visa.ResourceManager()

In [ ]:
rm.list_resources()

In [ ]:
osci = rm.open_resource('USB0::0x1AB1::0x0588::DS1K00005888::INSTR')
osci.query('*IDN?')

In [ ]:
# Cambia a modo RAW (lee todo los puntos)
osci.write(':WAV:POIN:MODE RAW')
# Frena la adquisicion
osci.write(':STOP')

In [ ]:
# Si vas a repetir la adquisicion muchas veces sin cambiar la escala
# es util definir una funcion que mida y haga las cuentas
def medir(inst):
    # Escala de voltaje
    voltscale = float(inst.query(":CHAN1:SCAL?"))

    # Offset de voltaje
    voltoffset = float(inst.query(":CHAN1:OFFS?"))

    # Escala de tiempo
    timescale = float(inst.query(":TIM:SCAL?"))

    # Offset de tiempo
    timeoffset = float(inst.query(":TIM:OFFS?"))
    
    # Adquiere los datos del canal 1 y los devuelve en un array de numpy
    data = inst.query_binary_values(':WAV:DATA? CHAN1', datatype='B', container=np.array)
    
    #Divisiones de tiempo
    divisions = 12 * 6
    tiempo = timeoffset + np.linspace(-timescale * divisions / 2 , timescale * divisions /2, num=len(data))

    # Convierte los datos de Unidades digitales a Volts
    data = (125 - data) * voltscale / 25 - voltoffset
    return tiempo, data

In [ ]:
N = 100
for n in range(N): #Tomo N mediciones cada 1s
    tiempo, data = medir(osci) #mido
    plt.figure() 
    plt.plot(tiempo, data);
    plt.xlabel('Tiempo [s]');
    plt.ylabel('Voltaje [V]');
    time.sleep(1) #Espero 1s

In [ ]:
osci.close()