Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python实现串行数据记录_Python_Logging_Serial Port_Export To Csv_Pyserial - Fatal编程技术网

用python实现串行数据记录

用python实现串行数据记录,python,logging,serial-port,export-to-csv,pyserial,Python,Logging,Serial Port,Export To Csv,Pyserial,简介: from __future__ import print_function import serial, time, io, datetime from serial import Serial addr = "COM1" ## serial port to read data from baud = 9600 ## baud rate for instrument ser = serial.Serial( port = addr,\ baudrate = baud,

简介:

from __future__ import print_function
import serial, time, io, datetime
from serial import Serial

addr = "COM1" ## serial port to read data from
baud = 9600 ## baud rate for instrument

ser = serial.Serial(
    port = addr,\
    baudrate = baud,\
    parity=serial.PARITY_NONE,\
    stopbits=serial.STOPBITS_ONE,\
    bytesize=serial.EIGHTBITS,\
    timeout=0)


print("Connected to: " + ser.portstr)

## this will store each line of data
seq = []
count = 1 ## row index

while True:
    for i in ser.read():
        seq.append(i) ## convert from ACSII?
        joined_seq = ''.join(str(v) for v in seq) ## Make a string from array

        if i == '\n':
            print("Line: " + str(count) + "" + str(datetime.datetime.now()) + joined_seq) ## append a timestamp to each row of data
            seq = []
            count += 1
            break

ser.close()
我需要编写一个小程序,实时读取串行数据并将其写入文本文件。我在读取数据方面取得了一些进展,但我没有成功地将这些信息存储到新文件中

这是我的代码:

from __future__ import print_function
import serial, time, io, datetime
from serial import Serial

addr = "COM1" ## serial port to read data from
baud = 9600 ## baud rate for instrument

ser = serial.Serial(
    port = addr,\
    baudrate = baud,\
    parity=serial.PARITY_NONE,\
    stopbits=serial.STOPBITS_ONE,\
    bytesize=serial.EIGHTBITS,\
    timeout=0)


print("Connected to: " + ser.portstr)

## this will store each line of data
seq = []
count = 1 ## row index

while True:
    for i in ser.read():
        seq.append(i) ## convert from ACSII?
        joined_seq = ''.join(str(v) for v in seq) ## Make a string from array

        if i == '\n':
            print("Line: " + str(count) + "" + str(datetime.datetime.now()) + joined_seq) ## append a timestamp to each row of data
            seq = []
            count += 1
            break

ser.close()

谢谢

也许您可以将以下内容改编为代码:

filename="myFile.txt"
datafile=open(filename, 'a')
while True:
    data = ser.readline()
    datafile.write(data)

datafile.close()
ser.close()
编辑 如果只是在文件中写入,一切正常,请尝试:

from __future__ import print_function
import serial, time, io, datetime
from serial import Serial

addr = "COM1" ## serial port to read data from
baud = 9600 ## baud rate for instrument

ser = serial.Serial(
    port = addr,\
    baudrate = baud,\
    parity=serial.PARITY_NONE,\
    stopbits=serial.STOPBITS_ONE,\
    bytesize=serial.EIGHTBITS,\
    timeout=0)


print("Connected to: " + ser.portstr)

filename="myFile.txt"
datafile=open(filename, 'a')

## this will store each line of data
seq = []
count = 1 ## row index

while True:
    for i in ser.read():
        seq.append(i) ## convert from ACSII?
        joined_seq = ''.join(str(v) for v in seq) ## Make a string from array

        if i == '\n':
            datafile.write("Line: " + str(count) + "" + str(datetime.datetime.now()) + joined_seq) ## append a timestamp to each row of data
            seq = []
            count += 1
            break
datafile.close()
ser.close()

这是一个很好的起点,但是您的示例删除了我添加的时间戳。这带来了一个我还没有克服的新障碍。我正在研究使用numpy和np.append函数向原始串行数据添加时间戳列。我现在意识到使用数组格式可能是我的最佳选择。好的,否则,在创建时间戳之后,您只能
datafile.write(“stampedDataHere”)
。好的,谢谢,我将研究创建stampedData对象。我刚刚意识到我的示例代码只打印时间戳,但它还没有将它附加到每一行数据中。目前正试图找出如何使其正常工作。
stampedata
只是一个名称,我的意思是把它放在实际存在的地方,
print…
类似于:
datafile.write(“行:”+str(count)+“+str(datetime.datetime.now())+joined\seq)
我编辑了我的帖子。。。我无法在我的计算机中尝试此代码。。。。但主要思想在这里。。。。