Serial.print() ใช้ตัวแปรประเภทใด

บน Arduino ฉันต้องใช้ Serial.print() ภายในฟังก์ชันเช่น;

void loop()
{
    serial_send(any_type);
}

void serial_send(type message)
{
   Serial.print(message);
}

Serial.print สามารถยอมรับตัวแปรประเภทใดก็ได้ เช่น int, double หรือ String ฉันจะรับพฤติกรรมเดียวกันกับ serial_send ได้อย่างไร โดยไม่ต้องระบุประเภท


person bladekel    schedule 23.08.2019    source แหล่งที่มา
comment
ทำไมไม่ใช้ Google Serial.pring arduino และคลิกที่ หนึ่งใน ผลลัพธ์แรกเพื่อค้นหา?   -  person Tomáš Zato - Reinstate Monica    schedule 23.08.2019
comment
@ TomášZato ฉันคิดว่าประเด็นของคำถามที่นี่คือเพื่อทำความเข้าใจว่า เป็นไปได้ อย่างไรที่ฟังก์ชันเช่น Serial.print() สามารถยอมรับอาร์กิวเมนต์ประเภทใดก็ได้ - ฉันจินตนาการว่า OP อาจต้องการเขียนของเขา/เธอเอง ฟังก์ชั่นที่สามารถทำได้ทุกประเภท นี่เป็นคำถามที่ดี คำตอบสามารถพบได้ในซอร์สโค้ด แต่ OP อาจไม่รู้ว่าจะหาได้จากที่ไหน   -  person Caleb    schedule 23.08.2019
comment
@Caleb ขออภัยฉันเข้าใจผิดคำถาม   -  person Tomáš Zato - Reinstate Monica    schedule 23.08.2019


คำตอบ (2)


นี่คือสิ่งที่เทมเพลตมีไว้เพื่อ โดยใช้

template <typename T>
void serial_send(T message)
{
   Serial.print(message);
}

คุณสามารถโทร send_message ด้วยประเภทใดก็ได้ที่คุณต้องการ และตราบใดที่ print มีโอเวอร์โหลด มันก็จะใช้งานได้ หากไม่เป็นเช่นนั้น คุณจะได้รับข้อผิดพลาดสำหรับการไม่มีการโทรที่ตรงกันกับ print

person NathanOliver    schedule 23.08.2019

ไม่ใช่หนึ่ง Serial.print ชื่อฟังก์ชัน print ถูก 'โอเวอร์โหลด' สำหรับหลายฟังก์ชันที่มีพารามิเตอร์ต่างกัน ข้อความที่ตัดตอนมาจาก Print.h

    size_t print(const __FlashStringHelper *);
    size_t print(const String &);
    size_t print(const char[]);
    size_t print(char);
    size_t print(unsigned char, int = DEC);
    size_t print(int, int = DEC);
    size_t print(unsigned int, int = DEC);
    size_t print(long, int = DEC);
    size_t print(unsigned long, int = DEC);
    size_t print(double, int = 2);
    size_t print(const Printable&);

หากคุณต้องการรวมฟังก์ชัน Serial.print คุณสามารถใช้ฟังก์ชันเทมเพลตจากคำตอบของ NathanOliver คอมไพเลอร์จะสร้างฟังก์ชันตามเทมเพลตสำหรับพารามิเตอร์ทุกประเภทที่ใช้ในแบบร่างของคุณด้วยเทมเพลต

person Juraj    schedule 23.08.2019