Кто ж так посылает данные в порт побайтно? Надо формировать буфер и целиком посылать его...
по ходу дела функция просто не успевает посылать пакеты быстро, к этому времени уже приходят новые сообщения от таймера и получается, что отсылка идёт постоянно. При чём, статическая переменная ещё не успела увеличится, а новые вызовы процедур уже совершаются (тут сомнение, если я не прав - поправьте , кто знает

) , потому что прилетели новые сообщения от таймера. Это объясняет повторы
попробуй ради эксперимента поставить дискретность таймера 100 - всё должно заработать , только медленнее