Bagaimana untuk mengosongkan Penampan Bersiri Arduino

Bagaimana Untuk Mengosongkan Penampan Bersiri Arduino



Arduino ialah platform elektronik yang mengambil arahan daripada pengguna dalam bentuk kod yang dikenali sebagai lakaran dan menjana output dengan sewajarnya. Untuk mengumpul arahan dan memprosesnya satu demi satu, Arduino menggunakan penimbal bersiri. Penampan bersiri Arduino menyimpan data masuk sehingga peranti bersedia untuk memprosesnya. Kadangkala kita perlu mengosongkan penimbal bersiri Arduino untuk mengelakkan gangguan dengan data masuk. Mari lihat ini dengan lebih terperinci.

Penampan Bersiri Arduino

Jadi, kita semua tahu Arduino berkomunikasi menggunakan protokol komunikasi bersiri yang dikenali sebagai USART. Ya, Arduino mempunyai beberapa protokol lain seperti SPI, I2C tetapi USART adalah protokol yang paling biasa dan kerap digunakan. Jika anda berminat untuk membaca ketiga-tiga protokol Arduino, klik di sini .







Penampan bersiri Arduino mengumpul aksara bersiri yang masuk dan menahannya sehingga mikropengawal boleh memprosesnya. Komunikasi bersiri ialah kaedah memindahkan data dari satu peranti ke peranti lain. Arduino menggunakan perkakasan USART pada papannya memasang setiap 8 bit menjadi bait. Kemudian simpan bait ini dalam penimbal bersiri, maksimum 64 bait boleh disimpan di dalam penimbal bersiri Arduino.



Kosongkan Penampan Bersiri Arduino

Penampan bersiri Arduino mempunyai ingatan terhad untuk menyimpan data sekiranya memori melimpah atau sejumlah besar data ada pada pin bersiri, kita perlu mengosongkan penimbal bersiri terlebih dahulu untuk menyimpan data masuk. Mari ketahui cara yang mungkin untuk mengosongkan penimbal bersiri Arduino.



Cara untuk Mengosongkan Penampan Bersiri Arduino

Untuk mengosongkan ruang penimbal bersiri supaya ia boleh dikemas kini dengan data baharu berikutan dua cara boleh membantu:





    • Kosongkan Penampan Bersiri menggunakan Fungsi Serial.flush().
    • Kosongkan Penampan Bersiri menggunakan Fungsi Serial.begin().

1: Kosongkan Penampan Bersiri menggunakan Fungsi Serial.flush().

Jadi, kaedah pertama yang boleh mengosongkan penimbal bersiri Arduino adalah menggunakan fungsi Serial.flush(). Fungsi ini tergolong dalam fungsi perpustakaan bersiri Arduino.

Serial.flush()

Fungsi Arduino Serial.flush() menunggu untuk data dihantar sepenuhnya. Daripada membuang data masuk, ia membenarkannya menunggu jadi sebaik sahaja data di dalam penimbal dihantar sepenuhnya maka penimbal Bersiri boleh menerima data baharu.



Catatan : Selepas menggunakan program Serial.flush() mungkin mengambil lebih banyak masa untuk melaksanakan dan mencetak output pada monitor bersiri. Buat masa ini kod Arduino menunggu sebaik sahaja semua data dihantar supaya ia boleh menyimpan data baharu di dalam ingatannya.

Sintaks

Bersiri.flush ( )

Parameter

Ia hanya memerlukan satu parameter.

bersiri: Objek port bersiri

Pulangan

Fungsi ini tidak mengembalikan apa-apa.

Contoh Kod

Berikut ialah kod yang ditulis tanpa menggunakan fungsi Serial.flush():

persediaan kosong ( ) {
Bersiri.mulakan ( 9600 ) ;
millis panjang yang tidak ditandatangani_FlushStart = millis ( ) ; /* Mulakan kod dengan menyimpan jam Arduino semasa masa */
Serial.println ( F ( 'Linuxhint.com/Arduino' ) ) ;
Serial.println ( F ( 'Linuxhint.com/RaspberryPi' ) ) ;
Serial.println ( F ( 'Linuxhint.com/Tutorial' ) ) ;
millis panjang yang tidak ditandatangani_FlushStop = millis ( ) ; /* semasa masa pada ketika ini */
Bersiri.cetak ( F ( 'Tanpa Fungsi Flush diperlukan' ) ) ;
Bersiri.cetak ( millis_FlushStop - millis_FlushStart ) ; /* Cetakan masa diambil oleh penimbal bersiri untuk mencetak data */
Serial.println ( F ( 'milisaat.' ) ) ;
}
gelung kosong ( ) {
}


Dalam kod di atas kami memulakan tiga rentetan berbeza dan memulakan kod dengan mengambil masa semasa daripada fungsi millis() dan menyimpannya ke dalam pembolehubah baharu. Sebaik sahaja data dicetak semula menggunakan fungsi millis() kami menghantar masa sekarang kepada pembolehubah baharu.

