forked from awendt/pyrelacs
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
from math import sin
|
|
import time
|
|
from PyQt6.QtGui import QAction
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from IPython import embed
|
|
from pyrelacs.dataio.circbuffer import CircBuffer
|
|
from pyrelacs.util.logging import config_logging
|
|
|
|
|
|
log = config_logging()
|
|
|
|
|
|
# stopbutton: QAction
|
|
class SinProducer:
|
|
def __init__(
|
|
self,
|
|
buffer: CircBuffer,
|
|
) -> None:
|
|
self.buffer = buffer
|
|
|
|
# self.stopbutton = stopbutton
|
|
|
|
def produce_sin(
|
|
self,
|
|
*args,
|
|
**kwargs,
|
|
) -> None:
|
|
AMPLITUDE = 2
|
|
FREQUENCY = 10
|
|
|
|
log.debug("producing Sin")
|
|
start_time = time.time()
|
|
t = 0
|
|
while time.time() - start_time < 2:
|
|
|
|
s = AMPLITUDE * np.sin(2 * np.pi * FREQUENCY * t)
|
|
|
|
self.buffer.append(s)
|
|
t += 1 / self.buffer.samplerate
|
|
time.sleep(1 / self.buffer.samplerate)
|
|
|
|
data = self.buffer.get_all()
|
|
log.debug(data.shape[0])
|
|
log.debug(data.shape[0] / self.buffer.samplerate)
|
|
# plt.plot(np.arange(data.size) / self.buffer.samplerate, data)
|
|
# plt.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
buf = CircBuffer(1_000_000, 1, samplerate=10000)
|
|
pro_sin = SinProducer(buf)
|
|
pro_sin.produce_sin()
|