python - 在类中检查 Python 中的函数调用
问题描述
我正在尝试编写一个类来控制带有 Raspberry Pi 的步进电机。
我的班级示例:
class Stepmotor:
def __init__(...):
...
def Rotate(..):
while (function Stop is not called):
'motor rotate'
def Stop(..):
'motor stop'
代码示例:
motor = Stepmotor(..)
motor.Rotate() ---> rotate motor for 5 second
time.sleep(5)
motor.Stop() ---> stop motor
这是我使用 Raspberry Pi 的原始代码:
import RPi.GPIO as gpio
import time
class StepMot:
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
a = []
def __init__(self, in1, in2, in3, in4):
global a
a = [in1, in2, in3, in4]
gpio.setup(in1, gpio.OUT)
gpio.setup(in2, gpio.OUT)
gpio.setup(in3, gpio.OUT)
gpio.setup(in4, gpio.OUT)
def gpio_controll(self, x, y, z, w):
global a
gpio.output(a[0], x)
gpio.output(a[1], y)
gpio.output(a[2], z)
gpio.output(a[3], w)
time.sleep(0.001)
def RotateCW(self):
while True:
self.gpio_controll(0,0,0,0)
self.gpio_controll(1,0,0,0)
self.gpio_controll(1,1,0,0)
self.gpio_controll(0,1,0,0)
self.gpio_controll(0,1,1,0)
self.gpio_controll(0,0,1,0)
self.gpio_controll(0,0,1,1)
self.gpio_controll(0,0,0,1)
self.gpio_controll(1,0,0,1)
def RotateACW(self):
while True:
self.gpio_controll(0,0,0,0)
self.gpio_controll(1,0,0,1)
self.gpio_controll(0,0,0,1)
self.gpio_controll(0,0,1,1)
self.gpio_controll(0,0,1,0)
self.gpio_controll(0,1,1,0)
self.gpio_controll(0,1,0,0)
self.gpio_controll(1,1,0,0)
self.gpio_controll(1,0,0,0)
def Stop(self):
for i in a:
gpio.output(i, 0)
当我呼叫RotateCW
“顺时针”时,电机在呼叫后 5 秒内仍会继续旋转Stop
。
我知道这是因为代码被阻止了while True
,那是因为我直接在课堂上搜索解决方案。当Stop()
在代码中调用时,while 循环RotateCW()
停止。
解决方案
您可以在 while 循环中添加一个duration
参数RotateCW()
并检查它:
def RotateCW(self, duration):
stop_time = time.time() + duration
while time.time() < stop_time:
...
推荐阅读
- swift - Swift:如何检查多个集合的交集?
- javascript - 过滤后的副本数组
- java - Spring Boot 主题交换未发送
- reactjs - 将 YouTube API 导入 Gatsby 意外令牌
- typescript - 这种语法叫什么?
- c# - 有没有办法在 C# ASP.NET Core MVC 中功能性地执行 RedirectToAction?
- python - 为什么我的输出结果应该在 Python 中以相反的顺序显示确切的数字时不显示 0。不将参数变量更改为字符串
- python - Selenium webdriver - 使用特定 Chrome 配置文件时忽略首选项
- c# - 如何使用实体框架选择 2 列?
- c# - 从 Azure Blob C# 下载图像