... Saya dapat membayangkan, meskipun probabilitasnya rendah, bahwa pesan saya mungkin berisi nilai "10 dan 13" satu sama lain ketika mereka bukan byte berhenti.
Situasi ketika sebagian data sama dengan terminating sequence harus dipertimbangkan ketika merancang format paket data serial. Hal lain yang perlu dipertimbangkan adalah bahwa karakter apa pun dapat rusak atau hilang selama transmisi. Karakter awal, karakter berhenti, byte payload data, checksum atau CRC byte, byte koreksi kesalahan maju tidak kebal terhadap korupsi. Mekanisme pembingkaian harus dapat mendeteksi ketika suatu paket memiliki data yang rusak.
Ada beberapa cara untuk mendekati semua ini.
Saya membuat asumsi yang berfungsi bahwa paket hanya dibingkai dengan byte serial. Garis jabat tangan tidak digunakan untuk membingkai. Penundaan waktu tidak digunakan untuk membingkai.
Kirim panjang paket
Kirimkan panjang paket di awal, alih-alih [atau sebagai tambahan] karakter penghentian di akhir.
pro: Muatan dikirim dalam format biner yang efisien.
Kontra: Perlu mengetahui panjang paket pada awal transmisi.
Melarikan diri dari karakter khusus
Keluar dari karakter khusus saat mengirim data payload. Ini sudah dijelaskan dalam jawaban sebelumnya .
pro: Pengirim tidak perlu tahu panjang paket di awal pengiriman.
kontra: Agak kurang efisien, tergantung pada berapa banyak byte muatan yang harus diloloskan.
Data payload dikodekan sedemikian sehingga tidak dapat memuat karakter awal dan berhenti
Payload paket dikodekan sedemikian sehingga tidak dapat berisi karakter awal atau berhenti. Biasanya, ini dilakukan dengan mengirimkan nomor sebagai representasi ASCII atau Hex-ASCII mereka.
pro: Dapat dibaca manusia dengan program terminal umum. Tidak perlu kode untuk menangani pelolosan. Tidak perlu tahu panjang paket di awal pengiriman
kontra: efisiensi yang lebih rendah. Untuk satu byte data payload, beberapa byte dikirim.