首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从模块类存储和读取数据

从模块类存储和读取数据
EN

Stack Overflow用户
提问于 2020-04-19 22:01:28
回答 1查看 50关注 0票数 0

我试图使用一个模块从传感器板读取数据,将数据放入类中,而不是在另一个模块中打印数据。我不确定我是否遵循了这里的最佳实践,或者是否有更好的方法来做到这一点。目前,我正在得到以下错误,我不知道如何纠正。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "app/conductor.py", line 15, in <module>
    accel_x, accel_y, accel_z = nineDOF.Acceleration()
TypeError: cannot unpack non-iterable NoneType object

conductor.py:

代码语言:javascript
运行
复制
import time
import datetime
import dht11
import max31865
import lsm9ds1

while True:
    externalReading = max31865.temp()
    print("External Temp: {0:0.3f}C".format(externalReading))

    internalTemp, internalHumidity = dht11.readings()
    print("Internal Temp 1: {:.3f}C  Humidity: {}% ".format(internalTemp, internalHumidity))

    nineDOF = lsm9ds1.get()
    accel_x, accel_y, accel_z = nineDOF.Acceleration()
    mag_x, mag_y, mag_z = nineDOF.Magnetometer()
    gyro_x, gyro_y, gyro_z = nineDOF.Gyroscope()
    internalTemp2 = nineDOF.temperature()
    print(
        "Acceleration (m/s^2): ({0:0.3f},{1:0.3f},{2:0.3f})".format(
            accel_x, accel_y, accel_z
        )
    )
    print(
        "Magnetometer (gauss): ({0:0.3f},{1:0.3f},{2:0.3f})".format(mag_x, mag_y, mag_z)
    )
    print(
        "Gyroscope (degrees/sec): ({0:0.3f},{1:0.3f},{2:0.3f})".format(
            gyro_x, gyro_y, gyro_z
        )
    )
    print("Internal Temp 2: {0:0.3f}C".format(internalTemp2))

lsm9ds1.py:

代码语言:javascript
运行
复制
import board
import busio
import adafruit_lsm9ds1

# SPI connection:
from digitalio import DigitalInOut, Direction

spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
csag = DigitalInOut(board.D5)
csag.direction = Direction.OUTPUT
csag.value = True
csm = DigitalInOut(board.D6)
csm.direction = Direction.OUTPUT
csm.value = True
sensor = adafruit_lsm9ds1.LSM9DS1_SPI(spi, csag, csm)


class Readings:
    def __init__(self):
        pass

    def Acceleration(self):
        x, y, z = sensor.acceleration

    def Magnetometer(self):
        x, y, z = sensor.magnetic

    def Gyroscope(self):
        x, y, z = sensor.gyro

    def temperature(self):
        x = sensor.temperature


def get():
    return Readings()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 11:32:28

当前的问题是Readings类中的方法没有返回值,并且当没有显式return语句时,Python的默认返回值是None。在一些语言中,函数中的最后一个值也是返回值--想到了R、Perl和Bourne Shell --这可能是这里混乱的根源。在return, return None, and no return at all?中有一个关于这个的讨论

不能将来自None方法的隐式Acceleration返回值解压缩为三个元素元组。如果您在该方法的末尾添加了一个return x, y, z,那么它应该可以工作。

就课程和程序结构而言,这取决于你的目标是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61312197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档