是否可以透過串列線發送 NUL?

是否可以透過串列線發送 NUL?

ascii 字元「NUL」的值為 0。

答案1

是的當然。字符的框架與其內容是分開的。八位零沒有理由本質上被解釋為「沒有發送資料」——就像磁碟區全是零一樣。

詳細說明:在典型的非同步串列中,您有一個起始位,然後是八個資料位,然後是一個停止位。您仍然擁有八個資料位元 - 它們只是碰巧全為零。起始位元和停止位元告訴接收器「這是一個字元」。字符中的各個位元恰好是什麼並不相關。

如果接收程式碰巧將 NUL 解釋為“無資料”,那是它的事,但這是應用程式層問題。

例如,如果接收程式是終端模擬器,那麼當它接收到 NUL 時,它可能不會執行任何操作(因為大多數真實終端都是這樣做的)。序列埠 API 仍會註冊 NUL 字元的接收並將其交給程式。終端模擬器決定“哦,我會忽略它”。

有許多應用程式透過非同步串列線路發送「二進位」數據,如果根本沒有發送或接收 NUL,這些應用程式就會失敗。

欲了解更多信息,請參閱https://en.wikipedia.org/wiki/Asynchronous_serial_communication

答案2

串行協定具有起始位和停止位,資料被隔離在這些位中- N81(無奇偶校驗,8 位,1 個停止位將允許您發送任何ASCII 字符,並且是1 個通用編碼),因此透過發送起始位或不發送起始位,可以區分無和空。

相關內容