Serial.println()定义在哪里..?我可以看到它的源代码吗?

时间:2014-05-04 09:29:18

标签: c++ c arduino arduino-uno

我只是在寻找如何通过串口从arduino发送/写日期到PC。相反。

在花了这么多时间后,我几乎没有问过问题,也无法自己解决。 我希望你们能指导我。

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

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

第三有extern HardwareSerial Serial等代码; 那么这个Serial的定义在哪里?

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

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

1 个答案:

答案 0 :(得分:1)

如您所知编译草图,您可以选择Arduino Board和插入的COM端口。因此,Board从那里知道将数据发送到何处。在USB端口的外部,您可以使用数字引脚0和1在兆端口上工作。因此,其中一个引脚用于传输数据(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”被char按char加入环形缓冲区。如果他在PC上发送文本串行监视器而不是清空其内容,则分别通过USB电缆将内容发送到终端程序(串行监视器)。如果您再次接收数据,则再次填充一个环形缓冲区(接收环形缓冲区)

有关详细信息,建议您阅读:
http://arduino.cc/de/Reference/Serial