2017-07-03 54 views
12

我一直在努力在运行Linux服务的Python脚本中使用运行Cordova混合应用程序的iPhone设备连接蓝牙服务器(使用Bluez或类似软件)。使我的python的蓝牙服务器对iOS可见

我使用的科尔多瓦 - 插件-BLE-中央对于后者,和前我给你下面的代码:

try: 
    server_sock = BluetoothSocket(RFCOMM) 

    server_sock.bind(("", 0)) 
    server_sock.listen(1) 
    port = server_sock.getsockname()[1] 

    uuid = "d507688e-5fa7-11e7-907b-a6006ad3dba0" 
    advertise_service(server_sock, "TestService", service_id=uuid, service_classes=[uuid]) 

    print("Waiting for connection on RFCOMM channel %d" % port) 

    client_sock, address = server_sock.accept() 
    print "Accepted connection from ", address 

    data = client_sock.recv(1024) 
    print "received [%s]" % data 

    client_sock.close() 
    server_sock.close() 
except Exception as e: 
    print 'ERROR: ' + str(e) 

的问题是,“扫描()”函数的结果iPhone给了我几个设备附近,但不是我的...在Android中,它的工作原理非常好!

我错过了什么?有没有办法让它发现?

在此先感谢

+2

同样如果你使用像LightBlue.app一个应用程序(可在AppStore上),你看到你的设备了吗?如果是,您可能想向我们展示Cordova代码而不是Python代码。 – Larme

+0

@Larme不,我看不到使用LightBlue的设备... – DanielY

+0

在下面链接的线程底部,有一个使用dbus将界面置于可发现模式的示例。我会测试这个,并写出一个答案,当我可以(如果它的作品);除非有人打我。只是想发布一条可能的路径:https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=111486 – jinksPadlock

回答

1

您不能。

iOS过滤蓝牙配置文件,并且不支持RFCOMM(又称蓝牙串行端口配置文件)。以下是苹果自己的iOS Supported Bluetooth profiles列表。

是的,这是一个耻辱,我们知道这是在电脑和Android完美的工作,但你不能这样做在iOS :)

+0

有没有办法创建蓝牙套接字,使用Python,iOS支持的类型? – DanielY

+0

Nop。我记得有一些设备可以插入音频并使用特定的框架提供蓝牙spp功能。尝试谷歌:) – tito