我正在尝试使用python3中的socket库从Raspberry Pi3连接到蓝牙GPS单元。我可以第一次连接并使数据流动,但如果我断开连接然后尝试重新连接,我会得到:
[Errno 16] Device or resource busy
我试着把连接放到一个子进程中,杀死它并重新创建它(最终目标),我得到了同样的错误。如果我关闭并重新启动测试程序,它连接没有问题。在
这是一个基于我发现的演示的测试脚本,打开连接关闭它然后尝试永远重新连接。当我尝试的时候,我得到了滴答滴答。。。直到我撞到^c杀死它
import io
import socket
from time import sleep
from bluetooth import *
import sys
class SocketIO(io.RawIOBase):
def __init__(self, sock):
self.sock = sock
def read(self, sz=-1):
if (sz == -1): sz=0x7FFFFFFF
return self.sock.recv(sz)
def seekable(self):
return False
# file: l2capclient.py
# desc: Demo L2CAP client for bluetooth module.
# $Id: l2capclient.py 524 2007-08-15 04:04:52Z albert $
if sys.version < '3':
input = raw_input
if len(sys.argv) < 2:
print("usage: l2capclient.py <addr>")
sys.exit(2)
bt_addr=sys.argv[1]
port = 1
print("trying to connect to %s on PSM 0x%X" % (bt_addr, port))
# Create the client socket
sock=BluetoothSocket( RFCOMM )
sock.connect((bt_addr, port))
fd = SocketIO(sock)
bno = 0
for line in fd:
print(line)
bno +=1
if bno >10:
break
sock.shutdown(socket.SHUT_RDWR)
sock.close()
print("closed")
sock=BluetoothSocket( RFCOMM )
not_connected = True
while not_connected:
try:
sock.connect((bt_addr, port))
not_connected = False
except:
sleep(1)
print("tick")
pass
fd = SocketIO(sock)
try:
for line in fd:
print(line)
except IOError:
pass
sock.close()
SocketIO类只是为了方便我一行一行地获取数据短袜收银机(1024)得到了相同的结果。在
我也有类似的问题。我使用python套接字和蓝牙RFCOMM套接字从我的PC向HC-05蓝牙模块发送数据。这里有一些事情似乎改善了使用蓝牙的调试情况。。。在
相关问题 更多 >
编程相关推荐