Aun así, como dice Casimiro, a simple vista podrías tener errores en tu lógica.
Hace mucho, pero mucho que no uso Delphi, pero yo no metería la conexión y/o configuración del puerto serie dentro del evento del timer.
Prueba creando un botón en el que le des conectar/desconectar de la balanza. Ahí metes el código necesario para conectar y desconectar la aplicación del puerto serie.
Igual, esto no se porque lo haces
Código PHP:
self.ComPort1.Connected := false;
Si observas los ejemplos del TComPort, ellos usan el ComPort.Close y ComPort.Open para abrir y cerrar el puerto. Connected sería más como una variable del estado del puerto, si está o no conectado.
Sólo deberías comprobar si el puerto está conectado, y si no está conectado tratar de conectarlo o informar que la balanza no está disponible.
Después verifica si la balanza que usas envía o no caracteres de finalización, porque lo que estas haciendo es leer 15, que me imagino son 15 bytes, pero pudiera haber más, por lo que también sería conveniente poder detectarlos para evitar errores en las lecturas posteriores.