in reply to Re^3: How I unconditionally wait for data in 7 seconds?
in thread How I unconditionally wait for data in 7 seconds?

aaah now I understand. It wont matter with accuracy. The time slot only needs to be larger than it takes for the device to send one data block (I Think about 2 seconds), and smaller than the interval between two data blocks (device is set to send one data block each 30 sec). Its just a way to know "ooh, now the device is finished talking so lets parse the contents of the data block".

Since its Waits until one character is available, and then waits 7 seconds for the data block, the code will resynchronize itself with the device all the time, even if the device waits 29 seconds or 31 seconds to send a data block instead of 30 seconds, thus it will Always be 7.X seconds from the device starts talking, thus in reality it will not "slip" over real time.

Your sleep code is extremely fragile against DST Changes. Imagine what happens when it comes a DST -1h change (from summer time to Winter time) during your while loop. Whoops, the code will instead wait 1 hour and 7 seconds.

  • Comment on Re^4: How I unconditionally wait for data in 7 seconds?

Replies are listed 'Best First'.
Re^5: How I unconditionally wait for data in 7 seconds?
by soonix (Chancellor) on Feb 11, 2015 at 09:24 UTC
    Your sleep code is extremely fragile against DST Changes. Imagine what happens when it comes a DST -1h change (from summer time to Winter time) during your while loop. Whoops, the code will instead wait 1 hour and 7 seconds.

    No, his code uses time from Time::HiRes, which is similiar to time, both are

    seconds since the epoch
    which is independent from any time zone and their changes …