Nat*_*ate 8 embedded serial-port baud-rate
我想知道我的数学是否正确.如果我的波特率是9600那么这意味着每秒发送9600位,对吧?如果是这样,那么:
9600 bit/sec <=> 1000 ms/ 9600 bit = 0.1042 ms/bit
Run Code Online (Sandbox Code Playgroud)
所以,发送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
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
Cli*_*ord 10
实际上,您通过乘以位宽的近似值而丢失了精度,因此指定三位小数的时间是不正确的.
为避免精度损失,请不要使用舍入的中间表达式,而是:
bytes x bits_per_character / bits_per_second
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下:
32000 x 10 / 9600 = 33.333(recurring) seconds.
Run Code Online (Sandbox Code Playgroud)
传统上,32Kb是指32 x 1024字节,因此在这种情况下:
32 x 1024 x 10 / 9600 = 34.1333(recurring) seconds.
Run Code Online (Sandbox Code Playgroud)
如果您需要粗略检查幅度(无论是3s还是30或300),请记住9600 kbps~1KB /秒(如果你有2个额外的奇偶校验/停止位,则为10位),所以32KB - >大约32秒.