Λειτουργία Serial.readBytesUntil() στον προγραμματισμό Arduino

Leitourgia Serial Readbytesuntil Ston Programmatismo Arduino



Όσον αφορά τον προγραμματισμό με το Arduino, υπάρχουν πολλές λειτουργίες που μπορείτε να χρησιμοποιήσετε για να χειριστείτε την είσοδο και την έξοδο. Μια κύρια λειτουργία του Arduino είναι Serial.readBytesUntil() , το οποίο σας επιτρέπει να διαβάζετε δεδομένα από μια ροή μέχρι να βρεθεί ένας συγκεκριμένος χαρακτήρας. Αυτή η λειτουργία βοηθά στην ανάγνωση δεδομένων από σειριακές συσκευές μέχρι να βρούμε τα απαιτούμενα δεδομένα.

Αυτή η εγγραφή μεταγλωττίζει τη συνάρτηση Serial.readBytesUntil() σε βάθος. Θα συζητήσουμε τι είναι, πώς λειτουργεί και θα καλύψουμε τον κώδικα Arduino που εξηγεί πώς να τον χρησιμοποιήσετε στον κώδικα Arduino.

Serial.readBytesUntil()

Η συνάρτηση Serial.readBytesUntil() είναι μέρος της κλάσης Arduino Serial. Αυτή η συνάρτηση διαβάζει δεδομένα από μια ροή μέχρι να βρει έναν συγκεκριμένο χαρακτήρα ή έναν μέγιστο αριθμό byte. Μόλις βρεθεί ο χαρακτήρας ή ο μέγιστος αριθμός byte, η συνάρτηση σταματά την ανάγνωση και επιστρέφει τα δεδομένα που έχει διαβάσει.







Η συνάρτηση Serial.readBytesUntil() τερματίζεται όποτε πληρούνται οι ακόλουθες προϋποθέσεις:



  • Όταν η συνάρτηση ανιχνεύει έναν χαρακτήρα τερματισμού
  • Συμπληρώνεται το καθορισμένο μήκος προσωρινής αποθήκευσης
  • Ο καθορισμένος χρόνος έχει παρέλθει ή λήγει

Αυτή η συνάρτηση δεν επιστρέφει τον χαρακτήρα τερματισμού, επιστρέφει μόνο δεδομένα μέχρι τον τελευταίο χαρακτήρα πριν από τον τερματιστή. Όταν το 0 επιστρέφεται από αυτή τη συνάρτηση, σημαίνει ότι δεν βρέθηκαν έγκυρα δεδομένα.



Σύνταξη

Η συνάρτηση Serial.readBytesUntil() έχει την ακόλουθη σύνταξη:





Κατα συρροη. readBytesUntil ( απανθρακώνω τελειωτής, απανθρακώνω * ρυθμιστής, μέγεθος_t μήκος ) ;

Παράμετροι

Ακολουθούν οι παράμετροι της συνάρτησης Serial.readBytesUntil():

  • Χαρακτήρας Terminator: Ο χαρακτήρας στον οποίο η συνάρτηση θα σταματήσει να διαβάζει.
  • ρυθμιστής: Στο buffer τα σειριακά δεδομένα ανάγνωσης είναι Ο επιτρεπόμενος τύπος δεδομένων είναι ένας πίνακας χαρακτήρων ή byte.
  • μήκος: Ο μέγιστος αριθμός byte προς ανάγνωση. Ο επιτρεπόμενος τύπος δεδομένων είναι ενθ .

ΕΠΙΣΤΡΟΦΗ

Ο αριθμός των byte που τοποθετούνται στο buffer.



Σημειώσεις: Σε δεδομένα επιστροφής, ο χαρακτήρας τερματισμού απορρίπτεται από τη συνάρτηση Serial.readBytesUntil() από τη ροή δεδομένων.

Παράδειγμα κώδικα Arduino

Ακολουθώντας τον κώδικα Arduino εξηγήστε τη χρήση του Serial.readBytesUntil() λειτουργία:

κενός εγκατάσταση ( ) {
Κατα συρροη. αρχίζουν ( 9600 ) ; // Εκκινήστε τη σειριακή σύνδεση με ρυθμό baud 9600
}

κενός βρόχος ( ) {
byte buffer [ 5 ] ; // Ορίστε έναν πίνακα byte για την αποθήκευση των εισερχόμενων δεδομένων
ενθ numBytes = Κατα συρροη. readBytesUntil ( ' \n ' , buffer, 5 ) ; // Διαβάστε τα εισερχόμενα δεδομένα από τη σειριακή σύνδεση μέχρι να εμφανιστεί χαρακτήρας νέας γραμμής

αν ( numBytes > 0 ) { // Ελέγξτε εάν διαβάστηκαν κάποια byte
Κατα συρροη. Τυπώνω ( 'Λήψη χαρακτήρα:' ) ;
Κατα συρροη. γράφω ( buffer, numBytes ) ; // Εκτυπώστε τα ληφθέντα δεδομένα στη σειριακή οθόνη
Κατα συρροη. println ( ) ;
}
}

Στη συνάρτηση setup() ο ρυθμός baud θα δημιουργήσει σειριακή επικοινωνία.

Στη συνάρτηση loop(), ορίζουμε πρώτα έναν πίνακα byte που ονομάζεται 'ρυθμιστής' . Αυτή η συστοιχία θα χρησιμοποιηθεί για την αποθήκευση των εισερχόμενων δεδομένων που διαβάζονται από τη σειριακή σύνδεση.

Στη συνέχεια, καλούμε το Serial.readBytesUntil() λειτουργία, η οποία διαβάζει τα εισερχόμενα δεδομένα από τη σειριακή σύνδεση μέχρι να συναντήσει έναν χαρακτήρα νέας γραμμής (‘\n’). Το επόμενο όρισμα είναι το μήκος του buffer που θα πάρει το πολύ 5 byte δεδομένων κάθε φορά.

Το επιστρεφόμενο byte αποθηκεύεται στο 'numBytes' μεταβλητός. Σε περίπτωση που τα δεδομένα που λαμβάνονται είναι μεγαλύτερα από το μήκος της προσωρινής μνήμης, τα δεδομένα θα τερματιστούν και θα σταλούν στην επόμενη ροή δεδομένων.

Παραγωγή

συμπέρασμα

ο Serial.readBytesUntil() Η λειτουργία στον προγραμματισμό Arduino διαβάζει byte από μια σειριακή ροή εισόδου έως ότου ληφθεί ένας καθορισμένος χαρακτήρας τερματισμού. Η συνάρτηση δίνει συνολικά byte που διαβάζονται και τα αποθηκεύει σε ένα παρεχόμενο buffer. Διαβάστε το άρθρο για να λάβετε περισσότερες πληροφορίες σχετικά με τη συνάρτηση Serial.readBytesUntil().