我在Python 3上创建了简单的蓝牙RFCOMM服务器
这是我的代码:
import bluetooth
class Bluetooth:
def __init__(self, port, backlog, size):
#backlog = number of users who can connect to socket at the same time
#size = message size
s = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
s.bind(("", port)) #(mac addres, port)
s.listen(backlog)
print("Server is active, waiting for connection!")
while True:
client, clientInfo = s.accept()
print("Connected with :", clientInfo)
try:
while True:
data = client.recv(size)
if data:
print(data)
except:
print("Closing socket")
client.close()
print("Waiting for connection!")
s.close()
print("Server closed!")
当我从Android设备应用程序发送数据时,如BlueTerm,BlueTerm2,蓝牙终端(...),我从PyCharm获取b'my string'
屏幕截图
我的文字数据前面的b
符号是什么意思?
我怎么只能打印我的字符串?
答案 0 :(得分:0)
基本上 client.recv(N)
等待 N 个字节的数据被发送。所以,最终你得到的是字节字符串(而不是utf-8或ascii等格式的字符串)。
回答数据前面的问题 b
指定它是字节串类型。
为了将字节字符串转换为字符串,您可以使用
byte_data = client.recv(size)
data = byte_data.encode('utf-8') # to encode data in utf-8 format