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

那是对的吗?

最佳答案

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

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

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.

关于embedded - 是时候在9600波特序列上发送32KB了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12647857/

10-10 14:34