GARANTIR DESCONTO

Fórum Lendo Dados na Porta Paralela #295178

12/09/2005

0

:?: Olá a todos.
Tenho uma aplicação que lê e escreve dados na porta paralela.
Uso Windows XP com a dll inpout32.dll. Com a função Out32 o programa escreve dados e com a função inp32 o programa lê o que esta sendo enviado por uma placa (interface), para a porta.
Agora estou precisando provocar uma interrupção na CPU #17, peguei aqui no forum uma rotina mas não esta resolvendo. Abaixo esta a função:
===// ====
Function OnLine(Porta:Word):Boolean;
Const
Portas :Byte = $02;
Var
Res :Byte;
Begin
{ Código em Assembler }
Asm
mov ah,Portas; {Requisita o acesso as portas}
mov dx,Porta;{Define a porta de teste}
Int $17; {Chama a interrupção de Impressora}
mov Res,ah; {Guarda em Res o resultado da operação }
end;
Result := (Res and $80) = $80; {Testa o valor de saída}
End;
Será que alguem tem uma dica de como posso provocar uma interrupção na CPU.
Abraços a todos.
Neto


Neto

Neto

Responder

Posts

12/09/2005

Massuda

...Agora estou precisando provocar uma interrupção na CPU #17, peguei aqui no forum uma rotina mas não esta resolvendo...
Pelo mesmo motivo que você teve que usar a DLL, você não pode gerar a interrupção (você não tem acesso direto ao hardware).

Você está tentando usar INT 17/AH 02 para pegar o status da impressora/porta paralela, mas provavelmente isso pode ser feito usando a DLL que você citou.

Se você conhecer um pouco de C (e inglês), experimente dar uma olhada [url=http://www.codeproject.com/csharp/csppleds.asp]neste artigo[/url] e [url=http://www.codeproject.com/csharp/cspplcds.asp]neste artigo[/url] que são alguns exemplos de como interfacear a porta paralela com hardware externo.


Responder

Gostei + 0

12/09/2005

Neto

Ok. Vou consultar os link´s sugeridos.
Aproposito, não conheço C nem inglês, mas com bôa vontade talves aproveito alguma coisa.
Você disse que talves a Dll que estou usando ofereça essa possibilidade.
Você sabe de alguma dica?
Muito obrigado Mussuda.


Responder

Gostei + 0

12/09/2005

Massuda

Você sabe de alguma dica?
Imagino que você esteja acessando o endereço/porta $378 para acessar a LPT1.

Como você já deve saber, para escrever dados na porta você usa Out32 na porta $378.

Para obter o status (o que equivale ao que você estava querendo fazer via interrupção), use Inp32 na porta $379. Os bits do valor lido correspondem aos seguintes sinais da impressora:[list:3479e0b322][*:3479e0b322]bit 0: não utilizado[*:3479e0b322]bit 1: não utilizado[*:3479e0b322]bit 2: /IRQ[*:3479e0b322]bit 3: ERROR[*:3479e0b322]bit 4: SELECT IN[*:3479e0b322]bit 5: PAPER OUT[*:3479e0b322]bit 6: ACK[*:3479e0b322]bit 7: BUSY[/list:u:3479e0b322]


Responder

Gostei + 0

12/09/2005

Neto

Obrigado
Neto


Responder

Gostei + 0

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

Aceitar