繁体   English   中英

Python-将传感器数据写入文件

[英]Python- writing sensor data to a file

我正在尝试编写一个代码,我可以在其中接收来自模拟传感器的数据,并希望将数据写入 .txt 文件。 我做了一些研究并编写了这段代码-

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import spidev
import time

spi = spidev.SpiDev()
spi.open(0, 0)
datafile = file.open("temperature.txt", "w")

def ReadChannel(channel):
    adc = spi.xfer2([1, 8+channel <<4, 0])
    data = ((adc[1]& 3) << 8) + adc[2]
    return data

def ConvertVolts(data, places):
    volts = (data*3.3)/float(1023)
    volts = round(volts, places)
    return volts

def ConvertTemp(data, places):
    temp = ((data*200)/float(1023))-50
    temp = round(temp, places)
    return temp

temp_channel = 0
delay = 5

while True:
    temp_level = ReadChannel(temp_channel)
    temp_volts = ConvertVolts(temp_level, 2)
    temp = ConvertTemp(temp_level, 2)

    print"Temperature (deg F): ", temp
    datafile.write(str(temp)+"\n")
    time.sleep(delay)

datafile.close()

但是当我运行这段代码时,它会形成一个没有文本的文件“温度.txt”。 有人可以指出我的错误吗? 如果有帮助,我从以下网站中获得了一些灵感 - https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/temperature/step10.py http://www.raspberrypi-spy.co .uk/2013/10/analog-sensors-on-the-raspberry-pi-using-an-mcp3008/提前致谢

我认为您的文件输出流永远不会刷新到磁盘,因为您只是写入文件然后用 control-c 结束循环,对吗?

也许尝试让循环运行 10 次然后关闭文件,作为尝试。 您是否获得正确的打印温度输出?

为什么不使用内置的日志功能?? 那么它可能看起来像这样!

import logging

logging.basicConfig(filename=PATHTOFILE, loglevel=logging.INFO)

那么你可以:

logging.info("TEXTTOWRITETOTHEFILEHERE")

而不是 datafile.write(......) 如果存在,它将附加到文件并添加日期/时间。 它还将处理文件,例如。 关闭()等。 应该不需要延迟!

换行:

datafile = file.open("temperature.txt", "w")

对此:

datafile = open("temperature.txt", "w")

因为它现在对我有用。 如果仍然没有写入文件,请检查传感器数据的获取。 如果临时变量打印正确,请阅读以下内容。

为了您的目的,最好使用with关键字,因为它包括 .close() 甚至 try/finally 块(非常适合循环公式)。 您可能希望使用“a”模式添加数据,然后使用“w”模式重写它们:

while True:
    #read temp here
    with open("temperature", "a") as datafile:
        datafile.write(temp)

而不是不太一致:

datafile = open("temperature.txt", "w")
while True:
    #temp here
    datafile.write(temp)
datafile.close()

实际上从不关闭文件...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM