Página 1 de 1
Destravar Catraca Henry.
Enviado: 12 Nov 2014 08:57
por Maurício Elias
Olá, bom dia pessoal.
Alguém sabe como Destravar essa infeliz dessa Catraca Henry

Estamos tentando em Delphi enviar o comando passado pelo "suporte" prá destravar ela, mas simplesmente não aciona. Essa maravilhosa catraca não tem um driver, nem uma DLL, tem q mandar comandos diretos na COM, uma graça.
Alguém tem alguma sugestão em HB prá comunicar diretamente na COM ? Quem sabe em HB vai...
Grato a todos.....
Destravar Catraca Henry.
Enviado: 12 Nov 2014 09:45
por Kapiaba
Destravar Catraca Henry.
Enviado: 12 Nov 2014 10:45
por Jairo Maia
Olá Mauricio,
Nunca trabalhei com catracas, mas comunicação com portas COM sim, então, mesmo em Delphi, você precisa abrir e configurar a porta antes de enviar o comando, você está setando a configuração conforme o protocolo dela?
Você precisa setar: velocidade, paridade, comprimento de dados, bits de parada e comando.
Como é o protocolo da catraca?
Destravar Catraca Henry.
Enviado: 13 Nov 2014 09:05
por Maurício Elias
Olá pessoal, bom dia.
Então, o suporte não sabe nada de programação, se faz de desentendido.
Apenas passa o comando que tem que enviar prá serial, mas não tem exemplos, driver, dll, nada.
Em Delphi, a sequencia é a seguinte:
------------------------------------------------
componente COMPORT
CODIGO NO ONACTIVE DO FORM
portacom:=´COM6´
ComPort1.Close;
ComPort1.Port:=trim(portacom);
ComPort1.BaudRate:=br115200;
ComPort1.StopBits:=sbOneStopBit;
ComPort1.DataBits:=dbEight;
ComPort1.Open;
if (ComPort1.Connected = false) // Verifica se a porta esta conectada
then begin
Application.Messagebox('Não Foi Possivel se Conectar a Porta! Verifique!','ATENÇÃO!',mb_OK+MB_ICONWARNING+MB_SYSTEMMODAL);
exit;
end;
if (ComPort1.Connected = True) // Verifica se a porta esta conectada
then begin
tempcatra:=5
vstr:='11+REON+00+1]'+'tempcatra'+'] L i b e r a d o]';
vstr:=vstr + #13#10;
ComPort1.WriteStr(vstr); // Enviando dados pela Serial
end;
--------------------------------------------------------------------------
Como seria em HB ? Já ví que seria usando COM_OPEN, COM_INIT, etc, mas não sei como fazer. No cliente é COM6, e aqui nos testes é COM2. A velocidade é 115200.
Tem como vc me ajudar amigo ?
Destravar Catraca Henry.
Enviado: 13 Nov 2014 09:43
por Kapiaba
Neste caso, o melhor a usar, é a HBCOMM.LIB do xHarbour, não é dificil.
https://pctoledo.org/forum/viewto ... omm#p82611
Pesquise mais aqui no forum sobre
HBCOMM.
abs.
Destravar Catraca Henry.
Enviado: 13 Nov 2014 14:45
por Maurício Elias
Mas funciona somente para o xharbour? Pq tô usando o HB32 que o Toledo me ensinou.
Alguém teria algum comentário sobre a rotina do Delphi postada tb? Isso tb ajudaria. Toda ajuda é bem vinda...
Destravar Catraca Henry.
Enviado: 13 Nov 2014 15:11
por Kapiaba
Não entendo de delphi, mas veja se ajuda:
Código: Selecionar todos
procedure TForm1.Button1Click(Sender: TObject);
var count2 : integer;
begin
sleep(500);
if Comport1.Connected then begin
comport1.Close;
end;
ComPort1.Port := 'COM1';
Comport1.Connected := true;
Comport1.Open;
if Comport1.Connected then begin
timer1.enabled := true;
end;
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var count2 : integer;
begin
count2 := 1024;
ComPort1.ReadStr(Str,count2);
memo1.lines.add (Str);
end;
Também não sei qual é Lib do Harbour compatível com xHarbour. Não uso Harbour.
Abs
Destravar Catraca Henry.
Enviado: 13 Nov 2014 15:16
por Kapiaba
Não parece dificil em Harbour, veja:
Código: Selecionar todos
#include "hbcom.ch"
PROCEDURE Main( cPortName )
LOCAL cString := "ATE0" + Chr( 13 ) + "ATI3" + Chr( 13 )
LOCAL nTimeOut := 3000 // 3000 miliseconds = 3 sec.
LOCAL nResult
LOCAL nPort := 1
IF !empty( cPortName )
hb_comSetDevice( nPort, cPortName )
ENDIF
IF ! hb_comOpen( nPort )
? "Cannot open port:", nPort, hb_comGetDevice( nPort ), ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? "port:", hb_comGetDevice( nPort ), "opened"
IF ! hb_comInit( nPort, 9600, "N", 8, 1 )
? "Cannot initialize port to: 9600:N:8:1", ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
nResult := hb_comSend( nPort, cString, len( cString ), nTimeOut )
IF nResult != len( cString )
? "SEND() failed,", nResult, "bytes sent in", nTimeOut / 1000, ;
"sec., expected:", len( cString ), "bytes."
? "error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? "SEND() succeeded."
ENDIF
WAIT "Press any key to begin reading..."
cString := space( 32 )
nTimeOut := 500 // 500 milliseconds = 0.5 sec.
nResult := hb_comRecv( nPort, @cString, len( cString ), nTimeOut )
IF nResult == -1
? "RECV() failed,", ;
"error: " + hb_ntos( hb_comGetError( nPort ) )
ELSE
? nResult, "bytes read in", nTimeOut / 1000, "sec."
ENDIF
ENDIF
? "CLOSE:", hb_comClose( nPort )
ENDIF
RETURN
Destravar Catraca Henry.
Enviado: 13 Nov 2014 15:18
por Kapiaba
Destravar Catraca Henry.
Enviado: 14 Nov 2014 04:45
por Jairo Maia
Olá Maurício,
Me parece que na função em Delphi que você postou acima, está faltando informar a Paridade. Não sei se o Delphi assume o padrão. Outra coisa, é que não conheço Delphi, mas a variável tempcatraca é numérica, e você está somando com string. Porém, teoricamente em Harbour + HBCT.LIB, seria algo assim:
Código: Selecionar todos
/*
Compilar usando: HBMK2 Nome_Exemplo -lhbct
*/
Function Main()
Local nComPorta := 1 // numero da porta COM sem o "COM", é numerico
Local nBaudRate := 115200
Local cParity := "N" // (E)ven, (O)dd, (M)ark, (S)pace, (N)one // verifique a paridade correta
Local nDataLength := 8 // 7 ou 8 // verifique também...
Local nStopBits := 2 // 1 ou 2 // verifique também...
Local tempcatra := "5"
Local cString := "'11+REON+00+1]'+'tempcatra'+'] L i b e r a d o]'" + Chr(13)+Chr(10)
// ou apenas:
// Local cString := "'11+REON+00+1]'+'tempcatra'+'] L i b e r a d o]'"
Clear Screen
If !Com_Open( nComPorta, 1024, 1024)
Alert( "Erro na abertura da Porta!" )
Return Nil
EndIf
Com_Init( nComPorta, nBaudRate, cParity, nDataLength, nStopBits )
Com_Send( nComPorta, cString )
Com_Close( nComPorta )
Return Nil
Destravar Catraca Henry.
Enviado: 14 Nov 2014 11:01
por Maurício Elias
Grande Jairo, bom dia.
Muito obrigado por adaptar meus dados na sua rotina. Já implementei de imediato.
Mas tb não funcionou. Apenas um aplicativo da net chamado IONINJA funciona nela.
Outros aplicativos quaisquer tb não acionam.
O Suporte não entende nada de software e a ajuda é pouca. Trouxemos a catraca aq rsrs (absurdo) e esgotamos nossas possibilidades. Vamos ver se o fabricante consegue resolver remotamente. Se der certo, vou postar a solução aq prá ninguém passar o que nós estamos passando com essa catrada HENRY.
Destravar Catraca Henry.
Enviado: 14 Nov 2014 16:53
por Toledo
Maurício, em um busca rápida pelo Google, vi muitas mensagens falando sobre uma DLL para catraca Henry:
https://www.google.com.br/#q=catraca+henry+dll
Então seria bom entrar em contato com o suporte e ver se realmente existe alguma DLL.
Abraços,