添加代码后,为什么我的Arduino Uno的pyserial给出的值现在卡住了?

问题描述

我正在尝试将来自Arduino Uno的光传感器数据存储在.csv文件中。最初,我使用pyserial建立连接,使用此代码确实起作用:

import serial

ser = serial.Serial('COM3',baudrate=9600,timeout=1)

while 1:
    arduinoData = ser.readline().decode('ascii')
    print(arduinoData)

光传感器放置在暗盒中,因此您不断得到1.00 lux的值。但是,如果您在该框中打开光源,则数据会在2400到2500 lux之间波动。几乎是您所期望的。 Arduino IDE中的串行绘图仪具有相同的值。

然后,我继续编写代码获取时间戳,将数据存储在.csv文件中并绘制图形:

import serial,time,pandas as pd,plotly.express as px
from datetime import datetime

try:
    COM3 = serial.Serial('COM3',timeout=1)
    print("Zum speichern der Daten COM3 entfernen")
    dataFile = open('DataLog.csv','w')
    dataFile.write('Zeit,Wert\r')
    arduinoData = COM3.readline().decode('ascii')
except:
    print("Es besteht keine Verbindung zu COM3")
    quit()

while 1:
    try:
        currentTime = datetime.Now().strftime('%Y-%m-%d %H:%M:%s.%f')[:-3]
        arduinoData = COM3.readline().decode('ascii')

        dataFile.write(currentTime)
        dataFile.write(',')
        arduinoData = arduinoData.replace("\r\n","")
        dataFile.write(arduinoData)
        dataFile.write('\r')

        print(arduinoData)
        time.sleep(0.1)
    except:
        dataFile.close()
        print("COM3 entfernt,Daten gespeichert")

        df = pd.read_csv('DataLog.csv')
        fig = px.line(df,x='Zeit',y='Wert',title='Messwerte')
        fig.show()

        quit()

我现在尝试记录一些数据,但是即使您打开灯,该值仍保持为1.00 lux。没有作用。 当您第一次打开光源,然后运行程序时,您会再次获得在2400到2500 lux之间波动的值。但是,即使很奇怪,当您关闭灯时,这种情况也会继续。尽管灯已关闭,但您仍会得到波动的值。

由于Arduino似乎为Arduino IDE和第一个python代码提供了正确的值,所以我想它必须与我的python程序有关;但我不知道怎么了任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)