【发布时间】:2020-09-10 18:49:35
【问题描述】:
我正在尝试将 DmxPy 与用 Transitions 编写的状态机一起使用,但尝试将 DmxPy 传递给有限状态机会引发元类错误。似乎 DmxPy 的输出是一个 Nonetype,它没有在 Transitions 状态机中运行。
有谁知道如何使以下简单的、无法运行的脚本工作或根据我们所处的状态使灯亮起的变体?
class DmxPy:
def __init__(self, serialPort):
self.serial =serialPort(serialPort, baudrate=57600)
...other DMX code...
def set_red(self, channel)
...RGBW color red mix...
def set_green(self, channel)
...RGBW color green mix...
def render(self)
self.serial.write(...DMX code...)
上面的内容很简单,但运行它会是
dmx = DmxPy('COM5')
dmx.set_red(1)
dmx.render()
或
dmx = DmxPy('COM5')
dmx.set_red(1)
dmx.render()
Transitions状态机代码示例,非功能代码为
class State:
pass
classFSMOpen(State, DmxPy):
dmx = DmxPy('COM5')
dmx.set_red(1)
dmx.render()
classFSMClosed(State,DmxPy):
dmx = DmxPy('COM5')
dmx.set_green(1)
dmx.render()
classFSM(object)
...creation of the FSM...
从上面的代码中,我收到一个TypeError: metaclass conflict,当我检查 DmxPy 运行代码的类型时,它告诉我这是一个<class 'NoneType'>。
那么,如何使用 FSM 中的 DmxPy 代码根据 FSM 的状态更改灯光?或者,有人有更好的主意吗?
【问题讨论】:
标签: python-3.x methods transition nonetype pytransitions