Olá pessoal,
Estou tentando controlar um display LCD 20x4 através da porta paralela. O conjunto de instruções do HD44780 requer o uso de 11 pinos, sendo:
Pino E: Pino de “enable”, que na transição de 1 pra 0 faz a MPU ler o barramento de dados;
Pino RS: Register Selector. Seleciona entre registrador de dados ou de instruções;
Pino R/W: Read/Write. Seleciona entre modo escrita ou modo leitura;
Pinos DB0 a DB7: barramento de dados.
Até aí tudo bem. Meu problema começa com a solução que encontrei aqui mesmo no fórum, o Parport. Nas instruções de uso e nos exemplos, pelo que entendi, só é possível enviar e ler bytes no barramento de dados. Não consigo imaginar como eu posso manipular o status dos pinos E, RS e R/W.
Será que alguém pode me dar uma luz?
Desde já, obrigado!
Por enquanto eu imagino que a porta paralela só pode enviar bytes para a impressora.
Mas tem que ter algum esquema para poder também ler os bytes que vem da impressora, ex, nível de tinta, papel atolado, falta papel…
E também no Bios de algumas máquinas dá para configurar a porta como bi-direcional. Também gostaria de entender isso.
Minha intenção é fazer leitura do estado de pelo menos 2 pinos na porta paralela, para iniciar/parar um cronômetro.
Só agora fui encontrar isso.
Segundo o site do roger.com ( http://www.rogercom.com/pparalela/introducao.htm ), dá para ler 5 pinos, que são o estado da impressora.
http://www.rogercom.com/pparalela/introducao.htm#recebendo
Este exemplo de código em C serve para ler a porta.
//www.rogercom.com
//rogercom@rogercom.com
//-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <dos.h>
int main(void)
{
unsigned char RetByte; //Para armazenar o valor recebido da Porta Paralela.
while( ! kbhit( ) ) //Faz enquanto nenhuma tecla for pressionada.
{
RetByte = inportb(0x379); //Ler um byte da Porta Paralela (0x379)LPT1.
printf("%u\n",RetByte);
}
}
Pergunto: Como posso fazer o mesmo, ler a porta paralela, só que usando java?
Achei outro site:
http://br.geocities.com/vagnersantosdasilva/artigos/artigojava.htm
Em resumo:
import parport.ParallelPort;
public static void main (String[] args){
int Bit=1;
ParallelPort Lpt1=new ParallelPort(0x378); //Acessa registro de dados.
Lpt1.write(Bit); // Escreve 1 bit na porta acionado D0.
}
Se fosse para fazer no linux, como poderia ser feito?