Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Time to send 32KB over 9600 baud serial?

I'm wondering if my math here is correct. If my baud rate is 9600 then that means 9600 bits are sent every second, right? If so, then:

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

So, sending 32KB should take:

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

Is that correct?

like image 503
Nate Avatar asked Sep 28 '12 21:09

Nate


2 Answers

Indeed but you have lost precision by multiplying your approximation of the bit width, such that then specifying the time to three decimal places is incorrect.

To avoid loss of precision, do not use a rounded intermediate expression, but rather:

bytes x bits_per_character / bits_per_second

So in your case:

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

Traditionally however 32Kb refers to 32 x 1024 bytes, so in that case:

32 x 1024 x 10 / 9600 = 34.1333(recurring) seconds.
like image 127
Clifford Avatar answered Sep 28 '22 03:09

Clifford


If you need to roughly check the magnitude (whether it's 3s or 30 or 300), remember that 9600 kbps ~ 1KB/second (10 bits if you have 2 extra parity/stop bits), so 32KB -> around 32 seconds.

like image 41
makapuf Avatar answered Sep 28 '22 04:09

makapuf