【问题标题】:Bluetooth server received wrong text data RFCOMM蓝牙服务器接收到错误的文本数据 RFCOMM
【发布时间】:2017-11-06 19:13:09
【问题描述】:

我在 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!")

当我从 BlueTerm、BlueTerm2、蓝牙终端 (...) 等 Android 设备应用程序发送数据时,我会收到来自 PyCharm 的 b'my string' 屏幕截图

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

【问题讨论】:

标签: python string bluetooth server rfcomm


【解决方案1】:

基本上client.recv(N) 等待发送 N 个字节的数据。所以,最后你得到的是 byte string(而不是 utf-8 或 ascii 等中的字符串)。

回答数据前面的问题b指定它是字节字符串类型。

为了将字节字符串转换为可以使用的字符串

byte_data = client.recv(size)
data = byte_data.encode('utf-8') # to encode data in utf-8 format

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 2014-04-27
    • 2015-10-25
    • 1970-01-01
    • 2012-06-22
    • 2010-12-29
    • 1970-01-01
    • 2013-01-08
    • 2018-01-01
    相关资源
    最近更新 更多