פונקציית Serial.readBytesUntil() בתכנות Arduino

Pwnqzyyt Serial Readbytesuntil Btknwt Arduino



כשזה מגיע לתכנות עם Arduino, יש הרבה פונקציות שבהן אתה יכול להשתמש כדי לתפעל קלט ופלט. אחת הפונקציות העיקריות של Arduino היא Serial.readBytesUntil() , המאפשר לקרוא נתונים מזרם עד למציאת תו ספציפי. פונקציה זו מסייעת בקריאת נתונים ממכשירים טוריים עד שנמצא את הנתונים הנדרשים.

כתיבה זו מרכיבה את הפונקציה Serial.readBytesUntil() לעומק. נדון במה זה, איך זה עובד, ונכסה קוד Arduino שמסביר כיצד להשתמש בו בקוד Arduino.

Serial.readBytesUntil()

הפונקציה Serial.readBytesUntil() היא חלק מהמחלקה Arduino Serial. פונקציה זו קוראת נתונים מזרם עד שהיא מוצאת תו ספציפי או מספר מקסימלי של בתים. ברגע שנמצא התו או המספר המרבי של בתים, הפונקציה מפסיקה לקרוא ומחזירה את הנתונים שקראה.







הפונקציה Serial.readBytesUntil() מסתיימת בכל פעם שמתקיימים התנאים הבאים:



  • כאשר הפונקציה מזהה תו terminator
  • הגיע אורך המאגר המוגדר
  • הזמן שהוגדר חלף או הזמן נגמר

פונקציה זו לא מחזירה את תו המחסל, אלא רק מחזירה נתונים עד התו האחרון לפני המחסל. כאשר 0 מוחזר על ידי פונקציה זו, זה אומר שלא נמצא נתונים חוקיים.



תחביר

לפונקציה Serial.readBytesUntil() יש את התחביר הבא:





סידורי. readBytesUntil ( לְהַשְׁחִיר טרמינטור, לְהַשְׁחִיר * בַּלָם, size_t אורך ) ;

פרמטרים

להלן הפרמטרים של הפונקציה Serial.readBytesUntil():

  • דמות שליחות קטלנית: התו שהפונקציה תפסיק לקרוא בו.
  • בַּלָם: במאגר הנתונים הסידוריים הנקראים הם סוג הנתונים המותר הוא מערך של תווים או בתים.
  • אורך: המספר המרבי של בתים לקריאה. סוג הנתונים המותר הוא int .

לַחֲזוֹר

מספר הבתים המוצבים במאגר.



הערות: בנתונים חוזרים תו המחסל מושלך על ידי הפונקציה Serial.readBytesUntil() מזרם הנתונים.

קוד ארדואינו לדוגמה

בעקבות קוד Arduino מסבירים את השימוש ב Serial.readBytesUntil() פוּנקצִיָה:

בָּטֵל להכין ( ) {
סידורי. התחל ( 9600 ) ; // אתחל את החיבור הטורי עם קצב העברת העברת נתונים של 9600
}

בָּטֵל לוּלָאָה ( ) {
מאגר בתים [ 5 ] ; // הגדר מערך בתים לאחסון הנתונים הנכנסים
int numBytes = סידורי. readBytesUntil ( ' \n ' , חוצץ, 5 ) ; // קרא נתונים נכנסים מהחיבור הטורי עד שנתקל בתו חדש

אם ( numBytes > 0 ) { // בדוק אם בייטים כלשהם נקראו
סידורי. הדפס ( 'דמות שהתקבלה:' ) ;
סידורי. לִכתוֹב ( חיץ, numBytes ) ; // הדפס את הנתונים שהתקבלו לצג הטורי
סידורי. println ( ) ;
}
}

בפונקציה setup() קצב ה-baud יבסס תקשורת טורית.

בפונקציה loop() אנו מגדירים תחילה מערך בתים שנקרא 'בַּלָם' . מערך זה ישמש לאחסון הנתונים הנכנסים הנקראים מהחיבור הטורי.

לאחר מכן, אנו קוראים ל- Serial.readBytesUntil() פונקציה, שקוראת נתונים נכנסים מהחיבור הטורי עד שהוא נתקל בתו חדש ('\n'). הארגומנט הבא הוא אורך המאגר שייקח לכל היותר 5 בתים של נתונים בכל פעם.

הבית המוחזר מאוחסן ב- 'numBytes' מִשְׁתַנֶה. במקרה שהנתונים שהתקבלו גדולים מאורך המאגר הנתונים יסתיימו ויישלחו בזרם הנתונים הבא.

תְפוּקָה

סיכום

ה Serial.readBytesUntil() הפונקציה בתכנות Arduino קוראת בתים מזרם קלט טורי עד לקבלת תו קיום מוגדר. הפונקציה נותנת קריאה כוללת של בתים ומאחסנת אותם במאגר מסופק. קרא את המאמר כדי לקבל מידע נוסף הקשור לפונקציה Serial.readBytesUntil() .