如何使用writerow将带有时间戳的整数流写入.csv文件?

时间:2018-03-20 15:28:32

标签: csv arduino export-to-csv arduino-uno psychopy

我有一个连续的整数流,我从我设置的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运行它,或者(很可能)我的代码中出现了一些错误。非常感谢您的帮助!

1 个答案:

答案 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));