我将首先说我不是最熟悉python,这个问题可能是我不了解的更普遍的python 问题(即明显的重复)。
在 ev3 的 python 绑定中,电机的引用如下:
# hardware.py #
import ev3dev.ev3 as ev3
motor = ev3.LargeMotor('outA')
motor.connected
其中“outA”是电机连接到的机器人上的输出端口。
如果我这样做:
$:python hardware.py
我没有问题,我可以正常使用电机。但是,如果我写一个新文件
# do_something.py #
from hardware import *
我收到一个错误:
Exception TypeError: "'NoneType' object is not callable" in <bound method LargeMotor.__del__ of <ev3dev.core.LargeMotor object at 0xb67d2fd0>> ignored
有谁知道为什么会这样?它是 python 的东西还是 ev3 的东西?
我想以这种方式导入的原因是,我可以在一个文件(一大块代码)中完成所有硬件设置,然后将其导入到实际使机器人执行任务的文件中。
我知道 NoneType 是 python 中 None 的类型,我只是不知道为什么直接编译有效但导入无效。
第一次编辑:
好的,所以我将其编译为:
$:python hardware.py do_something.py
$:python do_something.py
这没有给出任何错误。
但是,根据要求,我添加了更多代码,hardware.py 是相同的:
# do_something.py #
from hardware import *
counter = 0
while True:
if (counter >= 1000):
break
motor.run_direct(duty_cycle_sp = 20)
counter += 1
即以 20 的循环速度运行电机,直到我们经过一千次循环迭代。这有效,并一直运行到循环中断并且脚本结束。然后给出相同的 NoneType 错误,即使脚本完成,电机也会继续运行。行为与 KeyboardInterrupt 相同。没有给出回溯,只是那个错误消息。