我正在尝试安排我的服务应用程序向我的主应用程序发送消息。两个代码都能够发送和接收消息。但是,在这段代码中,当我尝试使用Clock.schedule_interval来执行一个函数时,它无法执行。我意识到回调是弱引用的,我引用了原始回调,就像kivy引用站点所暗示的那样。
我确信osc.sendMsg可以工作,因为当我定义了一个使用osc.sendMsg的函数时,它在我调用该函数时成功将消息发送到我的其他main.py.但是,当我将self.answer_message放在Clock.schedule_interval中时,出现问题并且它不会发送消息。我希望这段代码每秒发送一次消息。
我使用了pdb,发现当我把answer.answer_message()放在message_callback下时,它会调用osc.py并将消息发送给我的其他代码。当我在message_callback下放置answer.time()时,它会创建一个时钟事件,但它不会调用answer_message。非常感谢任何帮助。
这是我的服务/ main.py:
import time
from kivy.lib import osc
from kivy.clock import Clock
serviceport = 3000
activityport = 3001
def message_callback(message, *args):
print("got a message! %s" % message)
#global switch
#switch = message[2]
answer = function()
answer.time()
class function(object):
def answer_message(self,dt):
osc.sendMsg('~/kivyinstall/sahil/reply/step3_active', [time.asctime(time.localtime()), ], port=activityport)
def time(self):
Clock.schedule_interval(self.answer_message, 1)
if __name__ == '__main__':
osc.init()
oscid = osc.listen(ipAddr='127.0.0.1', port=serviceport)
osc.bind(oscid, message_callback, '~/kivyinstall/sahil/reply/step3_active/service')
while True:
osc.readQueue(oscid)