我正在一个项目中工作,我需要在Ubuntu中通过蓝牙向RFID读取器发送/读取数据。
我可以使用rfcomm connect
连接到阅读器,但现在我需要通过蓝牙向阅读器发送/接收二进制数据。寻找信息我没有找到在Ubuntu中这样做的方法。我发现如何使用minicom发送整个文件,但这不是我需要的,因为我需要从C / C ++ / Python发送/接收二进制数据。
有人知道如何通过蓝牙发送/接收二进制数据吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
回答我自己的问题,问题是我为我的RFID阅读器实施了一个过时的通信协议,它只是在它理解"时才响应。收到的消息。这意味着,使用过时协议编码的消息没有响应,程序似乎被阻止,但仅仅因为它没有响应。
因为它对某人有用,所以使用PyBluez通过蓝牙与CAEN RFID阅读器进行双向通信的代码是:
uuid = "00001101-0000-1000-8000-00805f9b34fb"
addr = "00:12:F3:20:D7:E7"
service_matches = find_service( uuid = uuid, address = addr )
if len(service_matches) == 0:
print("couldn't find the SampleServer service =(")
sys.exit(0)
first_match = service_matches[0]
port = first_match["port"]
host = first_match["host"]
sock=BluetoothSocket( RFCOMM )
sock.connect((host, port))
string_set_protocol = "\x80\x01\x00\x00\x00\x00\x53\x58\x00\x1C\x00\x00\x00\x08\x00\x01\x00\x74\x00\x00\x00\x0A\x00\x54\x00\x00\x00\x03"
sock.send(string_set_protocol)
received_str = sock.recv(1024)
received_binary = ":".join("{:02x}".format(ord(c)) for c in received_str) #Print each byte in hexadecimal separated by ":"
print(received_binary)
它完美无缺