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