У меня есть клиент Bluetooth на Android, который должен подключиться к моему компьютеру по RFCOMM и использовать UUID 00001101-0000-1000-8000-00805F9B34FB
Используется библиотека PyBluez, а также Python 2.6. Я использовал следующий код из PyBluez Documentation
from bluetooth import *
server_sock=BluetoothSocket( RFCOMM )
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]
uuid = "00001101-0000-1000-8000-00805F9B34FB"
advertise_service( server_sock, "SampleServer",
service_id = uuid,
service_classes = [ uuid, SERIAL_PORT_CLASS ],
profiles = [ SERIAL_PORT_PROFILE ],
)
print "Waiting for connection on RFCOMM channel %d" % port
client_sock, client_info = server_sock.accept()
print "Accepted connection from ", client_info
try:
while True:
data = client_sock.recv(1024)
if len(data) == 0: break
print "received [%s]" % data
except IOError:
pass
print "disconnected"
client_sock.close()
server_sock.close()
print "all done"
Отлично работает под Windows 7.
Но у меня нет реакции с другим компьютером на Windows XP, т. Е. Мой код остается в строке «Ожидание подключения по каналу RFCOMM». Мой Bluetooth-клиент предупреждает, что он подключен.
Эта конфигурация Bluetooth на компьютере с Windows XP позволяет мне настроить COM-порт для последовательной связи с Bluetooth. Если я прослушиваю этот настроенный COM-порт, я могу видеть свои данные с клиента Bluetooth.
Я предпочитаю, чтобы код работал на любом компьютере Windows, и я не хочу настраивать виртуальный COM-порт на этих компьютерах. Поэтому я хотел бы, чтобы вышеуказанная программа также работала с компьютером с Windows XP.
Что мне не хватает? Как будто компьютер под управлением Windows XP не передает данные Bluetooth в мою программу, даже если я отключаю возможность воспроизведения данных через виртуальный последовательный порт.
Кажется, UUID, который я использую, хорошо известен, но я должен использовать его, чтобы моя программа была совместима с другой конкретной платформой.
Стек Bluetooth на компьютере под управлением Windows 7 - от Atheros Communications, а стек на компьютере под управлением Windows XP - от Widcomm.