gpt4 book ai didi

python - 从电脑读取wav文件到arduino mega

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:55 25 4
gpt4 key购买 nike

我必须读取wav文件(我决定用python来做)并将字节从文件写入串行端口。这是我的 python 代码(进行了一些更改以修复字节传输/接收)

import serial, time
ser = serial.Serial(6, 19200, timeout=0,parity=serial.PARITY_EVEN, rtscts=1)
f = open("out.wav", "rb")
try:
n=0
while n!=7000:
f.read(1)
n+=1
while n != 7002:
byte = f.read(1)
ser.write(byte)
n+=1
finally:
print(byte)
time.sleep(1)
print(ser.read())
f.close()
ser.close()

这是我的 arduino 代码,用于确定我收到的内容

byte buf;
void setup(){
Serial.begin(19200);
}
void loop(){
if(Serial.available()>0){
buf=Serial.read();
Serial.flush();
Serial.println(buf);
}
}

我的主要问题是我从 python 和 arduino 获取不同的字节。我尝试了很多方法,但最后我还是来这里,因为我不知道如何解决它

最佳答案

串行端口通信提供了随每个字节一起传输奇偶校验位的选项。这可用于检测传输错误。

在 Arduino 上,您使用 Serial.begin(19200)。这会隐式配置为不使用奇偶校验位。

在运行Python的机器上,您使用serial.Serial(6, 19200, timeout=0,parity=serial.PARITY_EVEN, rtscts=1)。这明确地设置了偶校验位。

因此,Python 为每个字节发送偶校验位,而 arduino 预计根本不会接收奇偶校验位。这可能是您观察到接收到的字节与预期不同的原因。

在运行 Python 的机器上尝试一下:

serial.Serial(6, 19200, timeout=0)

这应该隐式配置为不使用奇偶校验位,就像您对 Arduino 所做的那样。

关于python - 从电脑读取wav文件到arduino mega,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24518978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com