我的问题和给定问题之间存在显着差异。如果我实现了链接上给出的睡眠(有些人认为我的问题是另一个的重复),那么我的整个应用程序将挂起一段时间。另一方面,我正在寻找一个调度程序,以便我的应用程序不会挂起,但只是在一段时间后运行.wav文件。同时我可以使用我的应用程序做任何事情。希望这是有道理的。
我打算建一个闹钟。我想我可以根据这个算法做到这一点...
import serial
import numpy as np
import matplotlib.pyplot as plt
from drawnow import *
voltArray = []
count = 0
arduinoData = serial.Serial('/dev/ttyACM0',9600)
plt.ion()
def makeFig():
plt.title('Stethascope Data')
plt.plot(voltArray,'bo-')
plt.grid(True)
plt.ylabel('Voltage (V)')
plt.ylim(0,5)
while True:
while (arduinoData.inWaiting()==0): #wait here until there is data
pass #do nothing
arduinoString = arduinoData.readline()
print arduinoString
try:
volt = float(arduinoString)
except ValueError:
# pass
print 'ValueError'
print 'Pin Value: ', volt
volt = volt*(5.0/1024.0) #arduino reads 0-5V, 10bit resolution
#2^10 = 1024, arduino outputs 0-1023
print 'Voltage: ', volt
voltArray.append(volt) #append volt value into array
drawnow(makeFig)
count = count + 1
if (count > 50):
voltArray.pop(0)
print 'End Loop'
print
这个程序的问题是它将持续运行直到给定的时间。所以我在寻找更好的主意。让我们说是否有任何Python模块/类/函数可以在给定时间播放声音文件。是否有任何Python模块/类/函数可以在给定时间内唤醒?或者我的算法通常用于所有闹钟?
答案 0 :(得分:1)
据我所知,没有一个好的Python模块可以做到这一点。你要找的是cron job。它允许您安排特定脚本在特定时间运行。因此,您的Python脚本最终只会成为播放.wav的代码,然后您需要创建一个cron作业来告诉您的计算机每天在特定时间执行该脚本。
答案 1 :(得分:1)
查看sched模块。
以下是如何使用它的示例:
import sched, time, datetime
def print_time():
print("The time is now: {}".format(datetime.datetime.now()))
# Run 10 seconds from now
when = time.time() + 10
# Create the scheduler
s = sched.scheduler(time.time)
s.enterabs(when, 1, print_time)
# Run the scheduler
print_time()
print("Executing s.run()")
s.run()
print("s.run() exited")
The time is now: 2015-06-04 11:52:11.510234 Executing s.run() The time is now: 2015-06-04 11:52:21.512534 s.run() exited