Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将DMXPY与状态机一起使用_Python 3.x_Methods_Transition_Nonetype_Pytransitions - Fatal编程技术网

Python 3.x 将DMXPY与状态机一起使用

Python 3.x 将DMXPY与状态机一起使用,python-3.x,methods,transition,nonetype,pytransitions,Python 3.x,Methods,Transition,Nonetype,Pytransitions,我试图使用中编写的状态机,但试图将DmxPy传递给有限状态机会抛出元类错误。DmxPy的输出似乎是一个非类型,它不在状态机内运行 有人知道如何让下面这个简单的、不起作用的脚本工作,或者根据我们所处的状态使灯亮起的变体吗 class DmxPy: def __init__(self, serialPort): self.serial =serialPort(serialPort, baudrate=57600) ...other DMX code... def set_r

我试图使用中编写的状态机,但试图将DmxPy传递给有限状态机会抛出元类错误。DmxPy的输出似乎是一个非类型,它不在状态机内运行

有人知道如何让下面这个简单的、不起作用的脚本工作,或者根据我们所处的状态使灯亮起的变体吗

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

转换状态机代码示例中,非功能代码为

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运行代码的类型时,它告诉我它是


那么,如何在FSM中使用DmxPy代码根据FSM的状态更改灯光?或者,有人有更好的主意吗

我已经找到了一种让代码工作的方法,只是没有找到原因。我很聪明,在这一点上不在乎,直到下一次它破裂

我只是通过删除对DmxPy代码的调用来更改这两个类,如下所示

class State:
    pass

classFSMOpen(State):
    dmx = DmxPy('COM5')
    dmx.set_red(1)
    dmx.render()

classFSMClosed(State):
    dmx = DmxPy('COM5')
    dmx.set_green(1)
    dmx.render()

classFSM(object)
    ...creation of the FSM...

如果有人有理由这样做,我洗耳恭听。

我已经找到了一种让代码工作的方法,只是没有找到原因。我很聪明,在这一点上不在乎,直到下一次它破裂

我只是通过删除对DmxPy代码的调用来更改这两个类,如下所示

class State:
    pass

classFSMOpen(State):
    dmx = DmxPy('COM5')
    dmx.set_red(1)
    dmx.render()

classFSMClosed(State):
    dmx = DmxPy('COM5')
    dmx.set_green(1)
    dmx.render()

classFSM(object)
    ...creation of the FSM...
如果有人有理由这么做,我洗耳恭听