2024-10-05 13:36:17 发布
网友
我想得到“值”的值?我应该如何在Python中使用事件?在
a = self.memoryProxy.subscribeToEvent("ALTextToSpeech/Status", "value",str) print "value" self.tts.setParameter("pitchShift", 1.1) self.tts.post.say(str)
根据您的naoqi版本,您可以使用以下模式之一。
老办法是这样的(参见Naoqi doc):
from naoqi import ALProxy, ALBroker, ALModule import argparse # Global variable to store the TTSEventWatcher module instance tts_event_watcher = None memory = None class TTSEventWatcher(ALModule): """ An ALModule to react to the ALTextToSpeech/Status event """ def __init__(self, ip_robot, port_robot): super(TTSEventWatcher, self).__init__("tts_event_watcher") global memory memory = ALProxy("ALMemory", ip_robot, port_robot) self.tts = ALProxy("ALTextToSpeech", ip_robot, port_robot) memory.subscribeToEvent("ALTextToSpeech/Status", "tts_event_watcher", # module instance "on_tts_status") # callback name def on_tts_status(self, key, value, message): """ callback for event ALTextToSpeech/Status """ print "TTS Status value:", value if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument(" ip", type=str, default="127.0.0.1", help="Robot IP address. On robot or Local Naoqi: use '127.0.0.1'.") parser.add_argument(" port", type=int, default=9559, help="Naoqi port number") args = parser.parse_args() event_broker = ALBroker("event_broker", "0.0.0.0", 0, args.ip, args.port) global tts_event_watcher tts_event_watcher = TTSEventWatcher(args.ip, args.port) while True: raw_input("Watch events be triggered...") tts_event_watcher.tts.say("Hello!")
小心点,这里有一些隐藏的技巧,例如强制您将事件管理代码放在主文件中。
在较新版本中,您可以使用这种功能更友好的模式:
根据您的naoqi版本,您可以使用以下模式之一。
老办法是这样的(参见Naoqi doc):
小心点,这里有一些隐藏的技巧,例如强制您将事件管理代码放在主文件中。
在较新版本中,您可以使用这种功能更友好的模式:
^{pr2}$相关问题 更多 >
编程相关推荐