如何使用 Python 从多个 Arduino ADC 读取串行数据?
How to read Serial data with Python from more then one Arduino ADC?
我是 Python 的初学者。我正在尝试将串行端口数据从 Arduino 写入 Python 中的 CSV 文件。
我想以以下格式保存数据:时间、传感器 1、传感器 2 作为数字,允许在单独的列中的 Excel 中打开它们。
我的代码允许按如下方式获取 CSV:
12:25:57,"294,293"
我无法删除引号。
我的串行输出的 Arduino 代码:
Serial.print(sensorValue_1);
Serial.print(",");
Serial.println(sensorValue_2);
delay(1000);
我的Python代码:
import csv
import serial
import time
ser=serial.Serial("COM15", 9600)
ser.flushInput()
while True:
ser_bytes = ser.readline().decode().strip()
t = time.localtime()
decoded_time = time.strftime('%H:%M:%S', t)
print(decoded_time, ser_bytes)
with open("test_file.csv", "a", newline='') as f:
writer = csv.writer(f, delimiter = ",")
writer.writerow([decoded_time, ser_bytes])
f.close()
我将不胜感激。
我编辑了您的代码并添加了一些注释。
如果这是你需要的,试试这个。
import csv
import serial
import time
ser=serial.Serial("COM15", 9600)
ser.flushInput()
while True:
#use split(',') to seperate ser_byte string to list
ser_bytes = ser.readline().decode().strip().split(',')
# using list comprehension to perform conversion to int
new_ser_bytes = [int(i) for i in ser_bytes]
#new_ser_bytes[0] is sensorValue_1
#new_ser_bytes[1] is sensorValue_2
t = time.localtime()
decoded_time = time.strftime('%H:%M:%S', t)
#print(decoded_time, ser_bytes)
with open("test_file.csv", "a", newline='') as f:
writer = csv.writer(f, delimiter = ",")
#writerow with seperate sensorValue
writer.writerow([decoded_time, new_ser_bytes[0], new_ser_bytes[1]])
f.close()
我是 Python 的初学者。我正在尝试将串行端口数据从 Arduino 写入 Python 中的 CSV 文件。 我想以以下格式保存数据:时间、传感器 1、传感器 2 作为数字,允许在单独的列中的 Excel 中打开它们。 我的代码允许按如下方式获取 CSV:
12:25:57,"294,293" 我无法删除引号。
我的串行输出的 Arduino 代码:
Serial.print(sensorValue_1);
Serial.print(",");
Serial.println(sensorValue_2);
delay(1000);
我的Python代码:
import csv
import serial
import time
ser=serial.Serial("COM15", 9600)
ser.flushInput()
while True:
ser_bytes = ser.readline().decode().strip()
t = time.localtime()
decoded_time = time.strftime('%H:%M:%S', t)
print(decoded_time, ser_bytes)
with open("test_file.csv", "a", newline='') as f:
writer = csv.writer(f, delimiter = ",")
writer.writerow([decoded_time, ser_bytes])
f.close()
我将不胜感激。
我编辑了您的代码并添加了一些注释。 如果这是你需要的,试试这个。
import csv
import serial
import time
ser=serial.Serial("COM15", 9600)
ser.flushInput()
while True:
#use split(',') to seperate ser_byte string to list
ser_bytes = ser.readline().decode().strip().split(',')
# using list comprehension to perform conversion to int
new_ser_bytes = [int(i) for i in ser_bytes]
#new_ser_bytes[0] is sensorValue_1
#new_ser_bytes[1] is sensorValue_2
t = time.localtime()
decoded_time = time.strftime('%H:%M:%S', t)
#print(decoded_time, ser_bytes)
with open("test_file.csv", "a", newline='') as f:
writer = csv.writer(f, delimiter = ",")
#writerow with seperate sensorValue
writer.writerow([decoded_time, new_ser_bytes[0], new_ser_bytes[1]])
f.close()