我有一个连续的整数流,我从我设置的Arduino uno接收到的。输入正在进入PsychoPy(v1.85.2),我希望将这个数字流连续保存到带有时间戳的.csv文件中以进行数据记录。
我已经确认我正在使用print port.readline()
从Arduino接收输入我不知道为什么,但实际的整数流只是没有写入.csv文件。只有时间戳写入.csv文件。
这是我在PsychoPy中的代码:
import serial
import time
import csv
port = serial.Serial("COM3", 9600)
# by default, the Arduino resets on connection,
# give it some time to wake-up.
time.sleep(1)
csvfile = "C:\Users\xxxx\Desktop\csvfile.csv"
while True:
res = port.readline()
with open (csvfile,'a') as output:
writer = csv.writer(output)
now = time.strftime('%d-%m-%Y %H:%M:%S')
writer.writerow([now, res])
我不确定这是否是来自Arduino的串行读取问题,我通过PsychoPy运行它,或者(很可能)我的代码中出现了一些错误。非常感谢您的帮助!
答案 0 :(得分:2)
问题是\n
在字符串末尾返回一个带有.strip()
(新行)的字符串。为了解决这个问题,我使用while True:
res = port.readline()
resa = float(res.strip())
with open (csvfile,'a') as output:
writer = csv.writer(output)
now = time.strftime('%d-%m-%Y %H:%M:%S')
writer.writerow([resa, now])
删除字符串前后的所有空格,最后将字符串转换为浮点值。
a = [21.2, 13.6, 86.2, 54.6, 76, 34, 78, 12, 90, 4];
b = sum(a(1:4))+sum(a(8:end));