En lugar de querer imprimir directamente en el puerto, instala la impresora en el windows para tener una cola y luego imprimes sobre la cola con algo por el estilo
Código:
Pasa el nombre de la cola a printername.....
procedure RawPrinter(PrinterName:String);
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
S:=String;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('error ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do begin
pDocName := PChar('Impresión de pruebas');
pOutputFile := nil;
pDataType := 'RAW';
end;
StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
S:='HOLA ESTO ES UNA PRUEBA';
WritePrinter(Handle, PChar(S), Length(S), N);
S:='LINEA 2';
WritePrinter(Handle, PChar(S), Length(S), N);
S:='LINEA 3';
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle); // Finaliza Pagina
EndDocPrinter(Handle); // Finaliza Documento
ClosePrinter(Handle); // Cierra el manipulador
end;
De ese modo podras imprimir asumiendo tu el control (los escapes) de la impresora sin complicarte demasiado con la programación en puertos series (que de una versión a otra de W dejas de poder usar formas sencillas de imprimir), además el codigo te sirve para impresoras serie, paralelo y USB, todo un chollo!