我正在尝试通过串行连接与Raspberry Pi中的Arduino进行通信。我一直在尝试minicom和一个小Python程序来测试串行连接,然后将其从Arduino Mega回显到我PC上的串行监视器。由于某些原因,我发送给Arduino的内容在发送过程中出现了乱码,结果与我发送的内容完全不同。我使用Sparkfun逻辑电平转换器来保持5v和3.3v的分离。
下面是Pi上的Python:
import serial
import time
serialport = serial.Serial(port="/dev/ttyAMA0", baudrate=19200, bytesize=8, timeout=1)
serialport.write('POP')以下是Arduino上的代码:
void setup()
{
Serial.begin(19200);
Serial.println("connected to PC ");
Serial1.begin(19200);
}
void loop()
{
if(Serial1.available())
{
delay(1000);
byte inByte = Serial1.read();
char cByte = inByte;
Serial.write("c: ");
Serial.write(cByte);
Serial.write("b: ");
Serial.println(inByte, BIN);
}
if(Serial.available())
Serial1.write(Serial.read());
}我通过串行接口发送了'POP‘,但这是对我的串行监视器的输出: c: b: 0 c: b: 10101 c:}b: 1111101 c: b: 1
如果我改变它,例如发送'doodle‘,我会得到这个: c: b: 1010011 c: Sb: 0c:
b: 1010 c: ºb: 10111010 c: :b: 111010 c: ªb: 10101010 c: b: 10如果格式不正确,则在二进制文件的末尾和下一个c:之间有一个换行符,并且有一个换行符作为涂鸦中间的字符(其中二进制文件读取的是1010)。
我猜这些部分被奇怪地切断了,但我不知道为什么。
发布于 2013-05-23 00:18:56
乱码信息最常见的原因是没有在两端设置正确(相同)的波特率
您是否编辑了/etc/inittab以阻止它重新生成tty?(pi)
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100https://stackoverflow.com/questions/16696764
复制相似问题