Hola ..
La razón por la que tu código no está fncionando se debe a que eestás ocupando una estructura de eventos dentro de un sub VI. La estructura de eventos siempre se va a ir al caso timeout; pues estás ocupando eventos dinámicos, y cambiar el valor programaticamente con el botón de Talk no generará este evento.
Te sugeriría integraras tu código de una forma diferente y evites usar variables dentro de tu código ...
Primero en el VI principal puedes dejar las funciones de escritura y lectura a serial; pero el subví de tts te sugeriría lo rehcieras empleando una estructura de casos para activarla o desactivarla y colocando signo después de TTS en tu VI principal
El código de Signo.vi podrías hacerlo más eficiente así...
La forma óptima para crear tu aplicación sería empleando un ciclo productor/consumidor
En el productor deberías colocar las entradas del serial y éstas enviarlas al consumidor para ser procesadas con Signo.vi y "habladas" con TTS
Aquí un tutorial de como desarrollar un ciclo productor consumidor
Producer/ Consumer
http://www.ni.com/white-paper/3023/es/
Espero esa información te sea útil
Saludos