Auxilio - Porta Paralela

Programação C em geral

Moderadores: 51, guest2003

Auxilio - Porta Paralela

Mensagempor gilbert_SS » 31 Jul 2007 16:38

Olá pessoal.

Tentando fazer alguns projetos basicos para aprendizado meu com porta paralela, ao perceber erro nos comandos outportb e inportb fui a busca na net e compreendi que isto eh devido ao windows xp ter algumas proteções que impedem acesso direto.

Fiz de tudo que encontrei, tem um site p/ baixar uma dll; alem do bem conhecido portal do Rogercom tb tras uma esplicação boa, mas nada resolveu!!

não consigo compilar estas instruções. Ja tentei no Visual C++ e no Dev-C++.

Alguem ai poderia de dar uma ajuda, uma descrição de como resolver esta dificuldade?

Fico grato.
Valeu.
Gilberto Kummerloewe.
gilbert_SS
Bit
 
Mensagens: 14
Registrado em: 07 Dez 2006 16:30

Mensagempor __JEREK__ » 01 Ago 2007 12:52

dá uma olhadinha no site do Rogercom que lá mostra como fazer isso.

abraços!
'We shall live forever, and cast out those less divine...'
__JEREK__
Byte
 
Mensagens: 216
Registrado em: 11 Out 2006 17:53
Localização: BA

Mensagempor chipselect » 01 Ago 2007 13:57

chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50

Mensagempor andre_luis » 01 Ago 2007 14:49

Voce pode executar o aplicativo Userport para desbloquear, porém o mais indicado é usar uma .DLL encontrada na Web para isso, nao lembro do nome, mas todo mundo usa.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor mrtabs » 02 Ago 2007 16:38

eh isso ai que o andre falou.
Nos sistemas que o acesso a hardware eh protegido (Win 2k, XP etc), voce tem que usar um device driver para isso.
Porem, ha uma dll, que eu tb nao lembro o nomem que en capsula um device driver e consegue acessar diretamente os pinos da paralela.

falow
mrtabs
Nibble
 
Mensagens: 70
Registrado em: 24 Out 2006 09:27
Localização: Santos e/ou Sao Paulo

Mensagempor B-EAGLE » 02 Ago 2007 16:58

gilbert, estava fazendo um projetinho usando a porta paralela tempos atrás, e você tem de fazer o seguinte:

em primeiro lugar, utilizar o UserPort ou o PortTalk, como o chipselect sugeriu, porém utilizei somente o UserPort:

Pegue o UserPort aqui:
http://www.4shared.com/network/search.j ... e=userport

Após descompactar, copie o arquivo UserPort.sys para o diretório x:\WINDOWS\SYSTEM32\DRIVERS

Após isto execute o UserPort.exe, selecione todos os intervalos que já estão ali adicionados (200 - 37F; 3BC - 3BF e 3E8 - 3FF), nos dois lados, e delete-os.

Depois adicione os endereços que você quer manipular, por exemplo 378-37A, dos dois lados novamente.

Após adicionar estes dois intervalos, dê um Start, pronto, a porta paralela está acessível agora, pode fechar o userport e não abri-lo mais.


Quando a questão de você não conseguir compilar as funções outportb e inportb, realmente estes dois compiladores que você citou dão erros quando vão compilar, consegui compilar usando o Borland C++ 3.11 e o 4.5.

Abraço.
B-EAGLE
Word
 
Mensagens: 847
Registrado em: 19 Out 2006 14:12
Localização: Campo Grande - MS

O nome

Mensagempor Budweiser » 05 Abr 2008 00:27

Pessoal, o nome da bendita dll é "impout.dll"...
Serve tanto no C quanto no Delphi...

Abraços!
Budweiser
Nibble
 
Mensagens: 68
Registrado em: 28 Mar 2008 15:37
Localização: Florianópolis - SC

Re: O nome

Mensagempor Jorge_Francisco » 05 Abr 2008 09:13

Usa só a dll, é mais pratico.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Re: O nome

Mensagempor andre_luis » 05 Abr 2008 21:14

Então...

