Destravar Catraca Henry.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Destravar Catraca Henry.

Mensagem 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.....
Abraços.
_______
Maurício
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Destravar Catraca Henry.

Mensagem por Kapiaba »

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Destravar Catraca Henry.

Mensagem 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?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Destravar Catraca Henry.

Mensagem 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 ?
Abraços.
_______
Maurício
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Destravar Catraca Henry.

Mensagem 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.
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Destravar Catraca Henry.

Mensagem 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...
Abraços.
_______
Maurício
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Destravar Catraca Henry.

Mensagem 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
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Destravar Catraca Henry.

Mensagem 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
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Destravar Catraca Henry.

Mensagem por Kapiaba »

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Destravar Catraca Henry.

Mensagem 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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Destravar Catraca Henry.

Mensagem 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.
Abraços.
_______
Maurício
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Destravar Catraca Henry.

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder