A. *_*gna 11 python bluetooth python-3.x
Python 3.3附带了对蓝牙套接字的原生支持.不幸的是,这不是太有据可查的,但(只有一个中提到的它的文档).
谷歌搜索有一篇关于实现客户端的博客文章,但我找不到有关创建服务器的任何信息.
更具体地说,如何设置用户友好名称并宣传服务.
所以,像
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)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Fel*_*ipe 11
坏消息:Python似乎不支持你想要开箱即用的东西.(至少在socketmodule.c中没有).
我见过的大多数python/bluetooth用户pybluez虽然自2009年以来没有更新过.
好消息:我浏览了他们的源代码(用于Linux连接),并找到了广告服务的相关位.大多数代码基本上都是从python 2.2版本中复制粘贴的socketmodule.c.
pybluez确实为socket对象定义了一些额外的功能来实现所有这些蓝牙功能.它不会太低级,而是依赖于此BlueZ.据我所知,它基本上需要python对象并创建期望的数据结构,BlueZ并且只是调用它.如果你不想/不能使用pybluez,你将不得不以某种方式实现这个缺少的功能.我想你可以用c-types做到这一点.广告服务的相关部分在 btmodule.c,第2562-2642行.
源代码中有一个python-3分支pybluez,虽然我不知道它是否有效.
如果您决定使用pybluez,请从他们的来源获取一个示例
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 ],
)
Run Code Online (Sandbox Code Playgroud)
随着谷歌代码关闭,代码也可以在github上找到.
| 归档时间: |
|
| 查看次数: |
8473 次 |
| 最近记录: |