python - 为什么我的 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 勒克斯作为值。然而,如果你打开那个盒子里的光源,你会得到数据在 2400 到 2500 勒克斯之间波动。几乎是你所期望的。Arduino IDE 中的串行绘图仪给出相同的值。
之后,我继续编写用于获取时间戳、将数据存储在 .csv 文件中并绘制图形的代码:
import serial, time, pandas as pd, plotly.express as px
from datetime import datetime
try:
COM3 = serial.Serial('COM3', baudrate=9600, 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 勒克斯。它没有效果。当您第一次打开光源,然后运行程序时,您会再次获得在 2400 和 2500 勒克斯之间波动的值。但是,更奇怪的是,当你关掉灯时,这种情况还会继续。尽管灯被关闭,你仍然会得到波动的值。
由于 Arduino 似乎为 Arduino IDE 和第一个 python 代码提供了正确的值,我想它必须对我的 python 程序做一些事情;但我不知道出了什么问题。任何帮助将非常感激。
解决方案
推荐阅读
- flutter - 如何以高性能的方式处理抖动的图像像素?
- mysql - MySQL 数据库 discord.js
- wordpress - Google Analytics(分析)数据仅显示在 MonsterInsights 上
- vba - 复制列中的超链接
- laravel - 检查是否在迁移中
- c++ - 制作动态调整大小的数组 C++ 时内存分配中的分段错误
- mysql - MAMP - MySQL 无法运行
- wordpress - 无法在 wordpress 5.8.1 中访问 woocommerce rest api
- reporting-services - SSRS 日历日期/时间参数问题
- matrix - 在 C++ 示例代码中将矩阵左侧旋转 90 度