20
20
import logging
21
21
logger = logging .getLogger ("arduino" )
22
22
23
+ def interalFun (t ):
24
+ return (math .sin (2 * math .pi * 100 * t ))* 128 , (math .cos (2 * math .pi * 50 * t ))* 64
25
+
26
+ def idealDelayForInteral ():
27
+ # In one second, I need to generate 5k samples. Usually most computer will
28
+ # generate is way to fast; so I need to add delay. Some computers are slow
29
+ # so this number can not be fixed.
30
+ t0 = time .time ()
31
+ data = []
32
+ while len (data ) < 5e3 :
33
+ t = time .time () - t0
34
+ data .append (interalFun (t ))
35
+ return max (0 , (1 - t )/ 5e3 )
36
+
23
37
class SerialReader ():
24
38
"""docstring for SerialReader"""
25
39
def __init__ (self , port , baud , debug = False ):
@@ -31,6 +45,8 @@ def __init__(self, port, baud, debug = False):
31
45
self .debug = debug
32
46
self .devname = ''
33
47
self .lock = threading .Lock ()
48
+ self .internalDelay = idealDelayForInteral ()
49
+ print ( self .internalDelay )
34
50
try :
35
51
self .s = serial .Serial (port , baud )
36
52
except Exception as e :
@@ -49,9 +65,9 @@ def Read(self, N, startT):
49
65
data = []
50
66
for i in range (N ):
51
67
t = time .time () - startT
52
- a , b = ( 1 + math . sin ( 2 * math . pi * 100 * t )) * 128 , ( 1 + math . cos ( 2 * math . pi * 50 * t )) * 64
68
+ a , b = interalFun ( t )
53
69
data .append ((t , int (a ), int (b )))
54
- time .sleep (1e-4 )
70
+ time .sleep ( self . internalDelay )
55
71
return data
56
72
# Arduino
57
73
t0 = time .time () - startT
0 commit comments