O mais profissional seria usar API do windows para isso, sem ter que adicionar alguma DLL, pois assim todo o programa estaria encapsulado num unico arquivo executável.

E sem ter a necessidade de executar algum programa que desbloqueasse estaticamente as portas do windows.

No tópico abaixo, postei uma rotina que faz isso :

http://www.asm51.eng.br/phpbb/viewtopic.php?t=4792&start=15

A vantagem dessa filosofia é que se pode usar nas portas LPT nao convencionais ( emuladas ), cujo endereço-base é desconhecido.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: O nome

Mensagempor Jorge_Francisco » 05 Abr 2008 22:45

Mas andré, dentro da dll as funções foram feitas em C usando a API do Windows, a vantagem da dll é que pode ser reutilisada em vários projetos em qualquer linguagem.

Abraço
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Re: O nome

Mensagempor andre_luis » 06 Abr 2008 17:45

Jorge,

Ok, o programa pode ficar mais limpo e fácil de trabalhar ao plugar uma DLL pronta. É uma idéia que seduz. Se não for um caso crítico, o melhor mesmo é usar algo pronto e terminar logo o trabalho; mas quando se tem o código fonte, fica mais fácil debugar, além de que se pode otimizar o funcionamento do driver, retirando ou incluindo funcionalidades. Além de que ( creio eu ) ficaria mais difícil alocar essa DLL em uma thread específica, se quizesse atribuir algum nível de prioridade diferenciado à ela.

Eu, pessoalmente, prefiro trabalhar com DLL´s apenas quando elas já estão prontas e fazem parte do sistema operacional, e não criá-las. Prefiro que o usuário final tenha que lidar com apenas 1 arquivo; mas cada caso é um caso, realmente.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor CCandido » 07 Abr 2008 07:19

impout.dll se não for de 32k de tamanho não funciona.....
CCandido
Byte
 
Mensagens: 120
Registrado em: 12 Out 2006 12:54
Localização: Londrina-PR

Mensagempor Jorge_Francisco » 07 Abr 2008 10:46

CCandido escreveu:impout.dll se não for de 32k de tamanho não funciona.....


A minha tem 32KB e funciona perfeitamente, coloquei um exemplo(C++ Builder) pra download :

http://www.4shared.com/file/43318995/34 ... alela.html
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor andre_luis » 07 Abr 2008 12:10

int pinos_378[8]={2,3,4,5,6,7,8,9};
int pinos_379[8]={0,0,0,15,13,12,10,11};
int pinos_37A[8]={1,14,16,17,0,0,0,0};


Este é o problema!!!!

Isso aí funciona bem quando voce trabalha com portas nativas que podem ser enxergadas pela BIOS ( LPT1 , LPT2 e eventualmente LPT3 ), mas se voce tiver por exemplo um conversor USB/paralelo, já não é mais possível trabalhar desta maneira.

Esta rotina trabalha com endereços pré-definidos, e não com mapeamento de dispositivos no Registro do windows. A função baseada na API CreateFile, indicada no outro tópico, utiliza o próprio nome do dispositovo ( LPTn ) como entrada.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Jorge_Francisco » 07 Abr 2008 12:52

andre_teprom escreveu:
int pinos_378[8]={2,3,4,5,6,7,8,9};
int pinos_379[8]={0,0,0,15,13,12,10,11};
int pinos_37A[8]={1,14,16,17,0,0,0,0};


Este é o problema!!!!

Isso aí funciona bem quando voce trabalha com portas nativas que podem ser enxergadas pela BIOS ( LPT1 , LPT2 e eventualmente LPT3 ), mas se voce tiver por exemplo um conversor USB/paralelo, já não é mais possível trabalhar desta maneira.

Esta rotina trabalha com endereços pré-definidos, e não com mapeamento de dispositivos no Registro do windows. A função baseada na API CreateFile, indicada no outro tópico, utiliza o próprio nome do dispositovo ( LPTn ) como entrada.

+++


Testei aquele código, mas não funcionou aqui, talvez usando o userport + código funcione. Resolveu aquele problema?
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Próximo

Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x