我使用time.sleep(0.01..)
来获得serial.write(buffer)
之间的延迟,就像那样:
while True:
s.write(command)
time.sleep(0.01)
这样可以正常工作,但如果睡眠arg小于约0.015秒,则会在外部接口上显示一些消息而没有延迟。
有没有更好的解决方案来获得更精确的python计时。
我用它来测试嵌入式设备及其串行接口。我知道我正在使用python(和操作系统),所以没有实时的时间。但这种方法非常简单灵活。所以如果可能的话我会改进它。
答案 0 :(得分:0)
如果你不介意旋转/燃烧一点CPU而不是睡觉,你可以利用time.time()
结果的(或多或少精确)usec分辨率,这些都是这样的:< / p>
import time
def usec_sleep(sleep_time_in_usec):
start_time = time.time() * 1000000
end_sleep = start_time + sleep_time_in_usec
# regular sleep until ~20 msec before end_sleep
sleep_time_minus_20_msec = end_sleep - start_time - 20000
if sleep_time_minus_20_msec > 0:
time.sleep(sleep_time_minus_20_msec/1000000)
# spinning (for better precision) for the last up to ~20 msec
while time.time() * 1000000 < end_sleep:
pass