9

我想知道我的数学是否正确。如果我的波特率为 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

那是对的吗?

4

2 回答 2

13

确实,但是通过将位宽的近似值相乘,您已经失去了精度,因此将时间指定到小数点后三位是不正确的。

为避免精度损失,请勿使用四舍五入的中间表达式,而是:

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.
于 2012-09-29T08:08:40.617 回答
8

如果您需要粗略检查幅度(无论是 3s 还是 30 或 300),请记住 9600 kbps ~ 1KB/秒(如果您有 2 个额外的奇偶校验/停止位,则为 10 位),因此 32KB -> 大约 32 秒。

于 2012-09-28T22:54:50.020 回答