Hàm Serial.readBytesUntil() trong lập trình Arduino

Ham Serial Readbytesuntil Trong Lap Trinh Arduino



Khi nói đến lập trình với Arduino, có rất nhiều chức năng mà bạn có thể sử dụng để thao tác đầu vào và đầu ra. Một chức năng chính của Arduino là Serial.readBytesUntil() , cho phép bạn đọc dữ liệu từ một luồng cho đến khi tìm thấy một ký tự cụ thể. Chức năng này giúp đọc dữ liệu từ các thiết bị nối tiếp cho đến khi chúng tôi tìm thấy dữ liệu cần thiết.

Bản ghi này biên dịch hàm Serial.readBytesUntil() theo chiều sâu. Chúng ta sẽ thảo luận về nó là gì, nó hoạt động như thế nào và bao gồm mã Arduino giải thích cách sử dụng nó trong mã Arduino.

Serial.readBytesUntil()

Hàm Serial.readBytesUntil() là một phần của lớp Arduino Serial. Hàm này đọc dữ liệu từ một luồng cho đến khi tìm thấy một ký tự cụ thể hoặc số byte tối đa. Khi tìm thấy ký tự hoặc số byte tối đa, hàm sẽ dừng đọc và trả về dữ liệu mà nó đã đọc.







Hàm Serial.readBytesUntil() kết thúc bất cứ khi nào các điều kiện sau được đáp ứng:



  • Khi chức năng phát hiện ký tự kết thúc
  • Đã đạt đến độ dài bộ đệm đã xác định
  • Thời gian đã đặt đã hết hoặc Hết thời gian

Hàm này không trả về ký tự kết thúc mà chỉ trả về dữ liệu cho đến ký tự cuối cùng trước dấu kết thúc. Khi hàm này trả về 0, điều đó có nghĩa là không tìm thấy dữ liệu hợp lệ nào.



cú pháp

Hàm Serial.readBytesUntil() có cú pháp như sau:





Nối tiếp. đọcBytesUntil ( than Kẻ hủy diệt, than * đệm, size_t chiều dài ) ;

Thông số

Sau đây là các tham số của hàm Serial.readBytesUntil():

  • Nhân vật Kẻ hủy diệt: Ký tự mà hàm sẽ dừng đọc tại đó.
  • đệm: Trong bộ đệm, dữ liệu nối tiếp đã đọc là Kiểu dữ liệu được phép là một mảng char hoặc byte.
  • chiều dài: Số byte tối đa để đọc. Loại dữ liệu được phép là int .

Trở lại

Số byte được đặt trong bộ đệm.



Ghi chú: Trong dữ liệu trả về, ký tự kết thúc bị hàm Serial.readBytesUntil() loại bỏ khỏi luồng dữ liệu.

Mã Arduino ví dụ

Theo mã Arduino giải thích việc sử dụng Serial.readBytesUntil() chức năng:

khoảng trống cài đặt ( ) {
Nối tiếp. bắt đầu ( 9600 ) ; // Khởi tạo kết nối nối tiếp với tốc độ baud là 9600
}

khoảng trống vòng ( ) {
bộ đệm byte [ 5 ] ; // Xác định một mảng byte để lưu trữ dữ liệu đến
int sốByte = Nối tiếp. đọcBytesUntil ( ' \N ' , đệm, 5 ) ; // Đọc dữ liệu đến từ kết nối nối tiếp cho đến khi gặp ký tự xuống dòng

nếu như ( sốBytes > 0 ) { // Kiểm tra xem có byte nào đã được đọc chưa
Nối tiếp. in ( 'Nhân vật đã nhận:' ) ;
Nối tiếp. viết ( bộ đệm, numBytes ) ; // In dữ liệu nhận được ra màn hình nối tiếp
Nối tiếp. bản in ( ) ;
}
}

Trong hàm setup(), tốc độ truyền sẽ thiết lập giao tiếp nối tiếp.

Trong hàm loop(), đầu tiên chúng ta định nghĩa một mảng byte được gọi là 'đệm' . Mảng này sẽ được sử dụng để lưu trữ dữ liệu đến được đọc từ kết nối nối tiếp.

Tiếp theo, chúng tôi gọi Serial.readBytesUntil() đọc dữ liệu đến từ kết nối nối tiếp cho đến khi gặp ký tự xuống dòng (‘\n’). Đối số tiếp theo là độ dài của bộ đệm sẽ lấy tối đa 5 byte dữ liệu tại một thời điểm.

Byte trả về được lưu trữ trong 'numBytes' Biến đổi. Trong trường hợp nếu dữ liệu nhận được lớn hơn độ dài bộ đệm, dữ liệu sẽ bị kết thúc và sẽ được gửi trong luồng dữ liệu tiếp theo.

đầu ra

Phần kết luận

Các Serial.readBytesUntil() chức năng trong lập trình Arduino đọc byte từ luồng đầu vào nối tiếp cho đến khi nhận được ký tự kết thúc được chỉ định. Hàm cung cấp tổng số byte đã đọc và lưu trữ chúng trong bộ đệm được cung cấp. Đọc bài viết để biết thêm thông tin liên quan đến Hàm Serial.readBytesUntil().