I'm trying to getVolatege for 4ch 200hz. Input voltage is 10hz sin curve but from received 5-10% duplicated value from getVoltage()
It's written 1000samples/s (4ch) so 250hz sampling should work.
Thanks you for your advice to fix this not enough sampling rate problem.
Best!
Code: Select all
#!/usr/bin/python3
import logging
import sys
import time
from Phidget22.Devices.Log import *
from Phidget22.Devices.VoltageOutput import *
from Phidget22.Devices.VoltageInput import *
from Phidget22.LogLevel import *
from Phidget22.Phidget import *
from Phidget22.PhidgetException import *
class getVoltage():
def __init__(self, t):
self_dot_ch = []
for i in range(4):
vinch = VoltageInput()
vinch.setChannel(i)
vinch.openWaitForAttachment(5000)
vinch.setDataInterval(1)
if vinch.getAttached():
self_dot_ch.append(vinch)
self.start_time = time.process_time()
self.prev_time = 0
self.t = t
def start(self):
while True:
vs = []
for i, c in self_dot_ch:
v = c.getVoltage()
vs[i] = v
t = (time.process_time() - self.start_time)*1000
logging.debug(f'v, {t:.2f}, {t-prev_time:.2f}, {vs}')
self.prev_time = t
time.sleep(self.t)
if __name__ == '__main__':
hz = 200
try:
t = getVoltage(1/hz)
t.start()
except PhidgetException as err:
logging.debug(f'PhidgetException: {err}')
sys.exit(1)
except KeyboardInterrupt:
pass