teclas pela porta paralela

24/08/2004

0

pessoal,

tem como ou alguem já vez deteção de teclas pela porta paralela???
exemplo vc colocar um botão e for detectado quando esse botão for pressionado... por acaso tem como fazer isso???

se tiver seria possivel ir mais alem e criar tipo um teclado???


Mrcdlf

Mrcdlf

Responder

Posts

24/08/2004

Ursula

eu nao sei se entendi , mais vai uma dica

Os exemplos abaixo demonstram como formatar a string de controle em diversas linguagens de programação, para comandar a placa de controle de acessos.
Todos os exemplos abaixo ligam o canal (05) por 25 segundos. Após decorrido esse tempo, o canal é desligado automaticamente pela microcontrolador da placa.



Exemplo em DELPHI e PASCAL:

´CMD05#1025:´ + chr(13) + chr(10);



Exemplo em VISUAL BASIC:
´CMD051025:´ & chr(13) & chr(10)


Exemplo em C/C++, C e JAVA:

´CMD051025:\r\n´;


Os cararteres CR (Crrier Return) ou Retorno de Carro, e LF (Line Feed) ou nova linha, são codificados
de várias formas nas diversas linguagens de programação. As linguagens C/C++, C e Java representam o CR como ´\r´ e o LF como ´\n´. Já no Visual Basic, Delphi e Pascal o caracter CR é representado através do comando chr(13) e o LF pelo comando chr(10).
Na tabela ASCII o CR é representado pelo número 13 e o LF pelo número 10.

Mais exemplos

Em DELPHI:

´CMD05#0000:´ + chr(13) + chr(10);
O comando acima desliga o canal 05.

´CMD081001:´ + chr(13) + chr(10);
O comando acima mantem o canal 08 ligado por 1 segundo.

´CMD071000:´ + chr(13) + chr(10);
O comando acima liga o canal 07 sem temporalizá-lo 000.

´CMD091000:´ + chr(13) + chr(10);
O comando acima acende o LED verde do teclado 1.

´CMD090000:´ + chr(13) + chr(10);
O comando acima apaga o LED verde do teclado 1.

´CMD161000:´ + chr(13) + chr(10);
O comando acima acende o LED verde do teclado 8.

´CMD160000:´ + chr(13) + chr(10);
O comando acima apaga o LED verde do teclado 8.

Obs.: Os LEDs dos teclados são controlados pela própria placa quando uma porta é aberta ou fechada.
Não há necessidade de se enviar comandos para controlá-los via software, a não ser que se deseje fazer testes ou manter-los piscando por algum motivo de alerta.



Código exemplo em Delphi para separar os comandos da string de controle:

Var
StrComandos : String;
InicioStr : String;
Teclado7 : String;
HaTeclaPress : String;
Sensores : String;
TecConectado: String;
FimStr : String;
StrValida : String;
IntSensores : Integer;
IntTecConectado : Integer;
Begin

StrComandos := ´T08#91064001:´; //Armazena numa variável a string capturada pela Porta Serial.

InicioStr := Copy(StrComandos, 1, 3); //Obtém os 3 caracteres ´T08´ da string.
Teclado7 := Copy(StrComandos, 10, 1); //Obtém a tecla pressionada no teclado 7.
HaTeclaPress := Copy(StrComandos, 12, 1); //Pega info. se há tecla pressionada (1 ou 0).
Sensores := Copy(StrComandos, 13, 3); //Pega info. sobre os sensores.
TecConectado := Copy(StrComandos, 16, 3); //Pega info. sobre teclados conectados.
FimStr := Copy(StrComandos, 19, 1); //Obtém o caracter ´:´ na posição 19.

StrValida := InicioStr + FimStr; //Concatena as strings formando ´T08:´
IntSensores := StrToInt(Sensores); //Converte string para número.
IntTecConectado := StrToInt(TecConectado); //Converte string para número.
End;

Obs.: A função copy() extrai uma substring de uma string. A função StrToInt() converte uma string de caracteres númericos em um número inteiro.


Código exemplo em C++Builder para separar os comandos da string de controle:

String StrComandos;
unsigned int IntSensores;
unsigned int IntTecConectado;

StrComandos = ´T08#91064001:´; //Armazena numa variável a string capturada pela Porta Serial.

String InicioStr = StrComandos.SubString(1, 3); //Obtém os 3 caracteres ´T08´ da string.
String Teclado7 = StrComandos.SubString(10, 1); //Obtém a tecla pressionada no teclado 7.
String HaTeclaPress = StrComandos.SubString(12, 1); //Pega info. se há tecla pressionada (1 ou 0).
String Sensores = StrComandos.SubString(13, 3); //Pega info. sobre os sensores.
String TecConectado = StrComandos.SubString(16, 3); //Pega info. sobre teclados conectados.
String FimStr = StrComandos.SubString(19, 1); //Obtém o caracter ´:´ na posição 19.

String StrValida = InicioStr + FimStr; //Concatena as strings formando ´T08:´
IntSensores = StrToInt(Sensores); //Converte string para número.
IntTecConectado = StrToInt(TecConectado); //Converte string para número.


Obs.: A função SubString() extrai uma substring de uma string. A função StrToInt() converte uma
string de caracteres númericos em um número inteiro.

Em DELPHI:

if (IntSensores AND 128) = 128 then //Verifica se o sensor 8 está ligado.
Label1.Caption := ´Sensor 8 ligado´ //Porta fechada.
else
Label1.Caption := ´Sensor 8 dsligado´ //Porta aberta.

if (IntSensores AND 32) = 32 then //Verifica se o sensor 6 está ligado.
Label1.Caption := ´Sensor 6 ligado´ //Porta fechada.
else
Label1.Caption := ´Sensor 6 dsligado´ //Porta aberta.




Vai ai alguns sites interesantes::::
http://www.developers.demon.co.uk/serial.html
http://www.traverse.com/people/poinsett/bcbcomm.html
http://www.cpcug.org/user/clemenzi/technical/Languages/SerialIO.htm#references
http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html
http://www.sc-systems.com/products/serialport/serialport.htm (Java)
http://www.jcontrol.org/cgi-bin/makeframes.pl?http://www.jcontrol.org/tutorials/de/rs232.html (Java)
http://www.codeguru.com/Cpp/I-N/network/serialcommunications/article.php/c2483 (Visual C++)
http://www.ontrak.net/linux.htm (C / LINUX)
http://msdn.microsoft.com/msdnmag/issues/02/10/netserialcomm/ (C#)
http://www.macoratti.net/vbserial.htm (Visual Basic)
http://www.codeworks.it/net/VBNetRs232.htm (VB.NET)
http://www.arcelect.com/rs232.htm
http://www.beyondlogic.org/serial/serial.htm
http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html
http://www.poli.org/LDP-PT/HOWTO/Serial-HOWTO/Serial-HOWTO.htmltoc14
http://venus.rdc.puc-rio.br/rmano/interfac.html
http://support.microsoft.com/default.aspx?scid=kb;en-us;823179&Product=vb6

espero ter ajudado
Ursula Sobrinho


Responder

25/08/2004

Oscar Candido

Existe um componente chamdo IOport que acessa as portas paralelas podendo ler ou escrever de forma bem simples.
Mas se vc usa o Windows XP ele não funciona bem, já ouvi dixer que tem algo a ver com a proteção que ele faz para as portas, e que existe uma forma de inibir essa proteção atraves de um software.
Espero ter ajudado


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar