3

我正在尝试通过串行连接与来自 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

如果我更改它,例如发送“涂鸦”,我会得到:c:b:0 c:Sb:1010011 c:
b:1010 c:ºb:10111010 c::b:111010 c:ªb:10101010 c:乙:10

如果格式不正确,则在二进制文件末尾和下一个 c: 之间有一个换行符,并且在 doodle 中间有一个换行符作为字符(二进制文件读取 1010)。

我猜这些位被奇怪地切断了,但我不知道为什么。

4

1 回答 1

1

出现乱码消息的最常见原因是未在任一侧设置正确(相同)的波特率

您是否编辑过 /etc/inittab 以阻止它重新生成 tty?(pi)

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
于 2013-05-22T16:18:56.073 回答