我寫了一個系統來在arduino nano和我的python腳本之間交換crc-checked結構數據。這是工作得很好,但是當我讓系統運行我得到意想不到的輸出在我的python監視器(使用pycharm)python - time.clock()/ time()的問題
print「Took」,(time.time() - timeout),「s」有時打印出Took 0.0秒。 通常它會打印0.0160000324249秒。 使用win7-64bit專業版。
從時間文檔:返回自紀元以來的秒數作爲浮點數。請注意,即使時間總是以浮點數形式返回,但並非所有系統的時間精度都比1秒高。
I'm尋找類似米利斯()這就是足夠的精度對我的情況
代碼的Python:
import serial
import time
import binascii
import struct
from ctypes import *
arduino = serial.Serial()
def receive_struct2():
start = 0x85
detected_start = False
arduino.baudrate = 57600
arduino.timeout = 0
arduino.port = 'COM8'
try:
arduino.open()
except serial.SerialException, e:
print e
while True:
if(arduino.inWaiting() >= 1 and detected_start == False):
data = ord(arduino.read())
if data == start:
print "Detected begin"
detected_start = True
else: print chr(data),
if arduino.inWaiting() >= 1 and detected_start == True:
message_length = ord(arduino.read())
#print "Got message length ", message_length
timeout = time.time()
while time.time() - timeout <= 0.3 and arduino.inWaiting() < message_length-1:pass
print "Took ", (time.time() - timeout), " s"
....
不相關:應該有一種方法來等待I/O沒有繁忙的循環(Windows上的'select()'模擬)檢查aurdino API文檔。實現繁忙循環的更好方法是使用截止日期:'deadline = timer()+ 0.3;而timer()<截止時間和...'。注意:有不同的有用的定時器定義:全系統範圍與全過程值,已知原點對比只有相對值是有用的,在子過程中計數睡眠時間和/或時間等等。例如,讀[ time.monotonic()','time.perf_counter()','time.process_time()'definitions](https://docs.python.org/3/library/time.html#time.monotonic) – jfs 2015-02-07 19:45:52