Bagaimana untuk Membaca Semua Data dengan Betul dari Port Bersiri dalam Go dengan While-Loop?

Susan Sarandon
Lepaskan: 2024-10-26 21:29:29
asal
823 orang telah melayarinya

How to Correctly Read All Data from a Serial Port in Go with a While-Loop?

Membaca dari Port Bersiri Menggunakan Gelung Sementara

Soalan ini berkenaan program yang ditulis dalam Pergi untuk berkomunikasi dengan penderia melalui port bersiri . Program ini termasuk gelung sementara untuk membaca data masuk, tetapi ia gagal berfungsi dengan betul.

Kod Asal:

<code class="go">buf := make([]byte, 40)
n := 0

for {
    n, _ = s.Read(buf)

    if n > 0 {
        break
    }
}

fmt.Println(string(buf[:n]))</code>
Salin selepas log masuk

Penjelasan Masalah:

Isu dengan kod ini ialah Read() boleh kembali pada bila-bila masa dengan sebarang jumlah data yang tersedia. Ini bermakna jika sejumlah kecil data diterima, ia akan ditimpa dalam lelaran gelung seterusnya.

Penyelesaian:

Untuk membaca semua data masuk dengan betul, kami boleh menggunakan bufio.Reader untuk membaca data sehingga pembatas tertentu ditemui. Dalam kes ini, pembatas diandaikan sebagai 'x0a'.

Kod Diubah Suai:

<code class="go">reader := bufio.NewReader(s)
reply, err := reader.ReadBytes('\x0a')
if err != nil {
    panic(err)
}
fmt.Println(reply)</code>
Salin selepas log masuk

Kod ini akan terus membaca data dari port bersiri sehingga 'x0a' pembatas ditemui. Hasilnya kemudian disimpan dalam pembolehubah balasan dan dicetak.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Semua Data dengan Betul dari Port Bersiri dalam Go dengan While-Loop?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!