簡體   English   中英

藍牙服務器收到錯誤的文本數據 RFCOMM

[英]Bluetooth server received wrong text data 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'屏幕截圖

PyCharm 截圖

我的文本數據前面的b符號是什么意思? 我如何只能打印我的字符串?

基本上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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM