【发布时间】:2019-06-02 20:03:41
【问题描述】:
我的 kivy 代码必须将小部件从 A 点平滑地线性移动到 B 点,并通过以太网电缆接收 UDP 数据包。现在,小部件从 A 平滑移动到 C(AB 线之间的 C),然后停止接收数据(可能是 0.5 到 1 秒),然后小部件再次移动。 因此,运动不顺畅。知道如何解决这个问题吗? 我正在使用 python 中的套接字模块进行数据接收。
我什至尝试过线程编程。它没有帮助,同样的问题。
class DemoCreator(AnchorLayout):
ev_status = NumericProperty(None) # get ev status(UDP packet)
def receive_ev_status(self):
r = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
r.bind(('', 5555))
prev_data = 0
data, _ = r.recvfrom(1024)
if not data:
data = prev_data
return int.from_bytes(data, 'little')
def update_ev_status(self, dt):
self.ev_status = self.receive_ev_status()
class DemoApp(App):
def build(self):
hmi = DemoCreator()
hmi.map_box.host_car.start((450, 0)
Clock.schedule_interval(hmi.update_ev_status, 0.5)
Clock.schedule_interval(hmi.map_box.update_car, 1 / 60)
return hmi
if __name__ == '__main__':
DemoApp().run()
如何在不影响图形的情况下使用 kivy 应用程序的端口接收数据?
【问题讨论】:
-
为此使用线程是一个合适的解决方案。无论您以前尝试过什么,都可能在某种程度上是错误的。
-
@inclement 你能看看我的代码吗?
-
@inclement 你能告诉我关于 kivy 线程的任何资源吗?
标签: python python-3.x sockets kivy