0

我正在迈出 Python 编程的第一步。我正在使用通过 USB 到 TTL 串行连接连接到 Windows 7 计算机的 TFMini Plus 激光雷达。

我通过这段代码得到读数:

import time
import serial
import datetime
import struct
import matplotlib.pyplot as plt

ser = serial.Serial(
        port="COM1",
        baudrate = 115200,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=1
)

while 1:
        x = ser.readline().decode("utf_8").rstrip('\n\r')
        y=float(x)
        print(y)
        #time.sleep(0.1)
        if y > 3:
                print("too far!")

我想每 X 秒读一次(可以根据用户的选择进行设置),但我找不到办法。当我使用 time.sleep() 时,读数都一样:

随时间阅读。继续睡觉

基本上我想延迟读数的频率,或者让它有选择地从捕获的读数中给我一个读数。我该怎么做?

谢谢

4

1 回答 1

0

你可以使用这个schedule包。IE:

import time
import serial
import schedule

ser = serial.Serial(
        port="COM1",
        baudrate = 115200,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=1
)

def read_serial_port():
    x = ser.readline().decode("utf_8").rstrip('\n\r')
    y=float(x)
    print(y)
    if y > 3:
        print("too far!")

rate_in_seconds = 10
schedule.every(rate_in_seconds).seconds.do(read_serial_port)

while True:
    schedule.run_pending()
    time.sleep(1)
于 2019-12-30T22:34:16.843 回答