首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在跨平台的Windows/Android应用程序中使用BLE?

在跨平台的Windows/Android应用程序中使用BLE?
EN

Stack Overflow用户
提问于 2021-06-24 14:26:25
回答 1查看 1K关注 0票数 1

我正在与Kivy开发一个跨平台应用程序(针对Windows和Android目标),我需要使用蓝牙低能(用于与ESP32 BLE服务器通信)。我试着使用but来处理BLE连接,但是导入made模块使我的应用程序崩溃了。我使用threading.Thread来分割BLE和Kivy应用程序,但是我仍然有一个问题,因为我必须在我的主要python文件中同时导入Kivy和BLE模块。

我的主要应用程序:

代码语言:javascript
运行
复制
# coding: UTF-8
#!/usr/bin/python3
import threading
import asyncio
import time
from queue import Queue
from interface_kivy import MainApp # Python file with the Kivy import
from ble_kivy import ble_kivy_interface # Python file with the Bleak import

async def main():
    kivy_thread = threading.Thread(group=None, target=MainApp().run(), name='Service kivy IHM')
    kivy_thread.daemon = True
    kivy_thread.start()
    
    my_queue = MainApp().getIHMqueue()
    print(f"{my_queue}")
    kivy_thread.join()
        

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

from ble_kivy import ble_kivy_interface 时的输出注释:

代码语言:javascript
运行
复制
[INFO   ] [Logger      ] Record log in C:\Users\Fabien\.kivy\logs\kivy_21-06-24_42.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "c:\_dev\venv38\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.8.10 (tags/v3.8.10:3d8993a, May  3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "c:\_dev\venv38\Scripts\python.exe"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.6.0 - Build 27.20.100.9565'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) Iris(R) Xe Graphics'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 6
[INFO   ] [GL          ] Shading version <b'4.60 - Build 27.20.100.9565'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available
[INFO   ] [Base        ] Leaving application in progress...
<queue.Queue object at 0x000001F800D45430>

from ble_kivy import ble_kivy_interface 不是时的输出注释:

代码语言:javascript
运行
复制
[INFO   ] [Logger      ] Record log in C:\Users\Fabien\.kivy\logs\kivy_21-06-24_41.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "c:\_dev\venv38\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.8.10 (tags/v3.8.10:3d8993a, May  3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "c:\_dev\venv38\Scripts\python.exe"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - TypeError: __import__() takes at least 1 argument (0 given)
  File "c:\_dev\venv38\lib\site-packages\kivy\core\__init__.py", line 58, in core_select_lib
    mod = __import__(name='{2}.{0}.{1}'.format(

[CRITICAL] [App         ] Unable to get a Window, abort.

我到处看到(问题476176六八一六)人们正面临着类似的问题,但是这些github问题是一年前提出的,我相信事情可能已经改变了。

有办法解决吗?如果没有,是否有一种同时为Win和Android工作的替代方案,或者我将不得不使用不同的框架?

EN

回答 1

Stack Overflow用户

发布于 2021-12-24 07:50:31

黯淡的≥0.13.0现在正式支持:

  • python-for-android,Kivy的安卓后端。
  • ≥10.11通过苹果的核心蓝牙API。

因此,萧瑟现在正式支持Kivy在所有值得发推文的移动平台上。在examples/kivy/中可以找到一些例子。

荒凉目前并不正式支持BeeWare (例如,Toga)。如果您在手机上需要Python上的蓝牙低能(BLE),那么您现在只能使用Kivy了。(当BeeWare官方支持下降时,请编辑这个答案!)

赞美是暗淡的,因为它使不可能的港口成为可能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68117667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档