Python Raspberry Pi和Windows之间的蓝牙串行连接在短时间后超时10次

Python Raspberry Pi和Windows之间的蓝牙串行连接在短时间后超时10次,python,windows,bluetooth,uart,Python,Windows,Bluetooth,Uart,我想在带有集成蓝牙模块的Raspberry Pi 3和Windows 10机器之间设置串行蓝牙通信。raspi是服务器,运行python脚本,处理连接和数据传输。我已经全部设置好了,在互联网上学习了几个教程,在服务器端的效果非常好。我已经在我的android手机上用串行终端测试了服务器,它按预期工作:所有消息都正确传输,并且只要我想,它就保持连接。另一方面,用我的windows机器进行测试造成了很多问题。我已经解决了大部分问题,现在我可以通过串行终端将我的windows机器连接到raspi。我现

我想在带有集成蓝牙模块的Raspberry Pi 3和Windows 10机器之间设置串行蓝牙通信。raspi是服务器,运行python脚本,处理连接和数据传输。我已经全部设置好了,在互联网上学习了几个教程,在服务器端的效果非常好。我已经在我的android手机上用串行终端测试了服务器,它按预期工作:所有消息都正确传输,并且只要我想,它就保持连接。另一方面,用我的windows机器进行测试造成了很多问题。我已经解决了大部分问题,现在我可以通过串行终端将我的windows机器连接到raspi。我现在的问题是,过了一会儿,连接就断了,通常在10到40秒后,我找不到解决方法。windows上的错误消息是:无法打开COM4,raspi上的错误消息是:bluetooth.btcommon.bluetooth错误:[Errno 110]连接超时。 这是我的python脚本,id,这实际上是问题所在:

导入串行、蓝牙、子流程,选择 serialPort0=serial.serial 端口='/dev/serial0', 波特率=115200, 奇偶校验=串行。奇偶校验\u无, 停止位=串行。停止位\u一, bytesize=serial.EIGHTBITS, 超时=1 服务器\u sock=bluetooth.BluetoothSocketbluetooth.RFCOMM 服务器\u sock.bind、bluetooth.PORT\u任意 服务器\u sock.listen1 端口=服务器\u sock.getsockname uuid=94f39d29-7d6d-437d-973b-fba39e49d4ee bluetooth.com\u serviceserver\u sock,bluetoth\u服务器,服务id=uuid, 服务类=[uuid,蓝牙.串行端口类], 配置文件=[bluetooth.SERIAL\u PORT\u PROFILE], 协议=[bluetooth.OBEX_UUID] 打印等待RFCOMM通道上的连接,端口[1],地址,端口[0] client\u sock,client\u info=server\u sock.accept 打印已接受的来自的连接,客户端信息 客户端\u sock.setblocking0 尽管如此: 如果不是serialPort0.isOpen: 引发异常串行端口意外关闭 打破 准备就绪=选择。选择[客户端],[],0.5 如果准备就绪[0]: blu_data=client_sock.recv4096 如果不是blu_数据: 打破 serialPort0.writeblu_数据 ser_data=serialPort0.readline.decodeutf-8 客户端\u sock.sendser\u数据 客户端关闭 服务器\u sock.close 它从串行端口和蓝牙串行端口读取数据,并分别发送到另一个端口。
我正处在这样一个时刻,我不知道还有什么可以尝试,我真的很感谢你的帮助。提前感谢您。

将指向您关于超时的描述

/etc/bluetooth/main.conf

蓝牙配置文件

您需要取消对pairabletimeout=0的注释,这将防止超时问题

您可能想查看Raspberry Bluetooth配置的最新答案以了解详细信息


从不我重复一遍,永远不要使用vCOM进行蓝牙通信。使用蓝牙API代替任何一个:本机或WinRT。感谢您的回答,但不幸的是,这不起作用。我需要一个vCOM解决方案,因为我有一个应用程序,我想在windows端进行通信,该应用程序需要一个COM端口进行串行通信。另外,它不是我的应用程序,所以我不能更改它。然后使用串行端口配置文件作为服务UUID,而不是自定义UUID。我必须承认,我在这方面有点迷茫。我在哪里找到UUID,我搜索了很多,找到了这个:00001101-0000-1000-8000-00805f9b34fb,但是有了这个,连接仍然失败,几秒钟后。有很多事情可能会中断连接:省电,vCOM驱动程序中的错误。如果不使用Bluetooth API,就不可能说出什么是错误的。所以,使用蓝牙API编写测试应用程序,看看会发生什么。然后你就可以发现什么是错误的。vCOM和蓝牙是最糟糕的主意。一旦您发现问题所在并获得正确的断开原因代码,就可以理解vCOM断开连接的原因。