web-dev-qa-db-ja.com

9600ボーシリアルで32KBを送信する時間ですか?

ここでの私の数学は正しいのだろうかと思います。私のボーレートが9600の場合、それは9600ビットが毎秒送信されることを意味しますよね?もしそうなら、それから:

9600 bit/sec <=> 1000 ms/ 9600 bit = 0.1042 ms/bit

したがって、32KBの送信には次の時間がかかります。

32,000*(8+2) bits = 320,000 bits -- (8+2) because 8 data bits + 1 start bit + 1 stop bit
320,000 bits*0.1042 ms/bit = 33344 ms = 33.344 sec

あれは正しいですか?

8
Nate

確かに、しかし、ビット幅のapproximationを乗算することによって精度が失われているため、小数点以下3桁までの時間を指定することは正しくありません。

精度の低下を避けるために、丸められた中間式を使用せず、次のようにします。

bytes x bits_per_character / bits_per_second

だからあなたの場合:

32000 x 10 / 9600 = 33.333(recurring) seconds.

ただし、従来、32Kbは32 x 1024バイトを参照するため、その場合は次のようになります。

32 x 1024 x 10 / 9600 = 34.1333(recurring) seconds.
10
Clifford

大きさ(3秒、30秒、300秒)を大まかに確認する必要がある場合は、9600 kbps〜1KB /秒(2つの追加のパリティ/ストップビットがある場合は10ビット)なので、32KB->約32秒であることを忘れないでください。

8
makapuf