我试图从一个嵌入式串行输出中找到一种使用libavg事件处理程序的方法。我的理解是,我需要创建自己的发布程序,当我处理串行命令时,我会调用它。我只需要一种方法来创建10个不同的触发器,给定不同的串行输入。我试图做的一个类比是使用libavg的键盘处理来处理不同的键盘输入。在
我希望自定义发布者采取10个串行输出和传递一个事件.序列号参数对不同的订户类似于什么event.keystring事件做。在
这里有一些非功能代码,我认为这些代码有一些需要做的基本知识。在
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from libavg import avg, statemachine, player
class Test():
PRESSED = avg.Publisher.genMessageID()
RELEASED = avg.Publisher.genMessageID()
def __init__(self, parent=None, **kwargs):
self.registerInstance(self, parent)
self.publish(self.PRESSED)
self.publish(self.RELEASED)
def isActive(self):
self.notifySubscribers(Test.PRESSED, [])
def isInactive(self):
self.notifySubscribers(Test.RELEASED, [])
def onKeyDown(event):
global node
if event.serialid == '1':
#serialid isn't implemented anywhere but this is what ideally I would like to have happen
node.color = "FF8000"
def onKeyUp(event):
global node
node.color = "FFFFFF"
player = avg.Player.get()
canvas = player.createMainCanvas(size=(640,480))
rootNode = player.getRootNode()
node = avg.WordsNode(pos=(10,10), font="arial", text="Hello World", parent=rootNode)
vbutton=Test()
node.subscribe(vbutton.PRESSED, onKeyDown)
node.subscribe(vbutton.RELEASED, onKeyUp)
player.play()
来自here的自定义发布服务器示例:
^{pr2}$
可以通过发布-订阅接口传递任意参数。参数以列表形式传递:
在处理程序中:
^{pr2}$相关问题 更多 >
编程相关推荐