UART数据传输

时间:2016-04-06 20:29:59

标签: python time arduino beagleboneblack uart

目前,我正在将传感器连接到Arduino Mega并将读数通过序列打印到Beaglebone Black。我需要数据以Arduino的串行监视器中的方式显示时间戳。例如:arduino serial monitor

出于测试目的,我只是告诉Arduino继续将右列打印到tx引脚(但不是时间戳)。然后,beaglebone通过它的UART1引脚接收该数据。我告诉beaglebone要做的是打印时间戳(以毫秒为单位)然后从Arduino收到的内容。 我得到的是:Beaglebone's output file

显然,这里有些不对劲。我得到的值绝对不应该是1,并且时间戳不合适。

我写的代码的相关部分:

    z = 0
    millis = lambda: int(float(time.time()))
    sensorValue = 0
    header = 'Sensor 1 output'
    data.write(str(header))
    data.write(str('\n'))

while z==0:
    sensorValue = ser.read() #add more for more pins
    data.write(str(float(time.clock()*1000)))
    data.write('\t')
    data.write(sensorValue) # tosses what's coming in at pin to our file
    data.write('\n')

我非常确定time.time()函数不正确使用。我正在寻找的是启动各种定时器并输出自程序启动以及从RX引脚接收数据以来经过的毫秒数。

我的问题是,甚至存在于Python中吗?我能找到的只是time.time()或time.clock(),但那些似乎不起作用。 Arduino-IDE有一个名为millis()的函数就是这样做的,但它看起来并不像Python在功能方面具有同等效力。

1 个答案:

答案 0 :(得分:0)

  

我正在寻找的东西可以启动各种计时器并输出自程序启动以来经过的毫秒数

#!/usr/bin/env python
from time import time as timer

start = timer() 
...
elapsed_seconds = timer() - start
elapsed_milliseconds = elapsed_seconds * 1000

如果您有权访问Python 3,请使用:

from time import monotonic as timer

time.monotonic()不受系统时钟更新的影响。