Impressao bematech TS

Delphi

25/04/2013

Ola pessoal.
Meu sistema de caixa imprime corretamente aqui na matriz.
Porem, ele foi disponibilizado via terminal server para as filiais.
Depois de muitas incompatibilidades corrigidas, estou com o problema de impressao na bematech da filial. Com o sistema antigo funciona, com o meu nao. Quando pede para imprimir o recibo, mostra um erro em ingles falando que nao econtrou o arquivo.

O codigo da impressao resumido é:

var
Arquivo : TextFile;
begin
  AssignFile(Arquivo,'LPT1');
  Rewrite(Arquivo);
  WriteLn(Arquivo, '- - - - - - - - - - - - - - - - - - - - - - - ');
  CloseFile(Arquivo);
 end;



Alguem já passou por isso ou sabe como ajusto ? Obrigado.
Geison

Geison

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

25/04/2013

O sistema antigo roda na sua máquina? Sua máquina tem essa porta?
GOSTEI 0
Joabe Silva

Joabe Silva

25/04/2013

você não esta passando o arquivo para ele imprimir , aqui usei dessa forma.

WArquivo:={ExtractFilePath(Application.ExeName)+}'C:\Impressao.txt';
GOSTEI 0
Geison

Geison

25/04/2013

O sistema antigo roda e imprime corretamente.
Entao, essa porta é criada quando o usuario faz logon no terminal server.
GOSTEI 0
Geison

Geison

25/04/2013

Vou testar desta forma que voce falou Joabe Anderson da Silva, mas ele imprime normalmente em uma maquina local.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/04/2013

Eu acho que tem que checar se essa porta realmente existe, pode ter havido problemas na sua criação.
GOSTEI 0
Geison

Geison

25/04/2013

Entao pessoal, descobri que o Terminal Service, cria uma porta "virtual" onde ele conecta a impressora local no servidor.
No meu caso , a porta criada foi a TS0017. Entao , ao inves de colocar

AssignFile(Arquivo,'LPT1');


eu coloquei

AssignFile(Arquivo,'TS0017');


Quando clico em imprimir, nao gera erro, mas tambem nao imprime.
Se eu vou em impressoras, e clico em imprimir pagina teste, funciona normalmente.

Nao consegui entender a parte que o Joabe Anderson da Silva diz que preciso indicar o local do arquivo.
Pois, creio eu que eu estaria imprimindo diretamente para a porta da impressora , entao nao teria que ter um arquivo externo, correto ?


Alguem já teve este problema e pode me ajudar ?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/04/2013

Pra testar essa porta no terminal, tente enviar um arquivo pelo prompt com o comando copy. Crie um arquivo de texto e copie para essa porta. Por exemplo:
copy C:\arquivo.txt TS0017
GOSTEI 0
Geison

Geison

25/04/2013

Ola. testei e nao funcionou com o copy.
Porem se eu vou na mesma impressora e clico em imprimir pagina de teste, ou usar o outro sistema de terceiros, funciona normalmente.
Só uma correção de um erro meu de escrita, a porta do ts é TS007
Em anexo uma imagem da porta e do comando no DOS que eu fiz.


https://docs.google.com/file/d/0B7nL1Ry12Bbfd01TLVpLUnVtbEE/edit?usp=sharing
GOSTEI 0
Geison

Geison

25/04/2013

Bom galera, aparentemente resolvi o problema, vamos ver no passar da semana se fica tudo ok. De qq forma, vou postar como resolvi para caso alguem tenha o mesmo problema.

Achei neste link http://www.memosoftware.com.br/faq/faq_imp_rem_lpt1_ts.htm uma dica util.

A cada vez que o usuario entra no ts, é rodado um bat com o comando net send com descrito abaixo, linkando LTP1 para a impressora. Aí rodou bunito !


Segue:

1) Você tem que Ter uma impressora instalada localmente no seu terminal. Não funciona com impressora mapeada em rede.
2) O driver da sua impressora tem que estar instalado no servidor de TS que você acessa.
3) Conecte sua estação ao servidor via TS.
4) Ao iniciar a seção de TS, uma copia da sua impressora irá aparecer nas impressoras instaladas no Servidor de TS. Esta cópia permite a você imprimir impressões WINDOWS mas não DOS.
5) Dentro da seção do TS compartilhe sua impressora em rede, e não use espaços, nem acentos nem nomes maiores que 8 posições.
6) Ainda na seção do TS vá no DOS e capture esta mesma impressora no próprio servidor para porta LPT1 com o comando:
NET USE LPT1: \\NomeDoServidor\NomeDaImpressora
7) Digite o seguinte comando para fazer um teste de impressão:
DIR > LPT1
O diretório do servidor será impresso na sua impressora local.
8) Agora feche a seção para que as configurações sejam gravadas no servidor
9) Esta configuração só funcionará para você na sua estação, por isso se quiser outros terminais imprimindo também, deverá fazer esta mesma configuração em cada um, com cada usuário.
GOSTEI 0
POSTAR