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???
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
Curtir tópico
+ 0
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)