It is difficult to have this type of code in an ISR. Basically you get a deadlock as the code fills the serial buffer and waits for the UART to transmit but that does not happen as the UART ISR is locked out.
I recommend that you remove the ISR and use millis() for period checking in the loop().
Cheers!