0

あるモジュールを使用してセンサーボードからデータを読み取り、そのデータをクラスに入れ、そのデータを別のモジュールに出力しようとしています。ここでベスト プラクティスに従っているのか、それとももっと良い方法があるのか​​はわかりません。現在、次のエラーが発生しており、修正方法がわかりません。

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:

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:

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()

4

1 に答える 1

1

当面の問題は、クラスのメソッドに戻り値がなく、明示的なステートメントがReadingsない場合の Python のデフォルトの戻り値is です。関数の最後の値が戻り値でもある言語がいくつかあります。R、Perl、および Bourne Shell が思い浮かびますが、これが混乱の元になる可能性があります。見返りにこれについての議論があり、Noneを返して、まったく返さないのですか? returnNone

メソッドからの暗黙のNone戻り値はAcceleration、3 つの要素のタプルにアンパックできません。そのメソッドの最後にa を追加すると、機能return x, y, zするはずです。

クラスとプログラムの構造に関しては、目的が何であるかによって異なります。

于 2020-07-15T11:32:28.890 に答える