The VI stops after 3-4 Weeks you say? This sounds familiar. Do you have a Timer(ms) function in this VI coupled with the stop criteria of the loop? The ms counter is an U32, which can hold max. 4294967296 ms, which equals 49.7 days. Note that the counter starts immediately when the computer is bootet (if I remember correctly).
This counter will "wrap" every 49.7 days possible causing timing problems with your VI. If you're coupling a Wait(ms) with a check whether a certain amount of milliseconds have passed since the last iteration, this may lead to a condition where your elapsed time is a lery negative number, possibly eliminating the possibility of the VI sending more data. Again, it depends on how your VI is set up..... Hope this helps Shane.