1

kivy で簡単な OSC テストを作成しましたが、Android フォンでの実行に問題があるようです。Kivy と OSC がどのように機能するかをよりよく理解するために、アプリと別のコンピューター間の通信を示す小さなテストを行いました。通常はサーバー

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import *
from kivy.uix.button import Button
from kivy.clock import Clock
from kivy.lib.osc import oscAPI

class CButton(Button):
    def __init__(self, **kwargs):
        kwargs['text'] = kwargs.get('text', 'empty')
        super(CButton, self).__init__(**kwargs)

class OscWidget(GridLayout):
    def __init__(self, **kwargs):
        super(OscWidget, self).__init__(**kwargs)

    def callback(self, instance, *args):
        self.oscbutton.text = instance[2]
        oscAPI.sendMsg('/current/reply', dataArray=['answer'], ipAddr='192.168.1.101', port=8889)

class OscButtonApp(App):
    def buttpress(self, *args):
        oscAPI.sendMsg('/current/reply', dataArray=['call'], ipAddr='192.168.1.101', port=8889)

    def build(self):
        btnapp = OscWidget()
        oscAPI.init()
        oscid = oscAPI.listen(port=8889)
        osc.bind(oscid, btnapp.callback, '/test/reply')
        Clock.schedule_interval(lambda *x: osc.readQueue(oscid), 0)
        return btnapp


if __name__ == '__main__':
    OscButtonApp().run()

コンピューターでテストすると、両方の方法で動作するため、別の端末からメッセージを送信すると、Kivy アプリが反応します。

oscAPI.sendMsg('/test/reply', dataArray=['change'], ipAddr='localhost', port=8889)

これを送信すると、Kivy はボタンのラベルを変更します。また、別の端末でリッスン ポートを設定すると (スクリプトで出力ポートを編集すると)、Kivy から送信されたメッセージが表示されます。このシンプルなアプリを携帯電話で試してみると、メッセージを送信することしかできず、受信できないようです。私は何を間違っていますか?

ありがとう

4

1 に答える 1