Fórum Monitorar Porta Paralela #262589

18/12/2004

0

Pessoal, tem como ficar monitorando a porta paralela de um computador?
Tipo, tudo o que for enviado para a porta paralela (lpt1), ser interceptado pelo meu programa e, através se for confirmada a operação, enviar para a porta ou não.

Se alguém puder me ajudar... Agradeço antecipadamente.


Thomaz_prg

Thomaz_prg

Responder

Posts

19/12/2004

Thomaz_prg

Alguém poderia me ajudar?


Responder

Gostei + 0

20/12/2004

Massuda

Não é o que você queria, mas [url=http://www.sysinternals.com/ntw2k/freeware/portmon.shtml]este freeware do site SysInternals[/url] é capaz de monitorar os dados que são enviados para uma porta paralela ou porta serial. No link você também vai encontrar uma breve explicação sobre como o programa funciona. A impressão que eu tive é que isso não pode ser feito usando Delphi pois me parece que você precisa de um device driver (ou VxD se for Win 9x).


Responder

Gostei + 0

21/12/2004

Thomaz_prg

Valeu colega pela ajuda.
Realmente não era o que eu queria. Encontrei um aplicativo (PRN2FILE)que faz mais ou menos o que quero, só que esse aplicativo é apenas para MS-Dos.

Alguém mais poderia me ajudar???


Responder

Gostei + 0

21/12/2004

Khundalini

Companheiro, o que o companheiro Massuda falou é verdade! O Prn2File funciona para MS-DOS pq ele pode redirecionar a interrupção da impressora para um serviço do próprio programa, monitorando o que é enviado à LPTx.

Para fazer a mesma coisa em Win 9x/NT/2000/XP, seria necessário criar um driver VxD que se comunicaria com uma aplicação Delphi (ou feita em qualquer outra ferrametna) enviando informações à mesma sobre os dados que estão sendo enviados à porta da impressora.

Pq isso tem que ser feito assim? Pq o MS-DOS e as plataformas Windows de 32 bits possuem rígidas restrições quanto ao acesso a recursos do computador em baixo nível (Exemplos: acesso à portas de E/S, tratamento e interceptação de interrupções de hardware e software, acesso à dados através de endereçamentos de memória, etc.). Em resumo, o Delphi não possue subsídios para acessar tais recursos, em função de ser uma aplicação compilada sem esses privilégios de acesso.

Como toda aplicação compilada com Delphi possui um nível restrito de acesso aos recursos de mais baixo nível do computador, como os ilustrados anteriormente, se faz necessário escrever um driver VxD (em linguagem C/C++ ou Assembly), usando kits de desenvolvimento de drivers, disponibilizados pela MicroSoft, que auxiliam na criação de tais drivers.

E para escrever um driver desse tipo, é necessário conhecer (e muito) o modelo utilizado pela MicroSoft (WDM - Windows Driver Management) para escrita de drivers. Existem drivers para diversos tipos: drivers de kernel-mode, drivers de filtragem, etc. Cabe agora à você ir mais a fundo nessa sua pesquisa.

Mas, infelizmente, o Delphi ñ te permite fazer o que vc quer fazer. Só por meio de um driver, meu caro colega!

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

21/12/2004

Dopi

Valeu colega pela ajuda. Realmente não era o que eu queria. Encontrei um aplicativo (PRN2FILE)que faz mais ou menos o que quero, só que esse aplicativo é apenas para MS-Dos. Alguém mais poderia me ajudar???


Dá para fazer o Windows capturar toda a saida da Impressora para um arquivo, assim como o PRN2FILE faz...

Nas configurações de Impressora, em ´Imorimir na seguinte PORTA´ defina como :
FILE:
Isso irá pergutar o nome do arquivo a cada Impressao...

Se o nomo do arquivo é fixo... use: path+nome ex:
C:\TEMP\SAIDA.PRN

entretanto vc não poderá ´ler´ o conteudo do arquivo assim como no DOS, pois ele contem todos os comandos que seriam enviados para impressora.... Se a ideia for gerar um documento PDF, pode-se usar o PDFCreator, que age como uma Impressora


Responder

Gostei + 0

21/12/2004

Thomaz_prg

Valeu galera pela ajuda. Mas Dopi, tem como imprimir esse arquivo depois? Esse salvo pelo windows?

Valeu


Responder

Gostei + 0

22/12/2004

Dopi

Acredito que sim...

Experimente copiar ele para a Impressora:

copy C:\TEMP\SAIDA.PRN LPT1 ou
copy C:\TEMP\SAIDA.PRN PRN
copy C:\TEMP\SAIDA.PRN \\SERVIDOR\@IMPRESS

Entretanto se a impressora for ´for Windows´ acredito que ela não aceite um Copy, pois ela não ´escuta´ nenhuma porta Paralela... somente o driver da impressora pode se comunicar com ela... nesse caso não sei como poderia ser feito :-(


Responder

Gostei + 0

23/12/2004

Thomaz_prg

Valeu colega, pela ajuda, mas será que não tem mesmo jeito de fazer isso. De interceptar o que está sendo gravado na impressão, ou pelo menos registrar o que foi enviado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar