где определен Serial.println() ..? я могу увидеть исходный код для него?

Я просто ищу, как отправить/записать дату на компьютер через последовательный порт с arduino..наоборот.

У меня есть несколько вопросов, чтобы задать после того, как я потратил столько времени и не мог понять это сам. Я надеюсь, что вы, ребята, можете мне помочь.

Во-первых, я обнаружил, что могу использовать функцию Serial.println() для отправки некоторых данных, а затем на стороне ПК она просто проверяет и читает порт (/dev/tty ..). Но как этот процесс на самом деле работает под капотом? Итак, если вы используете serial.println(), он знает, где писать?

Во-вторых я также обнаружил, что это как-то связано с связью UART. Но внутри Hardware.cpp, я не смог найти вызов функции для UART.

Третий код типа extern HardwareSerial Serial; Тогда где определение этого Serial?

Четвёртое Кажется, есть кольцевой буфер для последовательного буфера. Итак, когда данные отправляются, что и кто заполняет данные в этот буфер внутри Hardware.cpp?

пожалуйста, простите мой глупый вопрос.. мне просто так любопытно об этом..


person denis_choe    schedule 04.05.2014    source источник


Ответы (1)


Как вы знаете, для компиляции скетча вам нужно выбрать плату Arduino и COM-порт, к которому она подключена. Таким образом, плата знает, куда отправлять данные. Внешний по отношению к USB-порту, который у вас есть, например, на mega с цифровыми контактами 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" помещается символ за символом в кольцевой буфер. если плата отправляет текст o Serial Monitor на ПК, чем я очищаю его содержимое, соответственно, отправляет его содержимое по кабелю USB в терминальную программу (Serial Monitor). Если вы получаете данные, вы снова заполняете кольцевой буфер (кольцевой буфер приема).

Для получения дополнительной информации я рекомендую вам прочитать:
http://arduino.cc/de/Reference/Serial

person naruto90    schedule 04.05.2014