我有一个在Raspberry Pi 3B +上运行的python脚本,该脚本正在从连接到串行端口的气压计读取数据。该脚本运行良好,可以从气压计捕获10 Hz数据(每秒10行数据)。
我有一个@reboot cron作业,每当Pi启动时都会启动脚本。 在启动时会生成一个文件名。
import io
import serial
import sys
import time
from time import sleep
from datetime import datetime, timedelta
#serial port
port = "/dev/serial/by-id/usb-FTDI_US232R_FT1TSTRU-if00-port0"
#try to connect to barometer at 9600bps:
ser=serial.Serial(port, 9600, timeout=1, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS)
# File storage
SSD_path="/media/pi/USBDRIVE/"
filename=time.strftime('barometer-%Y-%m-%d-%H%M.dat')
path=SSD_path + filename
#write data to file on SSD
ser.write(b'*0100E6\r\n')
with open(path, 'w+') as f:
while True:
line = str(ser.readline())
f.writelines([line.strip(), " t = %s \n " % (datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f")[:-5])])
我希望脚本每小时生成一个新的文件名,而不是我目前不断增长的单个文件的情况。 我该如何实现?
答案 0 :(得分:1)
我没有您的硬件,因此在下面的代码中用##
注释掉了处理该代码的部分代码。它显示了如何实现我在注释中建议的内容,即生成输出文件名,运行数据捕获循环一个小时,然后冲洗并重复。
import io
import os
import random # for testing
##import serial
import sys
import time
from time import sleep
from datetime import datetime, timedelta
TIME_INTERVAL = 3600 # Seconds.
#serial port
port = "/dev/serial/by-id/usb-FTDI_US232R_FT1TSTRU-if00-port0"
#try to connect to barometer at 9600bps:
##ser = serial.Serial(port, 9600, timeout=1, parity=serial.PARITY_NONE,
## stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
# File storage
##SSD_path = "/media/pi/USBDRIVE/"
SSD_path = r"C:\vols\Files\PythonLib\Stack Overflow"
#write data to file on SSD
##ser.write(b'*0100E6\r\n')
print('running')
while True:
filename = time.strftime('barometer-%Y-%m-%d-%H%M%S.dat')
path = os.path.join(SSD_path, filename)
with open(path, 'w+') as f:
start = time.time()
while (time.time() - start) < TIME_INTERVAL:
## line = str(ser.readline())
line = str(random.randint(0, 100))
time.sleep(.1)
## f.writelines([line.strip(), " t = %s \n " % (datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f")[:-5])])
f.writelines([line.strip(), " t = %s \n " % (datetime.now().strftime("%Y-%m-%d-%H:%M:%S.%f")[:-5])])