通过Python Websocket发送GameController轴位置FastAPI和evdev

问题描述

如何以给定的频率通过WebSocket将游戏手柄轴坐标发送到我的Electron App前端?

python脚本和Electron应用程序在同一RaspBerry Pi 4上运行。WebSocket连接(FastAPI)本身运行良好,Electron应用程序不断从python脚本接收输入。我尝试了很多事情,但无法使两个不同的循环相互配合。

    import asyncio
    from fastapi import FastAPI,WebSocket
    from evdev import InputDevice,categorize,ecodes
    
    app = FastAPI()
    gamepad = InputDevice('/dev/input/event3')
    x = 0.0
    freq = 60 #frequency in Hz

    @app.websocket("/ws")
    async def websocket_endpoint(websocket: WebSocket):
        await websocket.accept()
        while True:
            await asyncio.sleep(1/freq)
            global x
            
            # what should be here
            # I kNow the nested loop is interfering with the WebSocket loop,but what to do?
            for event in gamepad.read_loop():
                if event.type == ecodes.EV_ABS:
                    x = event.value

            await websocket.send_json(x)

非常感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...