У меня 3 устройства -> 2 * ПК и 1 Raspberry Pi. 2 ПК только для тестирования. 2PC = 2 ноутбука с Windows 10.
На Rasberry Pi у меня есть служба Bluetooth (Py 2.7, но 3.5 также должен работать, если print ()):
import bluetooth
try:
server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )
server_sock.bind(("",0))
server_sock.listen(100)
bluetooth.advertise_service( server_sock, "MyService",
service_classes = [ bluetooth.SERIAL_PORT_CLASS ],
profiles = [ bluetooth.SERIAL_PORT_PROFILE ] )
client_sock, client_info = server_sock.accept()
print("Accepted connection from ", client_info)
client_sock.send('Hello')
data = client_sock.recv(1024)
print("received [%s]" % data)
client_sock.close()
server_sock.close()
except:
client_sock.close()
server_sock.close()
На ноутбуках у меня есть клиент
import sys
from bluetooth import *
try:
service_matches = find_service(name="MyService",
uuid = SERIAL_PORT_CLASS )
print(service_matches)
if len(service_matches) == 0:
print('Found nothing')
sys.exit(0)
for i in service_matches:
print(i)
first_match = service_matches[0]
port = first_match["port"]
name = first_match["name"]
host = first_match["host"]
print "connecting to ", host
sock=BluetoothSocket( RFCOMM )
sock.connect((host, port))
data = sock.recv(1024)
sock.send("hello!!")
print(data)
sock.close()
except Exception as e:
print(e)
sock.close()
Все работает просто отлично, однако с одним ноутбуком я могу повторять процесс между прослушиванием и подключением навсегда. С другим Laptot я могу подключиться 2-3 раза, а затем получаю эту ошибку:
in <module>
uuid = SERIAL_PORT_CLASS )
File "C:\Python27\lib\site-packages\bluetooth\msbt.py", line 204, in find_service
addresses = discover_devices (lookup_names = False)
File "C:\Python27\lib\site-packages\bluetooth\msbt.py", line 15, in discover_devices
devices = bt.discover_devices(duration=duration, flush_cache=flush_cache)
IOError: No more data is available.
Это означает, что ошибка произошла внутри функции pybluez find_service. Интересно, что это происходит, когда он не может найти устройство. На другом ноутбуке, где эта ошибка никогда не срабатывает (всегда подключается), но нет устройств, всегда заканчивается:
печать («Ничего не найдено»)
Когда ошибка появляется после 2-3 успешных подключений, мне нужно перезапустить Raspberry pi, чтобы иметь возможность подключиться снова.
Спасибо за любую помощь