Arduino Programlamasında Serial.readBytesUntil() İşlevi

Arduino Programlamasinda Serial Readbytesuntil Islevi



Arduino ile programlama söz konusu olduğunda, giriş ve çıkışı değiştirmek için kullanabileceğiniz birçok işlev vardır. Bir ana Arduino işlevi Serial.readBytesUntil() , belirli bir karakter bulunana kadar bir akıştan veri okumanıza izin verir. Bu işlev, gerekli verileri bulana kadar seri cihazlardan veri okumaya yardımcı olur.

Bu yazı, Serial.readBytesUntil() işlevini derinlemesine derler. Ne olduğunu, nasıl çalıştığını tartışacağız ve Arduino kodunda nasıl kullanılacağını açıklayan Arduino kodunu ele alacağız.

Serial.readBytesUntil()

Serial.readBytesUntil() işlevi, Arduino Serial sınıfının bir parçasıdır. Bu işlev, belirli bir karakter veya maksimum bayt sayısı bulana kadar bir akıştan veri okur. Karakter veya maksimum bayt sayısı bulunduğunda, işlev okumayı durdurur ve okuduğu verileri döndürür.







Serial.readBytesUntil() işlevi, aşağıdaki koşullar karşılandığında sona erer:



  • İşlev bir sonlandırıcı karakteri algıladığında
  • Tanımlanan tampon uzunluğuna ulaşıldı
  • Ayarlanan süre geçti veya Zaman aşımı

Bu işlev, sonlandırıcı karakterini döndürmez, yalnızca sonlandırıcıdan önceki son karaktere kadar olan verileri döndürür. Bu işlev tarafından 0 döndürüldüğünde, geçerli veri bulunmadığı anlamına gelir.



Sözdizimi

Serial.readBytesUntil() işlevi aşağıdaki sözdizimine sahiptir:





Seri. readBytesUntil ( karakter sonlandırıcı, karakter * tampon, size_t uzunluk ) ;

parametreler

Serial.readBytesUntil() işlevinin parametreleri aşağıdadır:

  • Terminatör Karakteri: İşlevin okumayı durduracağı karakter.
  • tampon: Tamponda okunan seri veri şudur: İzin verilen veri türü, bir karakter veya bayt dizisidir.
  • uzunluk: Okunacak maksimum bayt sayısı. İzin verilen veri türü int .

Geri dönmek

Arabelleğe yerleştirilen bayt sayısı.



notlar: Dönüş verilerinde sonlandırıcı karakter, veri akışından Serial.readBytesUntil() işlevi tarafından atılır.

Örnek Arduino Kodu

Aşağıdaki Arduino kodunun kullanımını açıklayın Serial.readBytesUntil() işlev:

geçersiz kurmak ( ) {
Seri. başlamak ( 9600 ) ; // Seri bağlantıyı baud hızı 9600 ile başlat
}

geçersiz döngü ( ) {
bayt arabelleği [ 5 ] ; // Gelen verileri depolamak için bir bayt dizisi tanımlayın
int bayt sayısı = Seri. readBytesUntil ( ' \N ' arabellek, 5 ) ; // Yeni satır karakteriyle karşılaşılıncaya kadar seri bağlantıdan gelen verileri oku

eğer ( bayt sayısı > 0 ) { // Herhangi bir baytın okunup okunmadığını kontrol edin
Seri. Yazdır ( 'Alınan Karakter: ' ) ;
Seri. yazmak ( arabellek, bayt sayısı ) ; // Alınan verileri seri monitöre yazdır
Seri. yazdır ( ) ;
}
}

setup() işlevinde baud hızı seri iletişim kuracaktır.

loop() işlevinde, önce adında bir bayt dizisi tanımlarız. 'tampon' . Bu dizi, seri bağlantıdan okunan gelen verileri depolamak için kullanılacaktır.

Sonra, biz diyoruz Serial.readBytesUntil() seri bağlantıdan gelen verileri bir satırsonu karakteriyle ('\n') karşılaşana kadar okuyan işlev. Bir sonraki argüman, bir seferde en fazla 5 bayt veri alacak arabelleğin uzunluğudur.

Döndürülen bayt, 'Sayı Bayt' değişken. Alınan verinin tampon uzunluğundan büyük olması durumunda, veri sonlandırılacak ve bir sonraki veri akışında gönderilecektir.

Çıktı

Çözüm

bu Serial.readBytesUntil() Arduino programlamadaki işlev, belirli bir sonlandırıcı karakter alınana kadar bir seri giriş akışından bayt okur. İşlev, okunan toplam baytı verir ve bunları sağlanan bir arabellekte saklar. Serial.readBytesUntil() İşlevi ile ilgili daha fazla bilgi almak için makaleyi okuyun.