4

我只是在寻找如何通过串口从 arduino 向 pc 发送/写入日期。反之亦然。

在花了这么多时间之后,我几乎没有问题要问,而且我自己也想不通。我希望你们能指导我。

首先,我发现我可以使用Serial.println()函数发送一些数据,然后在 pc 端,它只是检查并读取端口(/dev/tty..)。但是,这个过程实际上是如何在幕后工作的呢?所以,如果你使用 serial.println() 它知道在哪里写?

其次,我还发现它与 UART 通信有关。但是,在Hardware.cpp文件中,我找不到任何对 UART 的函数调用。

第三是像 extern HardwareSerial Serial 这样的代码;那么这个Serial的定义在哪里呢?

第四,串行缓冲区似乎有环形缓冲区。那么,当发送数据时,是什么以及谁将数据填充到 Hardware.cpp 中的这个缓冲区中?

请原谅我愚蠢的问题..我对此很好奇..

4

1 回答 1

1

如您所知,要编译草图,您需要选择您的 Arduino 板和插入它的 COM 端口。因此,板从那里知道将数据发送到哪里。外部的 USB 端口,例如,数字引脚 0 和 1 在 mega 上。因此,其中一个引脚用于传输数据(TX),一个用于接收数据(RX)。

2和3)是的,它与UART有关,即我上面写的RX和TX线。
在我的例子中,USB 端口定义在这里:
C:\Program Files (x86)\Arduino\hardware\arduino\firmwares\atmegaxxu2
打印定义在这里:
C:\Program Files (x86)\Arduino\hardware\arduino\cores \arduino
并且有一些库文件,其中可能是 UART 的类定义

4) 例如,您调用 Serial.println("blabla"); 文本“blabla”被一个字符一个字符地推入一个环形缓冲区。如果他在 PC 上的串行监视器上发送文本,然后我清空其内容,则分别通过 USB 电缆将其内容发送到终端程序(串行监视器)。如果您收到数据,则再次填充环形缓冲区(接收环形缓冲区)

有关更多信息,我建议您阅读:
http ://arduino.cc/de/Reference/Serial

于 2014-05-04T09:59:34.820 回答