Python导入(可以是Python或Lego Mindstorms libs)

2024-06-02 18:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我首先要说的是,我不是最熟悉python的,这个问题可能是我不了解的更一般的python问题(即,一个明显明显的重复)。在

在ev3的python绑定中,引用的电机如下所示:

# hardware.py #
import ev3dev.ev3 as ev3
motor = ev3.LargeMotor('outA')
motor.connected

其中“outA”是电机连接到的机器人上的输出端口。在

如果我这样做了:

^{pr2}$

我没有问题,我可以正常使用马达。但是,如果我写一个新文件

# 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的东西?在

我希望以这种方式导入的原因是,我可以在一个文件(相当大的代码块)中完成所有的硬件设置,然后将其导入实际使robot执行任务的文件中。在

我知道NoneType在python中是None的类型,我只是不知道为什么直接编译可以工作,而导入却不行

第一次编辑

好吧,我把它编译成:

$:python hardware.py do_something.py
$:python do_something.py

这没有出错。在

但是,根据要求,我添加了更多代码,硬件.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的循环速度运行电机,直到我们经历了一千个循环迭代。这个运行,直到循环中断和脚本结束。然后给出相同的非类型错误,即使脚本已完成,电机仍继续运行。其行为与键盘中断相同。没有回溯,只有那个错误消息。在


Tags: 文件frompyimport错误counterdosomething
1条回答
网友
1楼 · 发布于 2024-06-02 18:27:20

首先,python是一种语言,它的代码是由单词组成的,另一方面,Lego Mindstorms的“语言”是由简单的块组成的。也就是说,从逻辑上讲,这两种语言不能混在一起,没有任何共同之处。我在这两方面都有丰富的经验,我从来没有发现他们之间有任何共同之处。在

相关问题 更多 >