蓝牙服务器收到错误的文本数据RFCOMM

时间:2017-06-05 22:27:50

标签: python string bluetooth server rfcomm

我在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'屏幕截图

Screenshot from PyCharm

我的文字数据前面的b符号是什么意思? 我怎么只能打印我的字符串?

1 个答案:

答案 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