使用Python 3.3的蓝牙服务器
Python 3.3附带了对蓝牙套接字的本机支持。不幸的是,它还没有很好的文档记录(在文章中只有一次提到它) 谷歌搜索它是关于实现一个客户端,但我找不到任何关于创建服务器的信息 更具体地说,就是如何设置用户友好的名称和宣传服务 比如使用Python 3.3的蓝牙服务器,python,python-3.x,bluetooth,Python,Python 3.x,Bluetooth,Python 3.3附带了对蓝牙套接字的本机支持。不幸的是,它还没有很好的文档记录(在文章中只有一次提到它) 谷歌搜索它是关于实现一个客户端,但我找不到任何关于创建服务器的信息 更具体地说,就是如何设置用户友好的名称和宣传服务 比如 import socket serverSocket = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM,
import socket
serverSocket = socket.socket(socket.AF_BLUETOOTH,
socket.SOCK_STREAM,
socket.BTPROTO_RFCOMM)
serverSocket.setTimeout(1)
serverSocket.bind(("", 1))
serverSocket.listen(1)
something.advertise_service(something something)
有什么想法吗?坏消息:
Python似乎不支持您开箱即用的操作。(至少不在)
我见过的大多数python/bluetooth用户都在使用它,尽管它自2009年以来就没有更新过
好消息:
我浏览了他们的源代码(Linux连接),找到了广告服务的相关信息。大部分代码基本上都是从python 2.2版的socketmodule.c
复制粘贴的
pybluez
确实为socket
对象定义了一些附加功能,以实现所有这些蓝牙功能。它不会变得太低级,而是取决于它的性能。据我所知,它基本上接受python对象并创建BlueZ
所期望的数据结构,然后调用它。
如果你不想/不能使用pybluez
,你必须以某种方式实现这个缺失的功能。我想你可以用c型来做。服务广告的相关部分见第2562-2642行
pybluez
的源代码中有一个python-3分支,尽管我不知道它是否有效
如果您确实决定使用pybluez
,可以从
随着google代码的关闭,该代码也可以在github上找到。看起来它们基本上集成了pybluez。看看这些例子:“advertise_service”在socket模块和服务器套接字中都不存在,在python源代码中搜索“advertise”只找到三条不相关的注释。我遇到了同样的问题。我可以制作一个简单的服务器,但不能执行诸如广告服务之类的任务。如果您感兴趣,您可以在此处看到客户机-服务器应用程序的代码:@TJD,PyBluez是从PyAffix复制而来的,PyAffix又是从python2.2复制而来的。谢谢,我想我将不再使用pc作为从机,因为我需要使用py3。
server_sock=BluetoothSocket( RFCOMM )
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]
uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"
advertise_service(server_sock, "SampleServer",
service_id = uuid,
service_classes = [ uuid, SERIAL_PORT_CLASS ],
profiles = [ SERIAL_PORT_PROFILE ],
)