如何将使用PySerial收集的串行数据导出到csv文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将使用PySerial收集的串行数据导出到csv文件?相关的知识,希望对你有一定的参考价值。

我正在尝试从设备收集串行数据,时间戳并将其导出到.csv文件。

以下程序将日期和时间写入csv,但不是从设备模块返回的数据:

import time
import csv
import fio2

def Csv_creator():
    my_file = open('test_csv.csv', 'w+')

    with my_file:
        new_file = csv.writer(my_file)

def Timestamp():
    date_now = time.strftime('%d/%m/%y')
    time_now = time.strftime('%H:%M:%S')
    return [date_now,time_now]


def Write_loop():
    Csv_creator()
    fio2.Initialize()

    with open('test_csv.csv', 'a') as f:
            csv_file = csv.writer(f)

            for num in range(0,20):

                [date_now,time_now] = Timestamp()
                fio2_data = fio2.Reader()
                print(fio2_data)
                csv_file.writerow([date_now,time_now,fio2_data])   

    Write_loop()

设备模块如下所示。它返回数据,我可以打印它。唯一的问题是无法将其写入csv文件。

import serial

ser = serial.Serial("COM4",
                    baudrate=2400,
                    bytesize=serial.EIGHTBITS,
                    parity =serial.PARITY_ODD)


def Initialize():
    global ser
    try:
        ser.isOpen()
        print("
 Serial is open")
    except: 
        print ("Error: serial Not Open")

def Reader():
    global ser
    if (ser.isOpen()):

        try:                    
            x = ser.readline().decode()
            x = (x)
            return x
        except:
            return "unable to print"
    else: 
        return "cannot open serial port"
答案

我想到了。我不得不删除一些与小数值相关的垃圾信件。首先,我将收到的数据更改为字符串并替换垃圾字母。这是我改变它的方式:

[date_now,time_now] = Timestamp()
fio2_data = str(fio2.Reader()).replace("
","")
fio2_data = fio2_data.replace("x000","")
write_list = [date_now,time_now,fio2_data]

以上是关于如何将使用PySerial收集的串行数据导出到csv文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PySerial 与 micro:bit 建立串行通信?

使用 pyserial 将数据发送到串行 - 在 Razor 9DOF IMU 上工作

在 Windows 上使用 pyserial 将串行数据写入 Arduino

使用 pyserial 识别给定 USB VID 和 PID 的 USB 到串行端口

尝试在 WinXP 上使用 pyserial 打开串行端口 - >“拒绝访问”

可以在网站上使用 pySerial 打开并将数据发送到本地计算机上的串行端口吗?