Amarildo e demais,
Por favor teste com a Unit em anexo...
As classes TBlockSerial e TTCPBlockSocket tem muito em simular... e com isso, ajustei a classe ACBrDevice para tentar se comportar de forma muito semelhante seja com uma Porta Serial ou TCP...
Implementei várias propriedades como "TimeOut, MaxBandwidth" e métodos "LeString, LeByte, EnviaString"...
Para manter a compatibilidade com o comportamento da Porta Serial, o ACBrDevice mantém a conexão aberta após chamar o "Ativar" e só derruba a mesma, após o "Desativar"... Para reproduzir o comportamento que você projetou, (Conectar e Desconectar a cada envio)... é necessário ativar a propriedade "ControlePorta" dos componentes que usam o ACBrDevice, como o ACBrECF ou ACBrPosPrinter...
Fiz um teste usando os Demos: "PosPrinterTeste" e "Server" (TCPServer)... E o comportamento foi bastante satisfatório...
Por enquanto, usei a notação de porta: "TCP:ip_maquina:porta".. Ex: "TCP:localhost:9100"
ACBrDevice.pas