Hello Karthik,
I can think of two ways I would approach this. One would use software timing, and the other would use hardware timing.
1. Software timing: This might be the easiest approach. The idea is you would use your example much as it is written, then use a loop with a delay as the "Time between samples" to call your counting code over and over. In this case, I have a few suggestions for your code. First, instead of the loop, you could start the counter, use a delay in a sequence structure (use "Wait (ms)", not "Wait Until Next ms Multiple")for your "Sampling time", then read the counter and stop. After the stop you'll need another "Wait (ms)" in a sequence structure for your "Time between samples". Finally, wrap a loop around all of this to r
epeat it. One advantage of this approach is the user can change the between time on the fly.
2. Hardware timing: The idea behind this would be to use two counters. The first would count, the output of the second would be wired to the gate of the first to control when the first counts. The second counter would be programmed to output a pulse train where the positive portion of the pulse would be your "Sampling time" and the negative portion would be your "Time between samples". The creative part for this approach would be figuring out when to read the count. One way to do this would be to also connect the gate of the second counter to an analog input, then read the count whenever the input goes low (say, below 1 volt). This approach might be the more accurate of the two. However, you would always be getting a total count, so you would have to subract the previous count each time. Also, you would not be able to change your sampling time or between time once you start.
Finally
I'd suggest looking at some examples - you can usually find code to help you.
Best Regards,
Doug Norman