Serial com xharbour

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

Moderador: Moderadores

Rogerio Amorim
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 23 Jul 2011 17:08
Localização: Campinas/SP

Serial com xharbour

Mensagem por Rogerio Amorim »

Saudações a todos...

Recebi um desafio de criar um programa que comunique-se com um equipamento que faz exames laboratoriais.

O software terá que enviar e receber dados deste equipamento.

O problema é que nunca fiz algo do tipo e não sei nem por onde começar.

Eu peguei o manual do equipamento ao qual contém as informações de comunicação serial com o mesmo

São uns códigos em hexadecimal que não sei como usar.

O sistema esta em xharbour, e gostaria da ajuda de vocês para me indicar o "caminho das pedras".

Em minhas pesquisas vi que o pessoal costuma usar a hbcomm para leitura em balanças, seria este o caminho ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Serial com xharbour

Mensagem por Maligno »

Seja bem-vindo ao fórum. :)

Se a comunicação é serial, o melhor caminho, pelo que já pude perceber pelos comentários dos demais colegas, o melhor caminho parece ser a biblioteca que você citou.

A comunicação serial envolve poucos detalhes. Pode-se até fazer pelas funções de baixo nível da API do Windows. O que vai merecer mais atenção é conhecer o protocolo através do qual o equipamento se comunica. Você precisa aprender a "língua" do equipamento. Mas se você já tem o manual, tanto melhor. Tem que estudá-lo. Minha dica é: pegue os exemplos de códigos que envolve a HBCOMM que puder encontrar e leia a documentação da biblioteca. Aprendendo isso, o resto vai na carreira. No final das contas, você verá que nem tinha tanto com o que se preocupar. Esse tipo de trabalho costuma ser simples.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Serial com xharbour

Mensagem por fladimir »

Colega é o q o Maligno postou, vou postar aki um exemplo do código q uso pra capturar via Serial peso de balanças, vc pode usar a mesma lógica, após estudar o manual do equipamento q vc quer comunicar, para fazer sua rotina....

Código: Selecionar todos

*****************************************************************
* Fun‡Æo Ler peso balan‡a....
*****************************************************************
Function LerBalanca(nPeso,lBalanc)
Public cPesoLido := 0
   
If lBalanc==.f.
   Return .f.
Endif
	 
// Colooquei para carregar valores nas variaveis
cBalPorta      := "COM1" //cScan_Porta
nBalVelocidade := 9600   //nScan_Veloc 
nBalBits       := 8      //nScan_Bists 
nBalParidade   := 0      //nScan_Parid
nBalStopBits  	:= 1      //nScan_BStop

If nPeso > 0
   Return .t.
Endif

If Empty(cBalPorta)
   Return .t.
Endif

cPort       := cBalPorta
nBaudrate   := nBalVelocidade
nDatabits   := nBalBits
nParity     := nBalParidade
nStopbits   := nBalStopBits
nBuffersize := 1000

nHandle:= Init_Port( cPort, nBaudrate, nDatabits, nParity, nStopbits, nBuffersize )
   
If nHandle <= 0
   alert("Erro ao iniciar a porta de comunicacao !")
   Return .f.
Endif

If IsWorking( nHandle )== .F.
   Alert("Favor configurar a porta serial !")
   Return .f.
Endif
OutBufClr( nHandle )


//-- Enviar comando para iniciar a transmissao de dados para balanca MP
cBytesToWrite := Chr(5)
nCount        := 1
OutChr( nHandle, cBytesToWrite, nCount )

//-- Aguarda um tempinho
Millisec(100)
cBuff := Space(10)
nChar := InBufSize( nHandle )
nLidos:= InChr( nHandle,nChar,@cBuff )

If nLidos > 0
   cPesoLido  := Val(Substr(cBuff,2,7))
   cPesoLido  := cPesoLido //
   mQuant     := cPesoLido
   UnInt_Port( nHandle )
      
   cod:=str(mQuant)  // pra testar se retorna com o peso
   Return .t.
Endif
UnInt_Port( nHandle )
Return .f.
É issoa ai...

Sds.
Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Rogerio Amorim
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 23 Jul 2011 17:08
Localização: Campinas/SP

Serial com xharbour

Mensagem por Rogerio Amorim »

Obrigado Maligno e Fladimir

Só mais uma dúvida Maligno, quando você diz "PROTOCOLO" você está dizendo sobre o padrão de comunicação que o equipamento usa e que está explicito no manual é isto ?

Outra coisa, eu estou pesquisando sobre a hbcomm já tenho algumas coisas e tal, existe algum lugar onde eu possa baixar um manual oficial ?

Fladimir você usa a hbcomm, funciona bem ?
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Serial com xharbour

Mensagem por fladimir »

Uso funciona bem sim, conforme exposto no código q postei não tem segredo, vc tem saber os parametros q trabalha o equipamento q vc vai comunicar como velocidade, bits de parada etc, q regem uma comunicação serial e configurar conforme o equipamento.

Sds.
Sucesso!!!
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Serial com xharbour

Mensagem por ANDRIL »

Nao consigo fazer a leitura da COM atraves dessa HBCOMM.LIB. Já li e re-li, de longo tempo, já testei varios exemplos, agora tentei este codigo postado pelo colega, porem nada.
Tenho um modem na COM3 consigo obter informações sobre ele atraves da consulta ao modem no gerenciador de dispositivos do Windows, consigo acessar a porta atraves do HiperTerminal, enfim, menos com a lib. Estou usando a versao do xHarbour 1.0.0 Simplex. Já tentei mexer nos parametros da porta mesmo assim nao funciona.

Alguém tem outra alternativa a essa lib ou que saiba faze-la funcionar.
Abraços.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Serial com xharbour

Mensagem por ANDRIL »

ANDRIL escreveu:Nao consigo fazer a leitura da COM atraves dessa HBCOMM.LIB
Opa, voltando aqui para dizer que consegui, agora! O problema estava ocorrendo por causa da versao do windows vista. Agora vou começar a estudar o protocolo que tenho que seguir.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Serial com xharbour

Mensagem por sygecom »

Vale a pena também dar uma olhada nas funções do Fivewin free, na seção Download tem exemplo, procurando por comunicação com balanças.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder