如何修复Python从Arduino读取串行数据的延迟?

2024-04-23 18:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本来读取我的arduino输出的串行数据。Arduino正在读取3个IMU的角度。你知道吗

在我更改IMU的方向和python中的值更改之间大约有4秒的延迟。在Arduino的串行监视器中,一切正常。你知道吗

在我重新安装Windows之前,代码一直在工作。我已经三次检查了软件包是否正确安装,并在另一台计算机上尝试了代码。你知道吗

我试着加上“ser.reset\输入\缓冲区()“在我读台词之前。它解决了这个问题,但弄乱了格式,使其难以辨认。你知道吗

import datetime
import os.path
from os import path

ser = serial.Serial('COM3', 230400, timeout=1)
ser.close()
ser.open()

#Creating text file
file = "sensor_data.txt"
if path.exists(file):
    i = 1
    while path.exists(file):
        file = 'sensor_data_' + str(i) + '.txt'
        i = i + 1
file_data = open(file,"w")

#Reading COM3 & Writing to text file
print("Saving COM3 to file...\n")
print("Hit 'Ctrl+C' to stop collecting data.\n") #Ctrl C to kill and save data
try:
    while True:
        timestamp = datetime.datetime.now().time()
        line = ser.read(20)
        line = str(line, 'utf-8')
        line = str(timestamp) + line
        print(line)
        file_data.write(line)
except UnicodeDecodeError:
    file_data.close()
    os.remove(file)
    print("Error! Please Run Module again.")
except KeyboardInterrupt:
    print("Data saved in",file)
    file_data.close()
ser.close()

在一切出错之前,它几乎是实时更新的。任何建议都将不胜感激!你知道吗


Tags: topathimportclosedatadatetimeosline