slogic32u3-python-libsigrok-stream.py
Ejemplo de Python que utiliza libsigrok-python para abrir el dispositivo, configurar el muestreo y recuperar paquetes de datos.
Este código requiere la instalación de libsigrok y sus enlaces de Python. Ilustra la apertura de la conexión USB, la configuración de la frecuencia de muestreo (aquí 800 MS/s para 8 canales) y el bucle de recepción de datos. El procesamiento de paquetes sin procesar requiere un manejo específico del formato binario.
slogic32u3-python-libsigrok-stream.py
import libsigrok
import numpy as np
import time
def capture_logic():
# Initialiser le contexte libsigrok
ctx = libsigrok.Context()
# Obtenir la liste des pilotes et des appareils
drivers = ctx.driver_list()
# Recherche du pilote SLogic (nom à vérifier selon la version du pilote)
driver = next((d for d in drivers if 'slogic' in d.name.lower()), None)
if not driver:
raise Exception("Pilote SLogic non trouvé")
# Obtenir la liste des appareils pour ce pilote
devices = driver.scan()
if not devices:
raise Exception("Aucun appareil SLogic détecté")
dev = devices[0]
dev.open()
# Configurer les canaux (ex: activer les 8 premiers canaux)
# Note : L'API libsigrok-python peut varier, ceci est une structure type
dev.config_set(libsigrok.CONF_SAMPLE_RATE, 800000000) # 800 MS/s pour 8 canaux
dev.config_set(libsigrok.CONF_NUM_LOGICAL_CHANNELS, 8)
# Démarrer l'acquisition
dev.start()
print("Acquisition en cours...")
data_buffer = []
start_time = time.time()
try:
while time.time() - start_time < 1.0: # 1 seconde
packet = dev.receive()
if packet:
data_buffer.append(packet)
finally:
dev.stop()
dev.close()
# Traitement basique (exemple : compter les transitions sur le canal 0)
# Attention : Le format des données dépend de la configuration (bits/packed)
print(f"Packets reçus : {len(data_buffer)}")
if __name__ == "__main__":
capture_logic()