【发布时间】:2023-03-28 06:20:02
【问题描述】:
以下代码旨在将原始数据从指定的串行端口输出到 python shell 以及现在以 CSV 格式的修改数据,准备通过 csv.writer 输出到 .csv 文件中。但是,最终输出显示为 Fri Apr 23 21:30:05 2021 "19,62,0,0,25。您可能会发现这是不正确的,因为输出应该是 [time.asctime(time.localtime (time.time())),decoded_bytes] 转换为 Fri Apr 23 21:30:05 2021, 19,62,0,0,25。我不确定“”是如何添加的,也不知道为什么 python 认为日期时间对象的“19”部分并将其放在同一列中。任何帮助将不胜感激。
import serial
import time
import csv
#ser = serial.Serial('/dev/ttyUSB0', baudrate = 9600, timeout = 1)
ser = serial.Serial('COM4', baudrate = 9600)
ser.flushInput()
while True:
ser_bytes = ser.readline()
line = ser.readline().decode('utf-8')[:-1]
decoded_bytes = line.replace(":","",5).replace("Soil Moisture","",1).replace("Humidity","",1).replace("CO2","",1).replace("ppm","",1).replace("ppb","",1).replace("%RH","",1).replace("Temp","",1).replace("EC","",1).replace("TVOC","",1).replace(" ","",8)
if line: # If it isn't a blank line
print("Incoming DATA:")
print(line)
print(".csv DATA:")
print(decoded_bytes)
with open("test_data.csv","a") as f:
writer = csv.writer(f,delimiter=" ")
writer.writerow([time.asctime(time.localtime(time.time())),decoded_bytes])
示例 python shell 输出:
传入数据: 土壤湿度:22EC,湿度:62.00%RH,CO2:0ppm,TVOC:0ppb,温度:25.00
.csv 数据: 22,62.00,0,0,25.00
传入数据: 土壤湿度:18EC,湿度:62.00%RH,CO2:400ppm,TVOC:0ppb,温度:24.45
.csv 数据: 18,62.00,400,0,24.45
传入数据: 土壤湿度:15EC,湿度:62.00%RH,CO2:400ppm,TVOC:0ppb,温度:25.00
.csv 数据: 15,62.00,400,0,25.00
【问题讨论】:
标签: python csv time arduino pyserial