c - 蓝牙与 Python 和 Arduino (HC-06)



我正在尝试将信息从我的Arduino发送到Python。我发送的信息是 16 个字符的字符串,问题是我没有一次收到所有数据。

Arduino 代码:

void setup(){
  BTserial.begin(9600);
}
void loop() {
  BTserial.print("0123456789012345");
  delay(500);
}

蟒蛇代码:

import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect(("00:13:04:83:EC:45", 1))
while(True):
   print(sock.recv(10))

输出的结果是:

b'0'
b'123456789'
b'012345'

我想要的输出是:

b'0123456789012345'

0123456789012345

感谢您的任何回答。

我有临时的非常大规模的方法来修复它,但如果这可能还有其他方法让我知道

string = ""
final = ""
num = 0
while(True):
   string = sock.recv(4096)
   if str(string) == "b'$'":
      num=1
   elif num == 1:
      final+=str(string)
      num = 2
   elif num == 2:
      final += str(string)
      final = final.replace(("b"), "")
      final = final.replace(("'"), "")
      print(final)
      final = ""
      num == 0

将消息分隔符附加到 arduino 输出序列;您的选择,但""会很好。创建一个 python 生成器函数,从蓝牙流中读取输入字符,将它们组装到缓冲区中。在收到消息分隔符字符时生成整个缓冲区,因此调用生成器的函数会阻塞,直到整个消息可用。

最新更新