2

Kivy GUI モジュール (サーバー) と別の python モジュール (クライアント) の間で通信を実行しようとしています。しかし、これまでのところ、GUI の run() 関数と一緒に xml rpc サーバーを実行する際に問題があります。サーバーをスレッドで実行した後でも、まだその問題があります。私のコードを修正する方法、またはkivyと一緒にxml-rpcを行う方法について誰かが提案してくれることを願っています。

これが私のコードです:

import kivy

kivy.require('1.7.1')

from kivy.lang import Builder

from kivy.uix.gridlayout import GridLayout

from kivy.app import App

from threading import Thread

from kivy.clock import Clock

Builder.load_file('kivy_gui.kv')

class RoamClientInterface(GridLayout):

    """
    Sets up connection with XMLRPC server

    """

    move = False

    """
    driveForward() -> Moves robot forward
    """

    def driveForward(self):
        self.move = True

    """
    stop() -> stops robot from moving
    """

    def stop(self):
        self.move = False

    def returnBool(self):
        return self.move

class ClientInterface(App):

    def build(self):
        return RoamClientInterface()

    def sendCommands(dt):

        print "start"
        print ""
        from SimpleXMLRPCServer import SimpleXMLRPCServer
        server = SimpleXMLRPCServer(("localhost", 5000))
        print "initialize server"
        print ""
        server.register_instance(RoamClientInterface())
        print "register instance"
        print ""
        # while True:

        try:
            print "try handle request"
            print ""
            server.handle_request()
            print "print handle request"
            print ""
        except KeyboardInterrupt:
            import sys
            sys.exit()

if __name__ == '__main__':
    serverThread = Thread(target=sendCommands(4))
    serverThread.start()
   # Clock.schedule_once(sendCommands)
    ClientInterface().run()
4

1 に答える 1

2

私は問題を解決しなければなりません。上記のようにメイン関数に配置するのではなく、RoamClientInterface の内部に配置して機能させる必要があります。誰か助けが必要な場合は、より詳細な情報を提供できます (コードを表示)

于 2013-12-04T18:24:37.240 に答える