2014-02-28 110 views
1

翻看代碼我看不到串行創建的位置。有一個Serial_類,但Serial似乎並不是由此構成的。當程序啓動時,您可以開始使用Serial,因爲它已經存在,不必從中創建新的對象。我在arduino代碼裏面查看,但是看到任何Serial可以是靜態成員的實際Serial類都是空的。任何人都知道它可能在哪裏創建?Arduino Serial創建在哪裏?

回答

1

好,連續被定義here

HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); 

和超過here

extern HardwareSerial Serial; 

HTH

+0

啊,好像是在硬件/ arduino/avr目錄中的情況,但不是在sam板的目錄中,我正在尋找。我想我最終發現它在variaht.h中,而不是在覈心這就是爲什麼我找不到它。儘管謝謝你的回答! –

1

Arduino的庫遵循你創建一個對象實例的這種不同尋常的模式。所述串行對象在HardwareSerial.cpp文件創建的,靠近端部是包含開關的用於各種硬件類型的質量的一部分:

in HardwareSerial.cpp 
// Preinstantiate Objects ////////////////////////////////////////////////////// 

那些行是可變串行定義這是創建對象的位置。

這對一些人很有幫助,因爲對象實例Serial只是神奇地存在。

這個庫總是包含在內核中,所以你的下一個問題應該是不要通過強制Serial這個浪費內存?答案是否定的,因爲如果你的代碼(.INO)沒有引用Serial,那麼鏈接器將從最終的二進制文件中刪除該對象。任何一行引用變量的行都會導致鏈接程序將這個預先實例化的對象保存在二進制文件中。