# -*-coding:utf-8-*-
# Ce fichiers offre divers scripts et fonctions pour effectuer l’acquisition d’un signal sur la voie EA0, son filtrage,
# la génération du signal filtré sur la sortie SA1 de l’interface Sysam PCI 5, ainsi que la sauvegarde sous forme d'un fichier texte d'un tableau

## LES IMPORTS À EFFFECTUER AVANT TOUTE CHOSE
import pycanum.main as pycan
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt

## Acquisition d'un signal sur la voie EA0
# Ce script fait l'acquisition du signal lu sur la voie EA0 de la carte SYSAM-SP5
# Les dates d'échantillonnage sont stockées dans le tableau t0 de type numpy.ndarray
# Les tensions acquises sont stockées dans le tableau u0 de type numpy.ndarray, de même dimension que t0

# Il faut compléter ci-dessous DEUX choses : la fréquence d'échantillonnage fe, et la durée totale d'acquisition T
fe =  # Fréquence d'échantillonnage en Hz (max fe =10 MHz )
te = 1.0/fe # NE PAS MODIFIER ! Période d'échantillonnage. Se calcule à partir de fe

T = # Durée totale de l'acquisition (en secondes)
N = int(T / te) # NE PAS MODIFIER !  Nombre d’échantillons (Max 130000 environ ). Le script plante un peu plus loin s'il y a trop d'échantillons.

# NE PLUS RIEN MODIFIER AU DELA DE CETTE LIGNE DANS CETTE CELLULE

# Ouverture de l’interface pour Sysam SP5 (mettre PCI pour les cartes PCI)
can = pycan.Sysam("SP5")

# configuration de l’entree 0 avec un calibre 10.0 V
can.config_entrees ([0],[10.0])
# Configuration de l’échantillonnage. La periode d’échantillonnage est donnee en microsecondes
can.config_echantillon(te*10**6,N)
# Acquisition
can.acquerir()
t0=can.temps()[0]
u0=can.entrees()[0]
can.fermer()


## Filtrage : À VOUS D'ÉCRIRE VOS FONCTIONS DE FILTRAGE
from math import pi

def passebas(u,fc,Te):
    """ u signal à filtrer, fc fréquence de coupure, Te période d'échantillonnage"""
    # À Compléter

## Émission d'un signal sur la voie SA1
# Ce script émet le signal stocké dans un tableau sur la voie de sortie SA1 de la carte SYSAM-SP5
# Le signal est émis périodiquement sur la sortie SA1.
# Pour arrêter la génération du signal il suffit d'appuyer sur ENTREE dans l'interpréteur une fois que le message "Appuyer sur une touche pour arrêter l'émission du signal" est apparu

# Il faut compléter juste dessous TROIS choses : la fréquence d'échantillonnage fe, la durée totale d'acquisition T et le nom du tableau qui stocke le signal à générer.
fe =  # Fréquence d'échantillonnage en Hz (max fe =10 MHz )
te = 1.0/fe # NE PAS MODIFIER ! Période d'échantillonnage. Se calcule à partir de fe

T = # Durée totale de l'acquisition (en secondes)
N = int(T / te) # NE PAS MODIFIER !  Nombre d’échantillons (Max 130000 environ ). Le script plante un peu plus loin s'il y a trop d'échantillons.

signal =  # Mettre à DROITE du signal le nom du tableau qui stocke les données à générer sur la voie SA1.

# NE PLUS RIEN MODIFIER AU DELA DE CETTE LIGNE DANS CETTE CELLULE

# Ouverture de l’interface pour Sysam SP5 (mettre PCI pour les cartes PCI)
can = pycan.Sysam("SP5")

# configuration de l’entree 0 avec un calibre 10.0 V
can.config_entrees ([0],[10.0])
# Configuration de l’echantillonnage. La periode d’echantillonnage est donnee en microsecondes
can.config_echantillon(te*10**6,N)
# Émission du signal
can.config_sortie(1,te*10**6, signal,-1)
can.declencher_sorties(1,0)
foo= input("Appuyer sur une touche pour arrêter l'émission du signal") # Astuce pour ne pas sortir tout de suite.
can.fermer()