Sebaik sahaja kedua-dua masa diterima di dalam dua pembolehubah terdapat perbezaan akan memberi kita masa yang diambil oleh Arduino untuk mencetak tiga rentetan yang ditentukan dalam milisaat.


Dalam terminal keluaran ia boleh dilihat ia mengambil masa 9ms untuk mencetak rentetan yang ditentukan.


Sekarang dalam kod yang diberikan di bawah kita akan menggunakan fungsi Serial.flush() yang akan membenarkan semua rentetan lulus dan menunggu di sana sehingga penimbal bersiri menjadi jelas untuk menerima data seterusnya. Oleh itu, ia akan mengambil masa tambahan berbanding dengan mencetak data tanpa menggunakan Serial.flush().

persediaan kosong ( ) {
Bersiri.mulakan ( 9600 ) ;
millis panjang yang tidak ditandatangani_FlushStart = millis ( ) ; /* Mulakan kod dengan menyimpan jam Arduino semasa masa */
Serial.println ( F ( 'Linuxhint.com/Arduino' ) ) ;
Serial.println ( F ( 'Linuxhint.com/RaspberryPi' ) ) ;
Serial.println ( F ( 'Linuxhint.com/Tutorial' ) ) ;
Bersiri.flush ( ) ; /* Tunggu untuk data yang akan dihantar selepas ingatan siram itu */
millis panjang yang tidak ditandatangani_FlushStop = millis ( ) ; /* semasa masa pada ketika ini */
Bersiri.cetak ( F ( 'Dengan Fungsi Flush diperlukan' ) ) ;
Bersiri.cetak ( millis_FlushStop - millis_FlushStart ) ; /* Cetakan masa diambil oleh penimbal bersiri untuk mencetak data */
Serial.println ( F ( 'milisaat.' ) ) ;
}
gelung kosong ( ) {
}


Kod ini serupa dengan yang kami jelaskan sebelum ini. Perbezaan di sini ialah fungsi Serial.flush() yang membenarkan atur cara menunggu beberapa masa tambahan sehingga memori penimbal bersiri menjadi jelas untuk menerima data seterusnya.


Dalam output kita dapat melihat dengan jelas bahawa kali ini ia mengambil masa 76ms untuk mencetak tiga rentetan berbanding dengan yang sebelumnya yang hanya mengambil masa 9ms.

2: Kosongkan Penampan Bersiri menggunakan Fungsi Serial.begin().

Sehingga kini kami menerangkan fungsi Serial.flush() untuk mengosongkan penimbal bersiri tetapi fungsi ini perlu menunggu untuk data dihantar sepenuhnya kini persoalan muncul di fikiran bagaimana jika kita ingin mengosongkan data masuk di dalam penimbal bersiri. Jawapan kepada soalan adalah mudah: kita boleh melakukan ini menggunakan a sementara gelung dengan fungsi perpustakaan Bersiri.

Sintaks

sementara ( Bersiri.tersedia ( ) )
Bersiri.baca ( ) ;
Bersiri.akhir ( ) ;
Bersiri.mulakan ( 9600 ) ;

Kod

String val;
persediaan kosong ( ) {
}
gelung kosong ( ) {
jika ( Bersiri.tersedia ( ) ) { /* semak untuk data bersiri */
val = '' ;
sementara ( Bersiri.tersedia ( ) ) { /* membaca data bersiri jika tersedia */
char Data_Bersiri = Bersiri.baca ( ) ;
val =val+Data_Serial; /* simpan data dalam rentetan baharu */
}
Serial.println ( val ) ; /* mencetak membaca data */
Bersiri.akhir ( ) ; /* menamatkan komunikasi bersiri */
Bersiri.mulakan ( 9600 ) ; /* jelas penimbal bersiri */
}
}


Arduino menggunakan fungsi Serial.begin() untuk memulakan komunikasi bersiri dengan mentakrifkan kadar baud, sebaik sahaja fungsi ini dimulakan, data yang disimpan sebelum ini dalam memori Arduino menjadi jelas. Di sini kami akan menyemak data bersiri menggunakan fungsi Serial.available() sebaik sahaja data dibaca, ia akan disimpan di dalam rentetan baharu dan akhir sekali menggunakan Serial.begin(9600) kami akan mengosongkan penimbal bersiri Arduino.

Catatan: Kami perlu mengepam penimbal bersiri kerana ia memastikan data telah dihantar ke peranti dan tidak menunggu atau ditahan untuk dihantar.

Kesimpulan

Untuk mengosongkan penimbal bersiri Arduino supaya ia boleh menyimpan data baharu di dalam memori penimbal Serial.flush() dan Serial begin boleh digunakan. Ia boleh digunakan untuk mengosongkan penimbal bersiri Arduino, tetapi kita perlu menunggu sebaik sahaja semua data dihantar untuk mengelakkan ini, kita boleh menggunakan gelung sementara dengan fungsi Serial.begin() yang juga boleh mengosongkan data masuk daripada penimbal bersiri.