我试图将信息从我的Arduino发送到Python。我发送的信息是一个16个字符的字符串,问题是我没有一次收到所有数据。
Arduino代码:
void setup(){
BTserial.begin(9600);
}
void loop() {
BTserial.print("0123456789012345");
delay(500);
}
Python代码:
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
感谢您的回答。
答案 0 :(得分:0)
我有临时的非常方便的方法来修复它,但如果可以通过任何其他方式让我知道
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
答案 1 :(得分:0)
在arduino输出序列中附加消息分隔符;你的选择,但'\ n'会很好。创建一个python生成器函数,从蓝牙流中读取输入字符,将它们组装到缓冲区中。收到消息分隔符后,产生整个缓冲区,因此调用生成器的函数将阻塞,直到整个消息可用。